以下脚本获取扩展名为.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下运行
答案 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