Frage

Ich bin mit einem DOS-Batch, die Datei mit übergebenen Parametern verarbeitet:

process.bat "D:\PROJECT\TEST FILES\test.pdf" 72

process.bat:

gswin32c -r%2 -sDEVICE=jpeg -sOutputFile="%~n1-%%d.jpg" -- "%~1"

Wir können sehen, dass der Parameter auf die Dateinamen im Batch erweitert wird: %~n1. Allerdings wurde ich gebeten, den Stapel zu umschreiben Parameter aus einer Textdatei zu lesen:

params.txt

1 D:\PROJECT\TEST FILES\test.pdf
2 72

So habe ich geändert, um die process.bat :

for /f "tokens=1,*" %%A in ('type ..\params.txt') do set P%%A=%%B
gswin32c -r%P1% -sDEVICE=jpeg -sOutputFile="%~nP2%-%%d.jpg" -- "%~1"

Aber% ~ np2% nicht funktioniert.

Ich habe festgestellt, dass for /f "tokens=*" %%A in (%P1%) do %%~dA mir helfen könnte, aber es sieht umständlich.

So gibt es eine andere Art und Weise beliebige Variable auf einen Namen, Laufwerk, Pfad usw. zu erweitern.?

War es hilfreich?

Lösung

Ja, nur diejenigen, die Arbeit mit den speziellen Nummer basierten Argumenten. Aber Sie können Ihre Variable in eine verwandeln, indem es zu einem Unterprogramm in der Batch-Datei übergeben. Beispiel:

@echo off
set P1=D:\PROJECT\TEST FILES\test.pdf
call :Split %P1%
echo %FNAME%
exit /b 0

:Split
set FNAME=%~n1
exit /b 0

... druckt "TEST" (der Name Teil test.pdf)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top