试试这个:
echo Test > a1.txt
copy a1.txt b.txt
copy a?.txt c.txt
文件c.txt将比b.txt大1个字节。那是为什么?
解决方法:
for %i in (a?.txt) do copy %i d.txt
d.txt将具有正确的大小。
答案 0 :(得分:2)
copy /B a?.txt c.txt
似乎有效。 B用于二进制,因此不会添加文件结尾字符。
答案 1 :(得分:1)
由于通配符?
(即使只有一个匹配文件)和单个目标文件(使copy
附加源文件),您提供了多个源文件。在此模式下,copy
将源文件和目标文件视为ASCII文本文件(就像您将给定/A
开关一样),因此它将附加文件尾(EOF)字符(代码dec。26 dec。= 0x1A hex。),并在(第一个)EOF字符处截断每个源文件。添加/B
开关可以防止:
copy /B a?.txt c.txt
由于开关/A
和/B
的位置很重要,因此您可以:
定义在第一个文件规范之前提供开关时全局处理文件的方式:
rem // Treat all files as binary ones:
copy /B a.txt + b.txt c.txt
分别更改方式:
rem /* Treat `a.txt` as ASCII text file (default for multiple sources),
rem then treat `b.txt` and `c.txt` as binary files: */
copy a.txt + b.txt /B c.txt