【问题标题】:Using wildard with DOS COPY command corrupts destination file在 DOS COPY 命令中使用通配符会损坏目标文件
【发布时间】:2013-02-05 09:42:20
【问题描述】:

我不理解使用通配符时 COPY 命令的行为。

我在C:\Source 中有一个名为mpt*.asm 的文本文件,我想将它复制到C:\Dest。这是批处理脚本所需要的,我不能确定mpt*.asm 的确切名称(例如,它可能是mpt001.asm)。目标名称应该完全是 mpt.asm。

如果我使用:

COPY C:\Source\mpt*.asm C:\Dest\mpt.asm

文件文件被复制,但在文件末尾附加了一个额外的 (0x1A) 字符。

如果我使用:

COPY C:\Source\mpt*.asm C:\Dest\mpt.asm /B

我不明白这个虚假的字符。

如果我不使用通配符,我也不会得到虚假字符。 COPY 中似乎不太可能存在错误,但这种行为似乎出乎意料。

有没有办法在不使用/B 的情况下进行复制?

【问题讨论】:

    标签: copy dos wildcard


    【解决方案1】:

    我以前从未见过,但它也为我附加了一个额外的箭头字符。

    您可以改用xcopy 来解决此问题。

    echo f| xcopy C:\Source\mpt*.asm C:\Dest\mpt.asm
    

    如果您阅读 copy /? 它会说

    要附加文件,请指定单个文件作为目标,但指定多个文件 用于源(使用通配符或 file1+file2+file3 格式)。

    因此,通过使用单个文件名作为 dest,并在源中使用通配符,它​​可能会将其解释为附加,这可能是额外字符的用途,但因为您没有附加任何可以看到的内容它。

    我只是猜测,但这可以解释它。

    【讨论】:

    • 你说得对,这是因为copy 在附加模式下工作。额外的1A字符来自DOS;它曾经是在文本文件上标记 EOF 所必需的。 /B 指定避免该问题的二进制文件。 tech-archive.net/Archive/Win2000/…
    猜你喜欢
    • 2011-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多