1
所以我有下面的函数来记录一些信息的脚本:批处理文件逃逸括号传递给函数
:Log <Message> <Verbosity>
::%1 - string to log
::%2 - verbosity level for string
ECHO:%~1
IF "%verbosity%" GEQ "%~2" (
ECHO:%DATE:~4,2%/%DATE:~7,2%/%DATE:~10,4% %TIME:~0,2%:%TIME:~3,2%:%TIME:~6,2% - %me% - %~1 >> "%logFile%"
)
ECHO:%DATE:~4,2%/%DATE:~7,2%/%DATE:~10,4% %TIME:~0,2%:%TIME:~3,2%:%TIME:~6,2% - %me% - %~1 >> "%debuglogFile%"
Exit /B 0
,直到我通过)到它,它的伟大工程。这似乎是关闭我的if语句。
E:\Resources>CALL :Log "Found checkinstall:!value! in E:\Configs\DASABCIP.ini." 3
E:\Resources>ECHO:Found checkinstall:C:\Program Files (x86)\Wonderware\DAServer\DASABCIP\Bin\DASABCIP.exe in E:\Configs\DASABCIP.ini.
Found checkinstall:C:\Program Files (x86)\Wonderware\DAServer\DASABCIP\Bin\DASABCIP.exe in E:\Configs\DASABCIP.ini.
\Wonderware\DAServer\DASABCIP\Bin\DASABCIP.exe was unexpected at this time.
E:\Resources>ECHO:09/25/2017 16:31:15 - WorkerScript - Found checkinstall:C:\Program Files (x86)\Wonderware\DAServer\DASABCIP\Bin\DASABCIP.exe in E:\Configs\DASABCIP.ini. >> "E:\Log.txt"
我已经尝试使用延迟扩展如前所述here,但我无法弄清楚如何做到这一点与%1变量。 尝试!1!时,它们只会以空字符串结尾。 我也尝试使用message =%1:)= ^)%做一个字符串替换,但是没有任何运气去那条路线。我如何正确地在变量中隐藏括号?
你尝试:'ECHO“%〜1”' – Squashman
您只能使用环境变量延迟扩展。您不能将它与命令行参数或FOR变量一起使用。所以你可以将命令行参数分配给一个环境变量。启用延迟扩展。然后通过在感叹号中包围变量名称来使用具有延迟扩展的变量。 – Squashman
'(x86)'中的右括号关闭了'IF'。您可以通过删除“IF”括号来修复它,因为它们不是必需的。 'IF%详细率%GEQ%〜2 ECHO:%日期:〜4,2%/%日期:〜7,2%/%日期:〜10,4%%时间:〜,2%:%TIME:〜3 ,2%:%TIME:〜6.2% - %me% - %〜1 >>“%logFile%”'。 – Compo