箭头→字符附加到.bat脚本中的文件

时间:2011-06-11 04:01:13

标签: batch-file

以下脚本获取扩展名为.new_tmp的所有文件,并将它们复制到具有相同名称但没有.new_tmp扩展名的文件中。另外,注释放在文件的顶部,并删除.new_tmp文件。

echo ^<?php /* > start.tmp
echo */ ?^> > end.tmp
for /R "./mydir" %%I in (*.new_tmp) do (
    copy start.tmp+license.txt+end.tmp+%%I worker.tmp
    move worker.tmp %%~pI%%~nI
    del %%I
)

问题是右侧箭头→会附加到所有文件的底部

为什么这个字符会附加到所有文件的末尾?

UPDATE 我用一个更简单的例子尝试了这个并得到了相同的结果

copy NUL worker.tmp
copy worker.tmp + license.txt + license.txt + license.txt

同样的问题,最后一个箭头......

我在Windows 7下运行

2 个答案:

答案 0 :(得分:23)

箭头是CTRL-Z ascii char,当用于使用COPY选项连接文件时,+命令附加。

要防止COPY附加CTRL-Z字符,请使用COPY /B作为二进制副本。

所以,你的命令将是

COPY /B start.tmp+license.txt+end.tmp+%%I worker.tmp

答案 1 :(得分:1)

当/ b跟随Destination时,复制不会添加文件结束字符。

这就是我解决问题的方法:

COPY start.tmp+license.txt+end.tmp+%%I worker.tmp /B