PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [Batch] ausgelagerte platzhalter funktionieren nicht


zerobit
15.07.2009, 20:45
hallo, ich mal wieder :P

Von der Idee getrieben, dass eine externe Config-Datei einfacher & übersichtlicher zu bearbeiten ist als alles in eine Batch-Datei zu speichern, habe ich diverse Variabeln ausgelagert.

Doch scheine ich grade an eine Grenze zu stoßen...,
denn wenn ich Platzhalter wie %1 und %var% mit auslagere,
dann werden sie nicht umgewandelt ausgefüht so das nichts geht.

Hier erstmal die Code-Schnipsel um die es geht:

CmdCBS(2).cmd (Auszug)

:Extr
set PACKPH=D:\Programme\System\Packer
cd /d "%~dp1"

SET xErrLvl=1
CALL :xExtr "%~1" %~x1
if %xErrLvl%==0 GOTO :%xJmpPnt%

:UNKW
echo.*******************
echo.Datei ist unbekannt
echo.breche ab...
echo.*******************
echo.
pause
GOTO :END

:xExtr
for /F "tokens=1* delims==" %%a in ('findstr /b "%~2" "CmdCBS.cfg"') do %%b
SET xErrLvl=0
IF NOT EXIST "%ExtrDir%" goto :END
GOTO :eof


CmdCBS.cfg (Auszug)

.rar=%PACKPH%\WinRAR\WIN\WinRAR.exe x -kb -y "%~1" "%ExtrDir%\"
.ace=%PACKPH%\WinRAR\WIN\WinRAR.exe x -kb -y "%~1" "%ExtrDir%\"
.zip=%PACKPH%\7-Zip\9.04b\x64\7z.exe x -o"%ExtrDir%\" "%~1"
.cab=%PACKPH%\7-Zip\9.04b\x64\7z.exe x -o"%ExtrDir%\" "%~1"
.7z=%PACKPH%\7-Zip\9.04b\x64\7z.exe x -o"%ExtrDir%\" "%~1"
.gz=%PACKPH%\7-Zip\9.04b\x64\7z.exe x -o"%ExtrDir%\" "%~1"
.bz=%PACKPH%\7-Zip\9.04b\x64\7z.exe x -o"%ExtrDir%\" "%~1"
.tar=%PACKPH%\7-Zip\9.04b\x64\7z.exe x -o"%ExtrDir%\" "%~1"
.arj=%PACKPH%\7-Zip\9.04b\x64\7z.exe x -o"%ExtrDir%\" "%~1"
.dmg=%PACKPH%\7-Zip\9.04b\x64\7z.exe x -o"%ExtrDir%\" "%~1"
.lzh=%PACKPH%\7-Zip\9.04b\x64\7z.exe x -o"%ExtrDir%\" "%~1"
.lza=%PACKPH%\7-Zip\9.04b\x64\7z.exe x -o"%ExtrDir%\" "%~1"
.uha=%PACKPH%\UHArc\UHARC\0.6b\UHARC.EXE x -t"%ExtrDir%" "%~1"


CMD-Ausgabe:

D:\>for /F "tokens=1* delims==" %a in ('findstr /b ".7z" "CmdCBS.cfg"') do set xExtrRun=%b

D:\>%PACKPH%\7-Zip\9.04b\x64\7z.exe x -o"%ExtrDir%\" "%~1"

Die Datei "%PACKPH%\7-Zip\9.04b\x64\7z.exe" kann nicht gefunden werden.

***************************
Archiv wurde nicht entpackt
breche ab...
***************************

Drücken Sie eine beliebige Taste . . .


German
15.07.2009, 22:38
Schnellschuss:
Vielleicht hilft schon ein simples CALL

for /F "tokens=1* delims==" %%a in ('findstr /b "%~2" "CmdCBS.cfg"') do call %%b

Zumindest sollte %PACKPH% so expandiert werden. Ob der Rest dann noch funktioniert... ?

zerobit
15.07.2009, 23:20
Schnellschuss:
Vielleicht hilft schon ein simples CALL

for /F "tokens=1* delims==" %%a in ('findstr /b "%~2" "CmdCBS.cfg"') do call %%b

Zumindest sollte %PACKPH% so expandiert werden. Ob der Rest dann noch funktioniert... ?

alter... ik werd bekloppt, es funktioniert wirklich
vielen dank...

das verhalten von CMD ist schon merkwürdig... auf sowas muss man erstmal kommen...

German
15.07.2009, 23:28
alter... ik werd bekloppt, es funktioniert wirklich
vielen dank...

das verhalten von CMD ist schon merkwürdig... auf sowas muss man erstmal kommen...

Das kannst laut sagen :D
Für (fast) das gleiche Problem hab ich mal 3 Stunden Google gequält und dabei das unscheinbare call mindestens 3x überlesen bevor ich drüber gestolpert bin...

zerobit
15.07.2009, 23:31
Das kannst laut sagen :D
Für (fast) das gleiche Problem hab ich mal 3 Stunden Google gequält und dabei das unscheinbare call mindestens 3x überlesen bevor ich drüber gestolpert bin...

wow dass nenn ich ausdauer.
hast du den artikel noch irgendwo?

German
15.07.2009, 23:42
wow dass nenn ich ausdauer.
hast du den artikel noch irgendwo?
Nach nochmal googeln (ungefähr wusste ichs noch):
http://www.administrator.de/index.php?content=79106