我试图编写一个批处理程序来查找给定类型的第一个文件,例如说一个.txt,然后将其传递给使用文件名和路径运行的Java程序。
我已经可以找到并检查类型是否存在的文件,但是我认为我在使用set命令以及以后如何处理参数方面遇到了问题。
(X%2) != 0
我想在没有任何争议的情况下做到这一点,我必须在命令行级别进行传递,而且我也无法更改Java jar来处理此问题。
答案 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 文本文件,则可以使用exit
或GOTO
使循环退出:
@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
。如果您让我们知道您要查找的特定输出,我们可以帮助您根据需要进行调整。