批处理文件重定向到文本文件无法在for循环

时间:2018-03-27 22:45:31

标签: batch-file

REM timestamped name of file 
set PREFIX=LINE_
set SAVESTAMP=%PREFIX%%DATE:/=-%_%TIME::=-%
set SAVESTAMP=%SAVESTAMP: =%
set SAVESTAMP=%SAVESTAMP:,=.%.txt
echo %SAVESTAMP%

REM In H.txt, for each line grab the text after delimiter ':' and send it to file 
for /f "tokens=2 delims=:" %%a in ('type D.txt^|find ":"') do (
    set line=%%a   
    REM#1
    echo %line% >> %SAVESTAMP%
)

REM#2
REM echo %line% >> %SAVESTAMP%   ---This output one line   

当我使用REM#1并在echo循环之外注释第二个for时,没有创建文件。

但是当我使用REM#2并且不使用REM#1 echo时,会创建一行文件。
大多数情况下,文件会写入多行。

所以我希望这在for循环中工作。

D.txt

line1:sample1

line2:sample2

line3:sample3

line4:sample4

输出应该是: 的 Line_Date_TimeStamp.txt

sample1

sample2

sample3

sample4

1 个答案:

答案 0 :(得分:0)

两个问题:

首先,rem和文本之间必须有一个分隔符(如空格),否则会尝试查找并执行名为rem#1.(bat,exe etc.)的可执行文件。

其次,当您试图显示在delayed expansion块中正在修改的变量(line)的值时,您需要搜索SO for