Beim Ausführen meines Skripts erhalte ich eine seltsame Ausgabe:
@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
Es sollte der von mir ausgewählte Ordnerspeicherort angezeigt werden. Stattdessen erhalte ich die Meldung „Echo ist ausgeschaltet“.
Antwort1
Ich erhalte eine seltsame Ausgabe, wenn ich mein Skript ausführe
Um Ihre Batch-Skripte zu debuggen, kommentieren Sie die @echo off
Zeile, damit Sie sehen können, was passiert:
rem @echo off
Ihr setlocal enabledelayedexpansion
steht an der falschen Stelle. Verschieben Sie es an den Anfang der Datei.
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
Beispielausgabe (ich habe „Desktop“ ausgewählt):
F:\test>test
C:\Users\DavidPostill\Desktop
F:\test>
Notiz:
- Sie werden trotzdem
ECHO is off.
angezeigt, wenn Sie beim ersten Anzeigen Ihres Dialogs auf „Abbrechen“ klicken.