Solved

batch file sytax question

Posted on 2013-11-19
5
628 Views
Last Modified: 2013-11-19
I'm trying to get a string returned into a variable in WIndows batch by using SET.
The command I'm running is:
for /f %i in (22NRmeta.txt) do symaccess -sid 22 list -type stor -dev %i -v | set %m = (findstr "Masking View Names") | echo %i % m >> 22PerDEV_ViewCount.txt

The issue is this: variable %m is returned to console as "%m" and not the result of findstr "Masking View Names")

Sample result returned to file below:
0BEC % m
0BF5 % m
0BFE % m
0C07 % m
0C10 % m

How do I get the result of findstr to echo to the file? Thanks folks!!
0
Comment
Question by:SaffronThePuppy
  • 2
  • 2
5 Comments
 
LVL 9

Expert Comment

by:WebDevEM
ID: 39660009
Hi,

Just a quick thought on this one... If your command above is a copy/paste of the BAT file, the answer might be as simple as removing the space between % and m in the echo command, like so:
for /f %i in (22NRmeta.txt) do symaccess -sid 22 list -type stor -dev %i -v | set %m = (findstr "Masking View Names") | echo %i %m >> 22PerDEV_ViewCount.txt

Open in new window

0
 
LVL 69

Accepted Solution

by:
Qlemo earned 500 total points
ID: 39660035
No, that doesn't work that way at all. You can't use the output of other commands directly to set a var, you'll need another FOR /F:
for /f "tokens=*" %i in (22NRmeta.txt) do ^
for /F "tokens=*" %L in ('symaccess -sid 22 list -type stor -dev %i -v ^| findstr "Masking View Names" ') do ^
echo,%i %L >> 22PerDEV_ViewCount.txt

Open in new window

Though it would be much better write to the file only once (much faster):
(for /f "tokens=*" %i in (22NRmeta.txt) do ^
for /F "tokens=*" %L in ('symaccess -sid 22 list -type stor -dev %i -v ^| findstr "Masking View Names" ') do ^
echo,%i %L ) > 22PerDEV_ViewCount.txt

Open in new window

And of course you'll need to use %% instead of % if you run that in a batch file instead of the (interactive) command prompt.
0
 
LVL 9

Expert Comment

by:WebDevEM
ID: 39660045
@Qlemo - Thanks for chiming in on this one... I'm on a Mac now so I don't have access to experiment with it.  Looks like Saffron's in good hands.
0
 
LVL 69

Expert Comment

by:Qlemo
ID: 39660073
Since you have also included PowerShell in your tags:
foreach ($i in Get-Content 22NRmeta.txt) {
  symaccess -sid 22 -list -type stor -dev $i -v |
    select-string 'Masking View Names' | % {
      write-output $i $_
   }
}

Open in new window

0
 

Author Closing Comment

by:SaffronThePuppy
ID: 39660119
Awesome and thanks! I will play with the powershell also. Appreciated!
0

Featured Post

PRTG Network Monitor: Intuitive Network Monitoring

Network Monitoring is essential to ensure that computer systems and network devices are running. Use PRTG to monitor LANs, servers, websites, applications and devices, bandwidth, virtual environments, remote systems, IoT, and many more. PRTG is easy to set up & use.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Learn how ViaSat reduced average response times for IT incidents from 10 minutes to 30 seconds.
There's a better way to communicate time sensitive or critical info.
Learn how to match and substitute tagged data using PHP regular expressions. Demonstrated on Windows 7, but also applies to other operating systems. Demonstrated technique applies to PHP (all versions) and Firefox, but very similar techniques will w…
In this fourth video of the Xpdf series, we discuss and demonstrate the PDFinfo utility, which retrieves the contents of a PDF's Info Dictionary, as well as some other information, including the page count. We show how to isolate the page count in a…

785 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question