【问题标题】:Why is this batch file producing extra, unexpected, unwanted characters?为什么这个批处理文件会产生额外的、意外的、不需要的字符?
【发布时间】:2010-10-25 14:04:14
【问题描述】:

我正在尝试使用以下批处理脚本将一些文件连接在一起:

copy NUL bin\translate.js
for %%f in (source\Libraries\sprintf.js, source\translate-namespace.js, source\util.js, source\translator.js, source\translate.js) do (
    type %%f >> bin\translate.js
    echo. >> bin\translate.js
)

但是,当我这样做时,似乎在每个文件的末尾打印了一个额外的字符。当我以 ASCII 格式查看文件时,它被解释为以下三个字符: 

为什么会这样?我能做些什么来解决它?

【问题讨论】:

    标签: windows file batch-file concatenation


    【解决方案1】:

     看起来像一个 unicode byte order mark。是否可以从没有字节标记存储的文件开始?我不知道任何可以删除标记的命令行命令。

    【讨论】:

    • 好电话。看起来这确实是问题所在。我将研究是否可以在没有字节顺序标记的情况下存储文件,但我不知道这是否可行(其他人可能正在编辑文件,我希望他们能够在他们选择的编辑器)。
    • 如果您使用 Windows 批处理文件以外的编程语言,这当然很容易做到。
    • 同意。幸运的是,我能够找到一个工具,无需我编写任何东西就可以完成我想做的事情(尽管这很有趣,但这并不是我想要花时间的方式)。该工具可以在这里找到:interworks.com/blogs/banderton/2010/04/01/…
    【解决方案2】:

    DOS copy 命令的工作方式类似于 UNIX cat 命令。也就是说,您可以列出多个源文件和一个目标文件,并用+ 符号分隔。

    copy source\Libraries\sprintf.js+source\translate-namespace.js bin\translate.js
    

    【讨论】:

    • 我知道这是可能的,但我想在连接的文件之间添加一个新行。此外,这有完全相同的问题。
    • 好吧,你已经有一个NUL 文件,我假设它是空的。您可以有一个“一个空行”文件并将其与源文件一起插入。
    猜你喜欢
    • 2021-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-15
    • 1970-01-01
    相关资源
    最近更新 更多