1

Я получаю странный вывод при запуске моего скрипта:

@echo off
setlocal
pushd "%~dp0"

set Mode=batch

if "%Mode%"=="batch" call :BATCH
echo %Loc%
pause>nul
exit

:BATCH
set "psCommand="(new-object -COM 'Shell.Application')^
.BrowseForFolder(0,'Please choose a folder.',0,0).self.path""
for /f "usebackq delims=" %%I in (`powershell %psCommand%`) do set "folder=%%I"
setlocal enabledelayedexpansion
set Loc=!folder!
Goto:eof

Должно отображаться местоположение папки, которое я выбрал. вместо этого я получаю эхо выключено.

1 ответ1

0

Я получаю странный вывод при запуске моего скрипта

Для отладки ваших пакетных скриптов прокомментируйте @echo off режиме, чтобы вы могли видеть, что происходит:

rem @echo off

Ваш setlocal enabledelayedexpansion находится не в том месте. Переместите его в начало файла.

test.cmd:

@echo off
setlocal
setlocal enabledelayedexpansion
pushd "%~dp0"

set Mode=batch

if "%Mode%"=="batch" call :BATCH
echo %Loc%
pause>nul

:BATCH
set "psCommand="(new-object -COM 'Shell.Application')^
.BrowseForFolder(0,'Please choose a folder.',0,0).self.path""
for /f "usebackq delims=" %%I in (`powershell %psCommand%`) do set "folder=%%I"
set Loc=!folder!
Goto:eof

Пример вывода (я выбрал "Рабочий стол"):

F:\test>test
C:\Users\DavidPostill\Desktop

F:\test>

Замечания:

  • Вы все равно получите ECHO is off. отображается, если вы нажмете "Отмена" при первом отображении вашего диалога.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .