嗨我有一個腳本,我使用this頁面上的信息。如何運行聯合findstr腳本
我意識到,運行兩個單獨的批處理文件(:SetVar
和:Brains
)將工作,但是當我嘗試將兩者合併爲一個時它不起作用。
如果有人能向我解釋爲什麼我的不工作,並告訴我我能做些什麼來開展工作,我會很高興。
:SetVar
Brains "Hello" "Goodbye" "input.txt" > "newfile.txt"
GOTO :Brains
:Brains
SETLOCAL ENABLEEXTENSIONS
SETLOCAL DISABLEDELAYEDEXPANSION
if "%~1"=="" findstr "^::" "%~f0"&GOTO:EOF
for /f "tokens=1,* delims=]" %%A in ('"type %3|find /n /v """') do (
set "line=%%B"
if defined line (
call set "line=echo.%%line:%~1=%~2%%"
for /f "delims=" %%X in ('"echo."%%line%%""') do %%~X
) ELSE echo.
)
PAUSE
當我使用call命令:
call :SetVar
call :Brains
goto :eof
pause
:SetVar
:Brains "Hello" "Goodbye" "input.txt" > "newfile.txt"
goto :eof
:Brains
SETLOCAL ENABLEEXTENSIONS
SETLOCAL DISABLEDELAYEDEXPANSION
if "%~1"=="" findstr "^::" "%~f0"&GOTO:EOF
for /f "tokens=1,* delims=]" %%A in ('"type %3|find /n /v """') do (
set "line=%%B"
if defined line (
call set "line=echo.%%line:%~1=%~2%%"
for /f "delims=" %%X in ('"echo."%%line%%""') do %%~X
) ELSE echo.
)
goto :eof
我沒有錯誤,但我得到:
C:\Users\MALKAVIAN\Batch files\change words in file>CALL :SetVar
C:\Users\MALKAVIAN\Batch files\change words in file>goto :eof
C:\Users\MALKAVIAN\Batch files\change words in file>CALL :Brains
C:\Users\MALKAVIAN\Batch files\change words in file>goto :eof
C:\Users\MALKAVIAN\Batch files\change words in file>pause
Press any key to continue . . .
什麼具體「不起作用」? – geisterfurz007
@ geisterfurz007 - 我想運行這兩個腳本(在一個'.bat'文件中而不是兩個),並具有相同的效果。 – MALKAVIAN
我明白那個部分,但錯誤的效果是什麼樣子?程序是不會做什麼的,它會帶來錯誤的結果/與其他版本不同。順便說一句,我很好奇第二行應該做什麼。我沒有真正進入批處理,所以這可能是一個愚蠢的問題......您可以嘗試在第二行前面撥打電話(而不是'GOTO',但上面的行) – geisterfurz007