Тема: CMD/BAT: использование стандартных GUI-диалогов выбора папки и файла
Использование стандартного диалога выбора папки (на основе «.BrowseForFolder()»).
@echo off
setlocal
for /f "tokens=2 delims=:" %%i in ('chcp') do (
set sPrevCP=%%i
chcp 1251 >nul
)
for /f "usebackq delims=" %%i in (
`@"%systemroot%\system32\mshta.exe" "javascript:var objShellApp = new ActiveXObject('Shell.Application');var Folder = objShellApp.BrowseForFolder(0, 'SELECT FOLDER',1, '::{20D04FE0-3AEA-1069-A2D8-08002B30309D}');try {new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1).Write(Folder.Self.Path)};catch (e){};close();" ^
1^|more`
) do set sFolderName=%%i
chcp %sPrevCP% >nul
if defined sFolderName (
echo Выбрана папка: [%sFolderName%].
) else (
echo Папка не была выбрана.
)
endlocal
exit /b 0
Автор идеи — Аскет.