与&符号的批处理文件问题在输入记录中

时间:2010-07-15 17:59:23

标签: cmd batch-file

我正在创建一个批处理文件来处理输入记录的文件。我已经删除了大部分代码,所以这就是问题所在。当它读取第3条记录时,使用&符号,作业不会写入输出记录,除非我在%%H变量周围加上双引号。但是,当我这样做时,它会将"添加到记录的第一个和最后一个字节。我想基本上复制记录,我也在做其他处理。

有没有办法可以从正面和背面剥去“附加物”,或者ECHO是否有办法处理&符号?谢谢!

输入文件有三条记录:

HOW NOW BROWN COW
JACK AND JILL
JUST YOU & ME

脚本如下:

set infile=D:\file.txt
set outfile=D:\outfile.txt

for /F "tokens=*" %%H in (%infile%) do (CALL :Loop "%%H")

rem for /F "tokens=*" %%H in (%infile%) do (CALL :Loop %%H)

GOTO :Loop_Exit

:Loop
    echo %* >> %outfile%
:Loop_Exit
pause

2 个答案:

答案 0 :(得分:0)

您可以使用variable substring operators修剪第一个和最后一个字符,即引号。

因此,如果VAR="Quoted String",那么命令echo %VAR:~1,-1%将不会显示引号。

答案 1 :(得分:0)

在这里,您可以通过%〜运算符删除引号:

@echo off

set infile=e:\file.txt
set outfile=e:\outfile.txt

for /F "tokens=*" %%H in (%infile%) do (
    call :Loop "%%H"
)

exit /b 0

:Loop
    for %%a in (%*) do echo %%~a >> %outfile%
exit /b 0

输出:

E:\>foo2

E:\>type outfile.txt
HOW NOW BROWN COW
JACK AND JILL
JUST YOU & ME