Эта статья рассказывает, как в командном bat файле реализовать окно выбора файла.
Поскольку встроенных диалоговых окон для выбора файлов в пакетных bat файлах нет, нужно использовать внешние инструменты.
PowerShell, который теперь всегда предустановлен на Windows, дает доступ к компоненту System.Windows.Forms.OpenFileDialog:
[System.Reflection.Assembly]::LoadWithPartialName("System.windows.forms") | out-null
$OpenFileDialog = New-Object System.Windows.Forms.OpenFileDialog
$OpenFileDialog.initialDirectory = "C:\"
$OpenFileDialog.filter = "Книги Excel (*.xlsx)|*.xlsx|Все файлы (*.*)|*.*"
$OpenFileDialog.ShowDialog()
$OpenFileDialog.filename
Этот скрипт задает фильтр по типам файлов, открывает диалоговое окно, выводит OK/Cancel и имя выбранного файла:
OK
C:\Users\user\Documents\календарь 2020 альбомный.xlsx
В этом примере сделан фильтр по файлам XLSX (книги Excel), аналогично можно написать свой фильтр, например, по текстовым файлам TXT, документам PDF и др.
Остаётся написать в bat файле вызов скрипта и обработку вывода:
@echo off
for /F "usebackq" %%a in (`powershell -executionpolicy bypass -file openfiledialog.ps1`) do if not "%%a" == "Cancel" if not "%%a" == "OK" set filename=%%a
echo %filename%
Если файл был выбран, в переменной filename будет путь и имя файла.
Файлы для скачивания
Скрипт и bat файл диалогового окна выбора файла
Узнать больше
Класс System.Windows.Forms.OpenFileDialog