Эта статья рассказывает, как в командном 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

Все скрипты PowerShell

Все bat файлы

Окно выбора файла в bat файле
Метки:     

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *