스크립트를 실행할 때 이상한 출력이 나타납니다.
@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
스크립트를 실행할 때 이상한 출력이 나타납니다.
배치 스크립트를 디버깅하려면 @echo off
무슨 일이 일어나고 있는지 확인할 수 있도록 해당 행에 주석을 추가하세요.
rem @echo off
당신은 setlocal enabledelayedexpansion
잘못된 위치에 있습니다. 파일의 시작 부분으로 이동합니다.
테스트.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
출력 예(저는 "Desktop"을 선택했습니다):
F:\test>test
C:\Users\DavidPostill\Desktop
F:\test>
메모:
ECHO is off.
대화 상자가 처음 표시될 때 "취소"를 누르면 여전히 표시됩니다 .