Obtengo un resultado extraño al ejecutar mi script:
@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
Debería mostrar la ubicación de la carpeta que selecciono. en lugar de eso, el eco está desactivado.
Respuesta1
Obtengo un resultado extraño al ejecutar mi script
Para depurar sus scripts por lotes, comente la @echo off
línea para que pueda ver lo que está sucediendo:
rem @echo off
Estás setlocal enabledelayedexpansion
en el lugar equivocado. Muévalo al principio del archivo.
prueba.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
Salida de ejemplo (seleccioné "Escritorio"):
F:\test>test
C:\Users\DavidPostill\Desktop
F:\test>
Nota:
- Aún aparecerá
ECHO is off.
si presiona "Cancelar" la primera vez que se muestra el cuadro de diálogo.