Windows nimmt variable falsch an?
Heyy, da ich aktuell ein Batch script mache brauche eine bestimmte Zeile, aber aus irgend einem Grund will windows den Pfad der in einer Variable nicht richtig nutzen. Der code ist hier:
for /f "delims=" %%A in ('"%workDir%"\src\folderbrowse\folderbrowse.exe "Select the directory where the image gets mounted:"') do set "MountDir=%%A"
In dem %workDir% ist der Pfad "C:\Users\000\Desktop\WIM Editor" gespeichert als bsp. aber aus irgend einem Grund möchte Windows auf diesen Pfad nicht wirklich zugreifen. Weis zufällig jemand eine Lösung?
2 Antworten
keine Ahnung was Folderbrowser.exe ist oder zurückgibt
allerdings hast Du die Quotes falsch gesetzt:
demo.cmd
@echo off
set "WorkDir=C:\blubb"
rem mal zur Demo
echo falsch : "%workDir%"\src\folderbrowse\folderbrowse.exe
echo richtig: "%workDir%\src\folderbrowse\folderbrowse.exe"
for /f "tokens=*" %%a in ('"%workDir%\src\folderbrowse\folderbrowse.exe" "Select the directory where the image gets mounted:"') do (
set "MountDir=%%~a"
)
pause
Verwende nie "delims=" (es sei denn es ist zwingend nötig). Dies gibt auch evtl führende Leerzeichen zurück ,welche einen Pfad unbrauchbar machen.
Allerdings erschließt sich mir nicht, weshalb Du für einen Folderdialog eine exe verwendest ? Du hast alles an Bord😏
demo.cmd
@echo off
chcp 65001 >nul
set "BaseFolder=%UserProfile%\Desktop" &rem diese Zeile legt nur einen eventiellen StartOrdner für den Dialog fest und kann weg
rem erzeuge Dialogscript:
echo objFolder = new ActiveXObject('Shell.Application').BrowseForFolder(0, 'Select the directory where the image gets mounted:', 1, '%BaseFolder%');if (objFolder) {WSH.Echo(objFolder.Self.path)} >"%temp%\getFolder.js"
for /f "tokens=*" %%a in ('cscript /nologo "%temp%\getFolder.js"') do (
set "MountDir=%%~a"
)
echo Gewählter Ordner : "%MountDir%"
pause
Also ehhhh, da Folderbrowse nehm ich halt da es für mich das einfachste war was ich da hatte und weil ich da schon ein script bsp hatte. 😅
vielleicht
""Select
und
""MountDir=%%A"
Dein Leerzeichen im Verzeichnisnahmen dürfte der Grund sein
Der Sollte aber von Windows mitgenommen werden wenn der Pfad in Anführungszeichen steht.
Notfalls verkürzte notation verwenden wenn das bei Batch möglich ist, schreib es als Consolenprogramm in C# das ist 100x einfacher als veralteten Schrott zum laufen zu bringen nur weil sich der Pfad geändert hat. Ich bevorzuge ja als alter Hase Visual Basic der 1. Stunde zum *.exe machen und habe auch die Lizenz dafür erhalten.
falsches Quoting im Pfad
"%workDir%"\src\folderbrowse\folderbrowse.exe
"%workDir%\src\folderbrowse\folderbrowse.exe"
Hat leider nicht geholfen, bekomme noch immer den Fehler 'C:\[...]\WIM ' is not recognised as... an den Kopf geschmissen :(