Windows“复制”使用占位符向输出文件添加 1 个字节
试试这个:
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 将具有正确的大小。
Try this:
echo Test > a1.txt
copy a1.txt b.txt
copy a?.txt c.txt
File c.txt will be 1 byte larger that b.txt. Why is that?
Workaround:
for %i in (a?.txt) do copy %i d.txt
d.txt will have the correct size.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
由于通配符
?
(即使只有一个匹配文件)和一个目标文件,您提供了多个源文件,这允许copy
附加源文件。在此模式下,copy
将源文件和目标文件视为 ASCII 文本文件(就好像您已给出/A
开关一样),因此它会附加结尾 -文件 (EOF) 字符(代码 26 十进制 = 0x1A 十六进制)并在(第一个)EOF 字符处截断每个源文件。添加/B
开关可以防止:考虑到开关
/A
和/B
的位置很重要,因此您可以:在第一个文件规范之前提供开关时,定义如何全局处理文件的方式:
单独更改方式:
You have provided multiple source files due to wild-card
?
(even if there is only one matching file) and a singe destination file, which letscopy
append the source files. In this mode,copy
treats the source and destination files as ASCII text files (as if you would have given the/A
switch), so it appends the end-of-file (EOF) character (code 26 dec. = 0x1A hex.) and truncates every source file at the (first) EOF character. Adding the/B
switch prevents that:Regard that the position of the switches
/A
and/B
matters, so you can:define the way how to treat the files globally, when providing the switches before the first file specification:
alter the way individually:
copy /B a?.txt c.txt
似乎有效。 B 代表二进制,因此不添加文件结束符。copy /B a?.txt c.txt
seems to work. B is for binary, so no end of file character is added.