所以我有以下函数来记录脚本中的一些信息:
: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
在我通过a)之前它很有效。这似乎正在关闭我的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:)= ^)%进行字符串替换,但也没有任何运气去那条路线。如何正确转义变量中的括号?
答案 0 :(得分:1)
这是一个测试蝙蝠,展示你如何用paren显示一个paren或一个字符串。
@echo off
setlocal enabledelayedexpansion
set _test_=%2
if %1==0 (
echo %1
echo "%2"
echo %3
echo !_test_!
)
运行此:
paren.bat 0 ) test
输出结果为:
0
")"
test
)
你可能没想到的是这个:
paren.bat ) ) test
结果:
")"
test
)
我认为Squashman正在设置var并使用它。参数中的Parens有点不可预测。