我正在編寫一個函數來執行shell命令並在批處理腳本中捕獲其輸出。在函數調用窗口中轉義PIPE字符批處理腳本
:runShellCmd
setlocal EnableDelayedExpansion
SET lf=-
FOR /F "delims=" %%i IN ('%~1') DO if "%out%" == "" (set out=%%i) else (set out=!out!%lf%%%i)
echo "Cmd output: %out%"
SET "funOut=%out%"
ENDLOCAL & IF "%~1" NEQ "" SET %~2=%out%
goto :EOF
我已經成功地通過簡單的命令並獲得輸出。但對於像
CALL :runShellCmd "echo Jatin Kumar | find /c /i "jatin""
的呼叫,則會失敗,並顯示錯誤unexpected | character
。
我知道我們需要逃避|
與^
在,但如果我嘗試通過^|
在功能參數字符串,它它改變^^|
再次拋出錯誤。
我錯過了什麼嗎?
正如你所提到的那樣,正是'^'的問題。我試圖使用'%caret%',但'%% caret %%'做了訣竅。謝謝!! –