Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 批处理:使用目录中类型的第一个文件作为变量_Java_Batch File - Fatal编程技术网

Java 批处理:使用目录中类型的第一个文件作为变量

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

我试图编写一个批处理程序来查找给定类型的第一个文件,比如说.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 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