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