开发者

Remove an 'Equals' symbol from text string

开发者 https://www.devze.com 2023-01-17 19:12 出处:网络
I\'m running a WMIC lookup against a series of remote client machines, pulling in Model and serial number.

I'm running a WMIC lookup against a series of remote client machines, pulling in Model and serial number.

For /F "tokens=*" %%b in ('wmic /node:%device% computersystem get Model /value^|find "Model"') do Set model=%%b

FOR /F "tokens=*" %%c in ('wmic /node:%device% bios GET serialnumber /value^|find "SerialNumber=" ') do set Serialnumber=%%c

The problem I hav开发者_Python百科e is that (for example) %serialnumber% is set to:SerialNumber=CNU8424GP3

I don't want the 'Serialnumber=', I just want the Serial number itself.

The only way I've found of stripping this is:

set SerialNumber=!serialnumber:SerialNumber=!

but this leaves an equals sign at the beginning of the line. So the final output is =CNUBFZXXY, what I would like to do is to remove the leading =, and I haven't been able to.

Any Suggestions?


Add delims== to your for statements and change tokens=* to tokens=1-2. The values you want will then be in the second for loop variables:

For /F "delims== tokens=1-2" %%b in ('wmic /node:%device% computersystem get Model /value^|find "Model"') do set model=%%c
For /F "delims== tokens=1-2" %%c in ('wmic /node:%device% bios GET serialnumber /value^|find "SerialNumber=" ') do set Serialnumber=%%d


Either split up the result using a for-statement with "delims==" (already answered), or trim up to and including the equal-sign – your example code was very close already:

set SerialNumber=!SerialNumber:SerialNumber=!
set SerialNumber=!SerialNumber:~1!


The snippet below will allow you to remove the first and last character. I've played a trick here and added a matching '=' at the end of the string (NOTE: I could have used any character). I couldn't find a way to get up to the last character, so the trick is to just add on any character at the end of the variable and then strip it with the 1,-1 which means skip the first charcter and the negative value for the right side means 'counting back from the right'.

set serialnumber=%serialnumber%=
set serialnumber=%serialnumber:1-1%

Hope this helps people looking to hack DOS batch scripts in the future. A good short description of string manipulation can be found here: DOS String Manipulation


It is possible to retrieve specific characters from a string variable.

Syntax %variable:~num_chars_to_skip% %variable:~num_chars_to_skip,num_chars_to_keep%

This can include negative numbers:

  %variable:~num_chars_to_skip, -num_chars_to_skip%
  %variable:~-num_chars_to_skip,num_chars_to_keep%

Example

 SET _test=012345
 SET _result=%_test:~1,6%
 ECHO %_result%          =12345


Just do this instead it's much easier. USE QUOTATION MARKS AROUND BOTH VARIABLE AND STRING on the IF statement

IF "%VARIABLE%"=="equalsign=123456" goto Z

:Z

SET VARIABLE=%VARIABLE:~10%

echo %VARIABLE%

The output should be 123456. No equal sign.

That should do it. Seriously, that was really making me go nuts trying to figure that out. Someone else recently helped me with that. Never thought it would be so easy lol.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号