windows - 如何使用需要特定文件名的 CLI 工具在批处理脚本中使用通配符?

标签 windows file batch-file command-line-interface

我有一个不喜欢使用通配符的 cli 应用程序。在这个例子中使用*.dat。我只是收到一个错误,指出文件 *.dat 无效。

我有一个包含数千个文件的文件夹,需要使用此工具进行处理。所以手动做是不行的。我遇到了很多遇到这个问题的应用程序,但这次它相当重要。如何处理这些应用程序的通用解决方案会非常好。

我可以制作所有 *.dat 文件的文件列表并将其提供给应用程序吗? 我没有必要使用批处理脚本,但它似乎是迄今为止最简单的解决方案。

最佳答案

您可以使用 for 循环:

for %%x in (*.dat) do mycommand "%%x"

这将为每个文件启动一次命令。如果你想聚合它们,你必须做更多的工作:

setlocal enabledelayedexpansion
set Count=0
set List=
for %%x in (*.dat) do (
  set List=!List! "%%x"
  set /a Count+=1
  if !Count! GEQ 50 (
    mycommand !List!
    set List=
    set Count=0
  )
)

这会一次将 50 个文件传递给命令。如果需要,您可以调整该数字。问题是,如果文件夹中有数千个文件,那么您不能简单地将它们全部列在一个命令行中(因为存在最大命令行长度限制),因此您必须分块处理它们。

关于windows - 如何使用需要特定文件名的 CLI 工具在批处理脚本中使用通配符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11215246/

相关文章:

c - 即使在程序中提供了正确的路径后,我也无法在 Visual C++ 中打开该文件

python - 在文本文件中查找值

python 3.6 : "AttributeError: ' SimpleQueue' object has no attribute '_poll' "

php - 如何使用 PHP 和 Wamp Server 使用和访问 SQLite 数据库?

C++ 如何使用 _rmdir 删除文件?

linux - 将 .bat 转换为 .sh

batch-file - 使用bat文件在Jenkins中设置环境变量?

c# - 未检测到已安装的组件。元素已经是另一个元素的子元素

python - 目录名+文件名转文本文件

windows - 如何在批处理文件中正确限制 IF 命令?