www.webdeveloper.com
Results 1 to 5 of 5

Thread: DOS/Batch File 2

Hybrid View

  1. #1
    Join Date
    Sep 2005
    Posts
    31

    Question DOS/Batch File 2

    Hello my trusty WebDeveloper family!

    I have yet another Batch file scenario to present to ya if someone would be kind enough to assist me.

    The following is only an extraction of a larger, master bat file (it's also a dummy mock-up so excuse the crazy "echo"'s):

    Code:
    @echo off
    title Server WMIC
    :redoo
    cls
    set "storee=c1000"
    set "test1="
    REM FULLL WMIC BELOW
    rem wmic /node:%store1% csproduct get Vendor,Name,IdentifyingNumber /format:list
    echo.
    echo.
    for /f "tokens=1,2,3" %%A in ('wmic /node:C1000 csproduct get IdentifyingNumber /format:list ^| find="="') do set test1=%%A %%B
    echo.%test1%
     
    rem pause >nul 2>nul
    ping -n 10 127.0.0.1 >nul 2>nul
     
    :endd
    echo.
    echo.
    echo.
    echo.
    echo.
    echo.Closing application. . .
    ping -n 10 127.0.0.1>nul
    I know those more skilled than I already know what the above does but I like to describe it anyway lol.

    It populates the IdentifyingNumber from a server named "C1000". I will reciprocate the same thing to "vendor" and "name" from WMIC if this works but IdentifyingNumber is most imperative.
    I would like to convert the returned string name "IdentifyingNumber" into the string name "SerialNumber" (or "Serial#" if the hash/pound symbol is allowed).

    However, I cannot seem to come up with the code to do such. I tried in a different test batch file to do an "if exists" clause but i cannot separate the "text=text" from the string even if i do several %%A %%B %%C (because "identifyingnumber=123456" is all one string).

    Since my IF statements aren't that great I yet know if you can do wildcards in a statement like "If test1 =="*" (set test2=SerialNumber)..." I've tried If "test1=", if "test1 like blah" but apparently batch doesn't work like SQL. lol

    I cannot find a good online resource (outside of webdeveloper) that teaches the "==" and other operators else I'd prob have learned a resolve.


    I hope this made sense and if it didn't I will gladly clarify. I am just flat out of ideas on how to achieve this result, if it is even possible. If the desired resolve is not possible I do apologize for the inconvenience.

    Thanks,

    Andrew
    Last edited by lordofdavipers; 10-02-2012 at 10:20 PM.

  2. #2
    Join Date
    Sep 2005
    Posts
    31
    Can someone please assist me? I would really appreciate it.

  3. #3
    Join Date
    Sep 2005
    Posts
    31
    Follow up. Can someone please help me out? I'm sorry to continue to bother WD forum but nobody has reviewed this.

  4. #4
    Join Date
    Sep 2006
    Location
    England
    Posts
    29
    I can't quite work out exactly what it is you're trying to do.
    Do you want the test1 variable to contain the string "Serial#=123456" instead of "IdentifyingNumber=123456", or are you trying to create a variable named "SerialNumber" that stores the value "123456"?

    If it's the former, how about this

    Code:
    @echo off
    setlocal
    
    set node=C1000
    
    for /f "tokens=2 delims==" %%a in ('wmic /node:"%node%" csproduct get IdentifyingNumber /format:list ^| find "="') do set test1=Serial#=%%a
    
    echo %test1%
    
    endlocal
    ... or if it's the latter

    Code:
    @echo off
    setlocal enabledelayedexpansion
    
    set node=C1000
    
    for /f "tokens=1,2 delims==" %%a in ('wmic /node:"%node%" csproduct get Vendor^,Name^,IdentifyingNumber /format:list ^| find "="') do set !%%a=%%b
    
    echo Name = %Name%
    echo SerialNumber = %IdentifyingNumber%
    echo Vendor = %Vendor%
    
    endlocal
    If you need the variable to be named SerialNumber instead of IdentifyingNumber you could perhaps handle that case specifically

    Code:
    for /f "tokens=1,2 delims==" %%a in ('wmic /node:"%node%" csproduct get Vendor^,Name^,IdentifyingNumber /format:list ^| find "="') do (
            if /i %%a==IdentifyingNumber ( set SerialNumber=%%b ) else ( set !%%a=%%b )
    )

  5. #5
    Join Date
    Sep 2005
    Posts
    31
    I think you nailed it right on, Tom! Thank you very much. I tested it in a dev batch file and then put it in my main production batch file and it works flawlessly!

    I understand now how to address this need using dos batch scripts but I simply couldn't put the logic together originally. I didn't know that you could make the output with this specific of a script output as variable=something+%variable2% rather than the plain variable=%variable2%.

    I have quoted this topic (and thus you) in my production file and thank you again for your detailed assistance.

    God bless,

    Andrew

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
HTML5 Development Center



Recent Articles