1
我是一名Perl程序員,但我需要爲特定任務執行Windows批處理文件。使用Windows批處理文件,如何解析文件並將其輸出到一個文件,然後輸出到另一個文件?
該腳本需要逐行讀取輸入文件,並複製到輸出文件。無論如何,它需要切換輸出文件。
對於閱讀輸入文件並輸出到一般文件,傑佈下面的文章中的解決方案似乎工作得最好。 (當輸入數據有奇怪的字符或長行時,其他解決方案不能很好地工作)Batch files: How to read a file?
但是我不能讓它工作在我更改輸出文件的途中。問題可能與DelayedExpansion的工作方式有關。
當我運行以下腳本時,outfile最後仍然是a.txt,並且未設置new_variable。
@echo off
del /f/q a.txt
del /f/q b.txt
del /f/q c.txt
del /f/q out.txt
set outfile=a.txt
SETLOCAL DisableDelayedExpansion
FOR /F "usebackq delims=" %%a in (`"findstr /n ^^ in.txt"`) do (
set "var=%%a"
SETLOCAL EnableDelayedExpansion
set "var=!var:*:=!"
IF "!%var!" == "/************************** PLUGINS SECTION *************************/" (
set outfile=b.txt
set new_variable=this
echo "FOUND! Value of outfile should change to b.txt"
)
echo(!outfile! !var! >>!outfile!
ENDLOCAL
)
echo Outfile: %outfile%
echo New Variable: %new_variable%