• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 647
  • Last Modified:

batch file sytax question

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
SaffronThePuppy
Asked:
SaffronThePuppy
  • 2
  • 2
1 Solution
 
WebDevEMCommented:
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
 
QlemoC++ DeveloperCommented:
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
 
WebDevEMCommented:
@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
 
QlemoC++ DeveloperCommented:
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
 
SaffronThePuppyAuthor Commented:
Awesome and thanks! I will play with the powershell also. Appreciated!
0

Featured Post

Evaluating UTMs? Here's what you need to know!

Evaluating a UTM appliance and vendor can prove to be an overwhelming exercise.  How can you make sure that you're getting the security that your organization needs without breaking the bank? Check out our UTM Buyer's Guide for more information on what you should be looking for!

  • 2
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now