Пакет: использовать первый файл типа в каталоге в качестве переменной - PullRequest
0 голосов
/ 10 июля 2019

Я пытаюсь написать пакетную программу, чтобы найти первый файл заданного типа, например, .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 для решения этой проблемы.

1 Ответ

1 голос
/ 10 июля 2019

Как уже упоминалось в комментариях, вы ищете здесь цикл 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 как «exist 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 , Если вы сообщите нам, какой именно вывод вы ищете, мы можем помочь вам настроить его по мере необходимости.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...