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

jax*_*jax 11 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
)
Run Code Online (Sandbox Code Playgroud)

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

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

更新我尝试了一个更简单的例子,得到了相同的结果

copy NUL worker.tmp
copy worker.tmp + license.txt + license.txt + license.txt
Run Code Online (Sandbox Code Playgroud)

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

我在Windows 7下运行

PA.*_*PA. 25

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

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

所以,你的命令就是

COPY /B start.tmp+license.txt+end.tmp+%%I worker.tmp
Run Code Online (Sandbox Code Playgroud)