【问题标题】:How do I create a bat file to process different file names within a directory?如何创建 bat 文件来处理目录中的不同文件名?
【发布时间】:2020-08-20 14:14:55
【问题描述】:

如何创建 bat 文件来处理目录中的不同文件?文件名如下递增,我在 bat 文件中需要的命令应该是 java -jar Test.jar (递增的文件名) 一个接一个。我创建了一个 .bat 文件,看起来像这样 -

java -jar Test.jar TESTDOC1.xml 
java -jar Test.jar TESTDOC2.xml
java -jar Test.jar TESTDOC3.xml

pause

但是计数可能会增加到一个巨大的数字。

文件名:

TESTDOC1.xml TESTDOC2.xml TESTDOC3.xml

我该怎么做?

【问题讨论】:

  • 使用for 循环和通配符*。打开 cmd.exe 并输入For /? 了解更多信息
  • 似乎最好将您的 JAVA 程序更改为使用通配符从目录中读取文件。我之所以这么说是因为 cmd.exe 的行数限制为 8,192 字节。如果您有数百个 XML 文件需要处理,那么命令行执行很容易超出此范围。
  • @Squashman 谢谢。如果我将输出重定向到一个简单的 .txt 文件会怎样。我在这里遇到的挑战是我不应该编辑 java 程序,而是创建一个 .bat 文件来将文件提供给 jar 文件。
  • 我想我需要了解为什么它们都需要在同一行执行。为什么你不能只遍历文件名并继续执行 java?

标签: batch-file command-line command-prompt


【解决方案1】:

如果文件真的像你说的那样按数字递增,为什么不只是:

@echo off
for /f "tokens=1,*" %%i in ('dir testdoc*.xml ^| findstr "File(s)"') do (
   for /l %%a in (1,1,%%i) do echo java -jar test.jar testdoc%%a.xml
)

我有 echo 来简单地打印到屏幕上,如果打印结果符合您的预期,则需要删除 echo

【讨论】:

    【解决方案2】:

    我在下面尝试过,它奏效了。感谢壁球手的帮助

    for /r %%i in (*.xml) do java -jar Test.jar %%i >myopt.txt
    pause
    

    【讨论】:

      猜你喜欢
      • 2013-08-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-26
      • 1970-01-01
      • 1970-01-01
      • 2013-10-25
      • 2013-02-13
      相关资源
      最近更新 更多