【问题标题】:Passing options via batch to command line tool?通过批处理将选项传递给命令行工具?
【发布时间】:2014-03-01 19:20:51
【问题描述】:

假设我有一个 XML 文件。

<!-- File: "java.xml" -->
<java>
    <classpath>C:\path\to\my\classes\</classpath>
</java>

// File: "java.txt"
C:\path\to\my\classes\
C:\path\to\something\else\
C:\an\other\command\line\argument\

是否有可能有一个批处理文件来读取 XML 文件,或者甚至像文本文件中由新行分隔的字符串的有序列表一样简单 \n。然后调用一个全局命令行工具,例如java,并将示例文件java.xml中的参数传递给它。

C:\Users>java -classpath C:\path\to\my\classes\

【问题讨论】:

  • 请问是干什么用的?
  • 哦,伙计...它在 Windows 上吗?
  • 基本上是一个代理来触发带有指定参数的命令行工具。我必须使用的工具只能执行文件(不带参数)和写入文本文件。这是我通过将参数写入文本文件并执行批处理文件来解决这些缺点的方法,该批处理文件将依次触发全局命令行工具并传递在文本文件中找到的参数。

标签: batch-file command-line command-line-arguments batch-processing


【解决方案1】:

最终使用我找到的东西解决了这个问题here

"java.txt"

C:\path\to\my\classes

"java.bat"

@echo off
setlocal ENABLEDELAYEDEXPANSION
set vidx=0
for /F "tokens=*" %%A in (Presets/Scripts/java.txt) do (
    SET /A vidx=!vidx! + 1
    set var!vidx!=%%A
)
set var

java -classpath %var1%

pause

【讨论】:

  • 这样能彻底解决问题吗?显然这个脚本只会在第一行调用java。你是那个意思吗?您的问题似乎无法证实这一点。
  • 您可以在文本文件中添加任意数量的行,并且它们在批处理脚本中的变量 var1、var2、var3 等...
  • 是的,for 循环创建并填充它们,我明白这一点。我想知道的是,you 是否真的想只为第一行(第一个变量)或所有它们调用java -classpath 命令。因为如果是后者,那么把java -classpath %var1%java -classpath %var2%等都写在一个脚本里似乎不太方便,尤其是当你不知道应该有多少个的时候!而且您不必这样做,有一种更简单的方法:只需在循环中调用命令(而不是设置变量):java -classpath "%%A".
  • 我正在为必须使用 ExtendScript for Photoshop 的内部命令行工具编写 GUI。 ExtendScript 不允许将选项传递给它只能执行和写入文本文件的文件。这是我解决此类问题的方法。在我的情况下,该工具需要通过三个选项,例如mytool --config %var1% --input %var2% --output %var3%我以java为例,因为我不想透露我公司的内部工具。
  • 啊,我明白了,现在这更有意义了。 java示例似乎掩盖了您对我的实际意图,据我所知,它是读取存储在文本文件的单独行中的项目,然后将它们全部(或至少一个项目)传递给 单个 命令。如果我现在的理解是正确的,那么如果您在问题中澄清这一点,可能会对未来的读者有所帮助。在我看来,像mytool --option1 %line1% --option2 %line2% --option3 %line3%(而不是java)这样的任意命令行可以很好地隐藏你的真实工具。
猜你喜欢
  • 2016-11-05
  • 1970-01-01
  • 2023-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-13
  • 2019-05-17
相关资源
最近更新 更多