Solved

batch file sytax question

Posted on 2013-11-19
5
619 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 68

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 68

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

Top 6 Sources for Identifying Threat Actor TTPs

Understanding your enemy is essential. These six sources will help you identify the most popular threat actor tactics, techniques, and procedures (TTPs).

Join & Write a Comment

This comprehensive conference-networking guide will help you prep, practice and pack for success, reach out with purpose and confidence, capitalize on connections, and turn all those new leads into long-term connections.
Active Directory replication delay is the cause to many problems.  Here is a super easy script to force Active Directory replication to all sites with by using an elevated PowerShell command prompt, and a tool to verify your changes.
Learn the basics of strings in Python: declaration, operations, indices, and slicing. Strings are declared with quotations; for example: s = "string": Strings are immutable.: Strings may be concatenated or multiplied using the addition and multiplic…
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…

747 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

Need Help in Real-Time?

Connect with top rated Experts

16 Experts available now in Live!

Get 1:1 Help Now