Batch file 批处理变量删除换行符
结果:Batch file 批处理变量删除换行符,batch-file,cmd,windows-10,Batch File,Cmd,Windows 10,结果: setlocal enabledelayedexpansion ... a lot of batch script ... IF ... a lot of batch script ... for /f "skip=2 delims== tokens=2" %%g in ('WMIC DATAFILE WHERE ^"Name^='!filePath!'^" GET Version /value') DO ( set fileVersion=%%g ) ECHO V
setlocal enabledelayedexpansion
... a lot of batch script ...
IF ... a lot of batch script ...
for /f "skip=2 delims== tokens=2" %%g in ('WMIC DATAFILE WHERE ^"Name^='!filePath!'^" GET Version /value') DO (
set fileVersion=%%g
)
ECHO Version: !fileVersion!
set nightlyBuildFullPath=%2\Setups\Nightly Builds\!fileVersion!\Full\
ECHO FullPath: !nightlyBuildFullPath!
我想删除fileVersion变量中的换行符,因为我必须构建一个供以后使用的路径。如果我真的构建了路径字符串,我在其中有一个换行符,这会破坏我的路径
Version: 1.5.1810.202
FullPath: C:\test\Setups\Nightly Builds\1.5.1810.202
\Full\
可能有助于您的调查…尝试以下方法:
ECHO Version: "%fileVersion:~0,-1%"
将以下行放入名为veronly.ps1的文件中。将文件名更改为要检查的文件名
for /f "skip=2 delims== tokens=2" %%g in ('WMIC DATAFILE WHERE ^"Name^='!filePath!'^" GET Version /value') DO (
for /f "tokens=* delims=" %%# in ("%%g") do set "fileVersion=%%#"
)
将以下内容放入.bat脚本文件中
Get-WmiObject -Class 'CIM_DataFile' -Filter "name='C:\\Program Files (x86)\\PuTTY\\psftp.exe'" | % { $_.Version }
这一次,这实际上不是
cmd
或批处理脚本的错误WMIC
在其输出中放入奇怪的行尾字符。WMIC输出以字符0d0d0a
(十六进制)结尾的行,而不是通常的0d0a
。因此,fileVersion
将包含一个额外的0D
,您需要使用此答案删除它。@Magoo感谢您的回答。这对我很有帮助,而且现在很有效。
FOR /F %%v IN ('powershell -NoLogo -NoProfile -File .\veronly.ps1') DO (SET "THEVERSION=%%v")
ECHO %THEVERSION%