2011-06-11 83 views
8

以下脚本获取所有带有.new_tmp扩展名的文件,并将它们复制到具有相同名称但没有.new_tmp扩展名的文件。另外,评论放置在文件的顶部,并且.new_tmp文件被删除。箭头→将字符附加到.bat脚本中的文件

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

其中的箭头人物,►或→或别的东西吗? – 2011-06-11 04:09:08

+0

第二个箭头→ – jax 2011-06-11 04:14:54

+0

可能是您的编辑显示了EOF标记。如果你只是在命令行上做'更多文件名',你会发现它吗? – 2011-06-11 04:41:09

回答

19
运行

箭头是一个CTRL-Z ascii字符,当用于将文件与+选项连接时,COPY命令附加了该字符。

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

所以,你的命令是

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

谢谢!在我的SSIS包中搜索了为什么有那么奇怪的箭头字符(EOF)。我发现它是由于复制FileA + FileB FileA(要并置)。一个重要的注意事项:我有copy/b参数[in (复制/ B) – Simon 2017-11-09 13:57:54

+0

奇怪的是它仍然留在ASCII 1AH字符之间,与此相反,在语句工作结尾附加'/ B' – Arthur 2018-02-14 21:34:36

1

当/ b紧随目的地,副本不添加结束文件的字符。

这是我会怎么解决这个问题:

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

像广告一样工作,谢谢! – Arthur 2018-02-14 21:32:37

相关问题