【发布时间】:2012-07-10 18:22:03
【问题描述】:
我是一名 Perl 程序员,但我需要为特定任务创建一个 Windows 批处理文件。
脚本需要逐行读取输入文件,并复制到输出文件。但是中途需要切换输出文件。
一般来说,对于读取输入文件并输出到文件,Jeb 的以下文章中的解决方案似乎效果最好。 (当输入数据有奇怪的字符或长行时,其他解决方案效果不佳)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%
【问题讨论】:
标签: batch-file