Im Batch einen Unterordner bzw. Pfad ändern
Hallo, ich habe eine Batch - diese nennt pdfs nach Inhalt um - diese batch muss zurzeit mit den pdfs in einem Ordner liegen, ich hätte aber es gerne anders - es sollen die pdfs in einem Unterordner liegen. Ich habe in der batch dies schon versucht umzustellen, leider erfolglos - vielleicht kann mir jemand helfen.
Es sind 3 batches
Lief.bat
LiefoLeer.bat
Lieferscheine-umbenennen_START.bat
die pdfs sollen in einem Unterordner "pdfs" liegen
Lief.bat
LiefoLeer.bat
Lieferscheine-umbenennen_START.bat
vielen Dank!
Es sind 3 batches
Lief.bat
LiefoLeer.bat
Lieferscheine-umbenennen_START.bat
die pdfs sollen in einem Unterordner "pdfs" liegen
Lief.bat
@Echo off & setlocal
For /f "Delims=" %%A in ('Dir /B /A-D "pdfs\DOC*.pdf"') Do Call :ProcPDF "%%A" "%%~nA.txt"
Goto :Eof
:ProcPDF
pdftotext.exe %1
If defined Nummer set "Lieferschein-Nr."
for /f "Tokens=2" %%B in ( 'findstr /I "Lieferschein-Nr." %2 ' ) Do Call :Trim Nummer %%B
If Not Defined Nummer Echo Keine Nummer in %1 & goto :EOF
Ren %1 "%Nummer%.pdf"
Del %2 /Q 2>NUL
echo Lieferscheine %Nummer% %1 mit Leerzeichen fertig
Goto :Eof
:Trim
Set "%1=%2"
Goto :Eof
LiefoLeer.bat
@Echo off & setlocal
For /f "Delims=" %%A in ('Dir /B /A-D "pdfs\DOC*.pdf"') Do Call :ProcPDF "%%A" "%%~nA.txt"
Goto :Eof
:ProcPDF
pdftotext.exe %1
set "Zeile="
for /f "delims=" %%B in ( 'findstr "Lieferschein-Nr.[0-9][0-9][0-9][0-9][0-9][0-9][0-9]" %2 ' ) Do set "Zeile=%%B"
If Not Defined Zeile Echo Keine Lieferschein-Nr. in %1 & goto :EOF
set "KNr="
for /f "tokens=1" %%B in ("%Zeile:*Lieferschein-Nr.=%") do set "KNr=%%B"
If Not Defined KNr Echo Keine Lieferschein-Nr. in %1 & goto :EOF
Ren %1 "%KNr%.pdf"
Del %2 /Q 2>NUL
@echo Lieferscheine %KNr% ohne Leerzeichen fertig
Goto :Eof
:Trim
Set "%1=%2"
Goto :Eof
pause
Lieferscheine-umbenennen_START.bat
@ECho off
Set Log=log.Log
>>%Log% Echo "-------------------------------" %date% %time% User: %username%
call "LiefoLeer.bat">>%Log%
call "Lief.bat">>%Log%
vielen Dank!
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 540196
Url: https://administrator.de/forum/im-batch-einen-unterordner-bzw-pfad-aendern-540196.html
Ausgedruckt am: 23.12.2024 um 20:12 Uhr
1 Kommentar
Moin,
Eine Dir-Ausgabe enthält nur bei rekursiver Ausführung den vollen Dateipfad. Nutzt du den Schalter "/s" also nicht, musst du den Pfad manuell angeben.
Daraus ergeben sich für dich 3 Möglichkeiten:
Beim Callen musst du dem 2. Argument den Pfad dann auch mitgeben.
Gruß TK1987
Eine Dir-Ausgabe enthält nur bei rekursiver Ausführung den vollen Dateipfad. Nutzt du den Schalter "/s" also nicht, musst du den Pfad manuell angeben.
Daraus ergeben sich für dich 3 Möglichkeiten:
- Möglichkeit 1: Dir rekursiv ausführen
Beim Callen musst du dem 2. Argument den Pfad dann auch mitgeben.
For /f "Delims=" %%A in ('Dir /S /B /A-D "C:\Pfad\zu\pdfs\DOC*.pdf"') Do Call :ProcPDF "%%A" "%%~dpnA.txt"
...
- Möglichkeit 2: Den Dateipfad manuell mitgeben
set Pfad=C:\Pfad\zu\pdfs
For /f "Delims=" %%A in ('Dir /B /A-D "%Pfad%\DOC*.pdf"') Do Call :ProcPDF "%Pfad%\%%A" "%Pfad%\%%~nA.txt"
...
- Möglichkeit 3: Vorher in das Arbeitsverzeichnis wechseln
cd /d "C:\Pfad\zu\pdfs"
For /f "Delims=" %%A in ('Dir /B /A-D DOC*.pdf"') Do Call :ProcPDF "%%A" "%%~nA.txt"
...
Gruß TK1987