Java 批处理:使用目录中类型的第一个文件作为变量
我试图编写一个批处理程序来查找给定类型的第一个文件,比如说.txt,然后将其传递给使用文件名和路径运行的java程序 我已经可以找到并检查该类型的文件是否存在,但我认为set命令和之后如何处理参数有问题Java 批处理:使用目录中类型的第一个文件作为变量,java,batch-file,Java,Batch File,我试图编写一个批处理程序来查找给定类型的第一个文件,比如说.txt,然后将其传递给使用文件名和路径运行的java程序 我已经可以找到并检查该类型的文件是否存在,但我认为set命令和之后如何处理参数有问题 if exist *.txt ( echo txt exists set file = exist *.png ) else ( echo No txt file found exit ) echo Using %file% java -jar MyJavaPr
if exist *.txt (
echo txt exists
set file = exist *.png
) else (
echo No txt file found
exit
)
echo Using %file%
java -jar MyJavaProgram.jar -%file%
我不想在命令行级别传递任何参数,我也无法更改java jar来处理此问题。正如评论中所提到的,for循环是您在这里寻找的:
@echo off
setlocal enabledelayedexpansion
for %%A in (*.txt) do (
set "file=exist %%~nA.png"
echo Using !file!
if exist !file! java -jar MyJavaProgram.jar -"!file!"
)
这将遍历当前目录中的所有文本文件,并将每个文件设置为参数%%A,将文件变量设置为exist nameofyourtextfile.png,回显您的行,然后使用文件变量运行.jar。这里需要感叹号,因为在每次循环迭代中处理每个文本文件都需要延迟扩展
如果您确实只想使用遇到的第一个文本文件,您可以使用exit或GOTO使循环退出:
如果我误解了你的set语句,如果你只是想要名称,你实际上不想让这个词存在于你的变量中-你可以删除它和%%~nA.png之前的空格。如果您让我们知道您要查找的特定输出,我们可以根据需要帮助您进行调整。希望您的文件是布尔值?打开命令提示窗口,运行/?并阅读输出帮助。批处理文件中可能需要的只是%%I in*.txt do java.exe-jar MyJavaProgram.jar-%%I&goto:EOF或%%I in*.txt do(如果存在)%%~nI.png java.exe-jar MyJavaProgram.jar-%%~nI.png。还不清楚Java可执行文件应该运行哪个文件,以及目录中存在多少*.txt或*.png文件。另请参见Set命令不忽略空格,因此当前有一个名为%file%的变量,字符串值为exist*.png。Set命令的推荐语法是Set VariableName=VariableValue,因此我建议您使用它。使用set file=exist*.png代替set file=exist*.png。非常感谢。实际上我只是想要你在评论中解释的名字。很抱歉让人困惑的set语句,我显然必须了解更多。我希望java程序完成后窗口保持打开状态。我本想暂停一下,但我怀疑最好的办法是确保没有问题,并且在循环结束后可以自由地在那里暂停一下,这对于排除故障非常有用。
@echo off
setlocal enabledelayedexpansion
for %%A in (*.txt) do (
set "file=exist %%~nA.png"
echo Using !file!
if exist !file! java -jar MyJavaProgram.jar -"!file!"
GOTO endloop
)
endlocal
:endloop