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

时间:2019-07-10 15:18:33

标签: java batch-file

我试图编写一个批处理程序来查找给定类型的第一个文件,例如说一个.txt,然后将其传递给使用文件名和路径运行的Java程序。

我已经可以找到并检查类型是否存在的文件,但是我认为我在使用set命令以及以后如何处理参数方面遇到了问题。

(X%2) != 0

我想在没有任何争议的情况下做到这一点,我必须在命令行级别进行传递,而且我也无法更改Java jar来处理此问题。

1 个答案:

答案 0 :(得分:1)

正如评论所暗示的,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,将file变量设置为“ existing nameofyourtextfile.png”,回显您的行,然后运行.jar和您的file变量。这里需要使用感叹号,因为需要延迟扩展来处理每个文本文件(在每个循环迭代中)。

如果您只是想使用遇到的 first 文本文件,则可以使用exitGOTO使循环退出:

@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

如果我误解了您的set语句,而您实际上并不想在变量中使用exist一词(如果您只想使用名称),则可以将其删除,并在前面加上空格到%%~nA.png。如果您让我们知道您要查找的特定输出,我们可以帮助您根据需要进行调整。