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

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

我有一个文件夹需要由这个工具处理数以千计的文件。 所以手动做是不行的。 我遇到了很多应用程序,但是这一次这个问题相当重要。 如何处理这些应用程序的一般解决scheme将是非常好的。

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

你可以使用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个文件到命令。 你可以调整这个数字,如果需要的话。 问题是,如果文件夹中有成千上万的文件,那么你不能简单地把它们全部列在一个命令行中(因为有一个最大的命令行长度限制),所以你必须以块来处理它们。