【问题标题】:Too many arguments in command line - "more" command命令行中的参数太多 - “更多”命令
【发布时间】:2019-03-01 20:09:36
【问题描述】:

我对将多个 CSV 文件合并为一个的批处理文件有一个奇怪的问题。 This 是我正在使用的文件。

它只会获取目录中多个 CSV 文件之一,并将其​​内容复制到 new.csv 文件中。 然后它为目录中的每个剩余文件返回“命令行中的参数过多”。

此文件在具有相同操作系统的其他系统上运行良好。

它在我的系统上运行,直到我重新运行它并且没有先删除输出文件。这导致在目录中生成 new.csv.tmp 而不是最终的“new.csv”,因为它无法重命名它。

有谁知道发生了什么?我尝试重新启动,删除所有内容并从头开始。它似乎在这个特定系统上永久损坏。

一些搜索发现more命令可能有问题。 This question is similar.

【问题讨论】:

  • 对不起,我的水晶球又失败了,所以我看不到你磁盘中的文件,也看不到你使用的确切批处理文件,也看不到错误消息...你可以删除@987654323 @line 以获得更多信息。但是如果你不发布更多关于这个问题的数据,那么我们只能猜测......
  • 我链接了我正在使用的文件。我还解释了返回的确切错误消息。这些文件都是标准的 CSV 文件,就像我说的,这在其他系统上工作得很好。就像一旦输出文件已经存在,批处理文件就无法覆盖它并为我尝试进行的其余运行注入某种临时内存。我也从头开始(这工作正常,直到输出文件没有被删除。)它仍然不起作用。

标签: csv batch-file


【解决方案1】:

我之前遇到过类似的问题。

我记得我使用的方法似乎已经解决了它,是使用命令帮助中的实际语法,(注意 STDIN 重定向)

MORE [/E [/C] [/P] [/S] [/Tn] [+n]] < [drive:][path]filename

像这样:

@SetLocal & Set "PATHEXT="
@"%__AppDir__%where.exe" /Q .:"*.csv" || GoTo :EOF
@Set "_=1" & (  For /F Delims^=^ EOL^= %%G In (
        '""%__AppDir__%where.exe" /F .:"*.csv""')Do @If Defined _ (
        More 0< %%G & Set "_=")Else More +1 0< %%G) 1> "new.tmp"
@EndLocal & Ren "new.tmp" "new.csv"

或者,您可以尝试其他显示的语法,(您似乎正在使用此语法,但没有 /E 选项)

MORE /E [/C] [/P] [/S] [/Tn] [+n] [files]

像这样:

@SetLocal & Set "PATHEXT="
@"%__AppDir__%where.exe" /Q .:"*.csv" || GoTo :EOF
@Set "_=1" & (  For /F Delims^=^ EOL^= %%G In (
        '""%__AppDir__%where.exe" /F .:"*.csv""')Do @If Defined _ (
        More /E %%G & Set "_=")Else More /E +1 %%G) 1> "new.tmp"
@EndLocal & Ren "new.tmp" "new.csv"

【讨论】:

  • 第一个示例返回的结果与我得到的结果相同(没有工作)您的第二个示例完美运行,谢谢!
猜你喜欢
  • 2012-08-05
  • 2020-11-21
  • 2020-03-23
  • 2019-08-14
  • 2017-11-04
  • 2015-11-30
  • 2012-01-28
  • 1970-01-01
  • 2012-11-14
相关资源
最近更新 更多