我是一名 Perl 程序员,但我需要为特定任务创建一个 Windows 批处理文件。
该脚本需要逐行读取输入文件,并复制到输出文件。然而,在完成的过程中,它需要切换输出文件。
对于通常读取输入文件并输出到文件,Jeb 的以下文章中的解决方案似乎效果最好。(当输入数据有奇怪的字符或长行时,其他解决方案效果不佳)批处理文件:如何读取文件?
但是,在中途更改输出文件的情况下,我无法让它工作。问题可能与 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%