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

PTS*_*PTS 4 windows file batch-file command-line-interface

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

我有一个包含数千个文件的文件夹,需要由此工具处理.所以手动完成它是不行的.我遇到了很多应用程序,我遇到了这个问题,但这次它非常重要.如何处理这些应用程序的一般解决方案将是非常好的.

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

Joe*_*oey 5

你可以使用一个for循环:

for %%x in (*.dat) do mycommand "%%x"
Run Code Online (Sandbox Code Playgroud)

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

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
  )
)
Run Code Online (Sandbox Code Playgroud)

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