【问题标题】:how generate & use list of values within a commend?如何在命令中生成和使用值列表?
【发布时间】:2022-01-06 21:58:26
【问题描述】:

我想使用一个处理许多文件的 windows 命令。 该命令的语法如下 & 需要一个单独的文件名列表:command "file_1 file_2 file_3 file_4" output-file

我必须处理 1000 多个文件。 有没有办法在命令行中自动生成文件列表? 比如:

command "(echo file_1.txt to file_1000.txt)" output-file

非常感谢!

【问题讨论】:

  • command 是否支持通配符?注意命令行长度有 8K 个字符/字节的限制……
  • 问题是,该命令不支持通配符,CMD 不允许像 Unix 那样嵌套命令(这里是 "{$echo dir/*.txt}" &命令是有限的。是否可以将文本文件中的文件列表读取到变量 %f 中并将变量 %f 放入命令中,例如命令“%f”输出?
  • 这不会改变任何事情,因为可变长度也被限制为 8K,甚至像 %f 这样的 for 元变量也无法接收更长的值……

标签: windows shell cmd


【解决方案1】:

如果您的问题是“如何创建编号为 1 到 1000 的文件列表”,那么您可以在 PowerShell 中执行此操作:

1..1000 | % { New-Item file_$_.txt }

请注意,%ForEach-Object 的别名。 $_ 标记表示“来自管道的当前对象”(即数字 1-1000)。

【讨论】:

    【解决方案2】:

    这个问题有很多开放式问题。由于cmd 具有行长限制,因此不可能通过单个命令处理所有文件。但是,您可以一次处理一个。目前尚不清楚output-file 将包含什么。

    FOR %A IN ("file_*") DO (command "%A")
    

    如果这是在 .bat 文件脚本中,请将变量名上的 PERCENT 字符加倍。

    FOR %%A IN ("file_*") DO (command "%%~A")
    

    【讨论】:

      猜你喜欢
      • 2015-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-28
      • 2022-06-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多