Постановка проблемы: Перетаскивание папки в пакетный файл изменяет результат цикла for, в то время как простой щелчок по пакетному файлу приводит к другому, но желаемому выводу из упомянутого цикла for.
Справочная информация: Я хочу получить имя последнего созданного файла .jar в папке. Файл .bat будет находиться в этой папке, где находятся .jars. Используя приведенный ниже пример файла .bat, я дважды щелкаю файл .bat и получаю искомый результат, например: {jar_root_dir_path} + "logger-20191030.jar", см. "Требуемый вывод:" раздел ниже для уточнения.
Дело в том, что этот файл .bat будет использоваться только в том случае, если кто-то перетянет на него папку, а затем передаст эту информацию в файл .jar. Вот тут и возникает моя проблема. Когда я перетаскиваю папку в командный файл, я не получаю никаких результатов для последнего файла .jar. Обратитесь к разделу «Токовый выход:» ниже, чтобы увидеть выход проблемы.
Код:
#Example code
@echo off
for /f "delims=" %%x in ('dir /od /b logger*.jar') do set latestjar=%%x
echo "%~dp0%latestjar%" + "%~dp0output.txt"
pause
Вывод:
Примечание: {example_path_here} в этом вопросе действует только как заполнитель для фактических путей к каталогам / файлам, например, {example_dir} = "D: \ Installation \Регистратор \ "
Токовый выход:
File Not Found
{root_directory_of_.bat} + {root_directory_of_.bat_with_output_file_name_appended}
Press any key to continue . . .
Желаемый выход:
{root_directory_of_.bat_with_latest_.jar_file_appended} + {root_directory_of_.bat_with_output_file_name_appended}
Press any key to continue . . .