Pfade aus einer txt auslesen, bearbeiten und mit rar Befehl übergeben
Hallo liebes Team
hallo liebe User,
ich habe hier eine .txt in der Ordnerpfade stehen.
Ich möchte diese Pfade auslesen und mit einem Befehl an Winrar übergeben:
____
Befehl:
rar a -sfx "%GEPACKTER ORDNER / ORDERNAME%.rar" %AUSGELESENER ORDNERPFAD%
____
Wie Ihr seht werden in dem Befehl bereits 2 Variable benötigt:
%GEPACKTER ORDNER / ORDERNAME%
sowie
%AUSGELESENER ORDNERPFAD%
*Es können in der .txt beliebig viele Ordnerpfade untereinander stehen, das ist immer unterschiedlich!
Wer hätte da für einen Anfänger eventuell eine Lösung oder zumindest eine Idee wie man das anstellen könnte?
Liebe Grüße
Soidberg
hallo liebe User,
ich habe hier eine .txt in der Ordnerpfade stehen.
Ich möchte diese Pfade auslesen und mit einem Befehl an Winrar übergeben:
____
Befehl:
rar a -sfx "%GEPACKTER ORDNER / ORDERNAME%.rar" %AUSGELESENER ORDNERPFAD%
____
Wie Ihr seht werden in dem Befehl bereits 2 Variable benötigt:
%GEPACKTER ORDNER / ORDERNAME%
sowie
%AUSGELESENER ORDNERPFAD%
*Es können in der .txt beliebig viele Ordnerpfade untereinander stehen, das ist immer unterschiedlich!
Wer hätte da für einen Anfänger eventuell eine Lösung oder zumindest eine Idee wie man das anstellen könnte?
Liebe Grüße
Soidberg
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 57695
Url: https://administrator.de/contentid/57695
Ausgedruckt am: 22.11.2024 um 12:11 Uhr
13 Kommentare
Neuester Kommentar
Hallo Soidberg!
Kurze Rückfrage: Stehen in der ".txt"-Datei die Einträge für "%GEPACKTER ORDNER / ORDERNAME%.rar" und "%AUSGELESENER ORDNERPFAD%"
Vielleicht machen ein paar Zeilen der Textdatei die Sache anschaulicher ...
Grüße
bastla
Kurze Rückfrage: Stehen in der ".txt"-Datei die Einträge für "%GEPACKTER ORDNER / ORDERNAME%.rar" und "%AUSGELESENER ORDNERPFAD%"
- untereinander oder
- paarweise in einer Zeile, oder
- soll "%AUSGELESENER ORDNERPFAD%" erst ermittelt werden?
Vielleicht machen ein paar Zeilen der Textdatei die Sache anschaulicher ...
Grüße
bastla
Hallo Soidberg!
Dann versuch's mal damit:
Es wird vorausgesetzt, dass alle in der Liste angegebenen Pfade mit einem Laufwerksbuchstaben beginnen (und somit für die Festlegung des Namens die ersten 3 Stellen davon weggelassen werden können). Das "echo" in der letzten Zeile sorgt dafür, dass zunächst nur eine Anzeige des "rar"-Befehls erfolgt - wenn alles OK ist, das "echo" einfach entfernen.
Nachtrag: Falls sich die Quelldateien noch in den entsprechenden Ordnern befinden, müsste die letzte Zeile so aussehen:
Grüße
bastla
[Edit] Alternative Pfadangabe hinzugefügt [/Edit]
Dann versuch's mal damit:
@echo off & setlocal
set "Liste=D:\Liste mit RAR-Verzeichnissen.txt"
for /f "usebackq delims=" %%i in ("%Liste%") do call :ProcessDir "%%~i"
goto :eof
:ProcessDir
set "OPfad=%~1"
set "OName=%OPfad:~3%"
set "OName=%OName:\=_%
echo rar a -sfx "%OName%.rar" "%OPfad%"
Nachtrag: Falls sich die Quelldateien noch in den entsprechenden Ordnern befinden, müsste die letzte Zeile so aussehen:
echo rar a -sfx "%OPfad%\%OName%.rar" "%OPfad%"
Grüße
bastla
[Edit] Alternative Pfadangabe hinzugefügt [/Edit]
@miniversum
Mir ging's gestern so ähnlich ...
Ein Oneliner wird hier übrigens eher nicht reichen, wenn Du Dir oben noch einmal die Beispiele ansiehst - es soll nämlich anscheinend aus dem gesamten Pfad ein Dateiname werden, wobei die "\" durch "_" zu ersetzen sind - zumindest habe ich das so interpretiert.
Außerdem wirst Du mit dem "%%~pa" das letzte Unterverzeichnis verlieren (aber dafür eher unerwünschte "\" am Anfang und Ende erhalten), wenn in der Liste nur Verzeichnisse angeführt sind ...
Grüße
bastla
Mir ging's gestern so ähnlich ...
Ein Oneliner wird hier übrigens eher nicht reichen, wenn Du Dir oben noch einmal die Beispiele ansiehst - es soll nämlich anscheinend aus dem gesamten Pfad ein Dateiname werden, wobei die "\" durch "_" zu ersetzen sind - zumindest habe ich das so interpretiert.
Außerdem wirst Du mit dem "%%~pa" das letzte Unterverzeichnis verlieren (aber dafür eher unerwünschte "\" am Anfang und Ende erhalten), wenn in der Liste nur Verzeichnisse angeführt sind ...
Grüße
bastla
Moin Soidberg,
erstmal danke für Deinen Musterbatch... gefällt mir gut
Dann mach ich hier mal dicht.
Sollten doch noch unerwartet etc etc.... dann PN an mich, dann öffne ich den Thread wieder.
Schönes Wochenende
Biber
Nachtrag 6.5.2007: Auf PN-Anforderung von Soidberg wieder geöffnet.
erstmal danke für Deinen Musterbatch... gefällt mir gut
sollte noch etwas sein (Veränderungen, Probleme) werde ich mich hier direkt wieder melden.
Hmm, ist ja anscheinend nicht eingetreten, der Problemfall...Dann mach ich hier mal dicht.
Sollten doch noch unerwartet etc etc.... dann PN an mich, dann öffne ich den Thread wieder.
Schönes Wochenende
Biber
Nachtrag 6.5.2007: Auf PN-Anforderung von Soidberg wieder geöffnet.
Hallo Soidberg!
Du könntest folgenden Batch "davorschalten":
Mit der Verwendung des "move"-Befehles wird gleichzeitig die "Packbareordner.rtf" umbenannt (bleibt als Sicherung bis zur nächsten Ausführung des Batches erhalten) und eine vorhandene alte "PackTemp.rtf" gelöscht.
In die neue "Packbareordner.rtf" werden nur Pfade aufgenommen, deren Beginn mit einem Pfad der "dir.cfg" übereinstimmt (kann daher nur der selbe Pfad oder ein Unterordner sein).
Das type "%Pack%" steht nur zu Testzwecken da, um sofort das Ergebnis angezeigt zu erhalten und wird in der fertigen Version natürlich nicht benötigt.
Grüße
bastla
P.S.: Nicht sehr ausführlich getestet ...
[Edit] Falls dieser Überprüfungs-Batch in die ursprüngliche Fassung integriert werden soll, müsste das Unterprogramm :ProcessDir umbenannt werden, da oben schon die gleiche Sprungmarke verwendet wurde. [/Edit]
Du könntest folgenden Batch "davorschalten":
@echo off & setlocal
set "cfg=dir.cfg"
set "Pack=Packbareordner.rtf"
set "PackTemp=PackTemp.rtf"
move /y "%Pack%" "%PackTemp%"
for /f "usebackq delims=" %%i in ("%PackTemp%") do call :ProcessDir "%%i"
::zum Testen: Anzeige Ergebnisdatei
type "%Pack%"
goto :eof
:ProcessDir
set ok=
for /f "usebackq delims=," %%v in ("%cfg%") do echo %~1|findstr /i /b "%%v">nul && set ok=True
if not defined ok goto :eof
echo %~1>>"%Pack%"
In die neue "Packbareordner.rtf" werden nur Pfade aufgenommen, deren Beginn mit einem Pfad der "dir.cfg" übereinstimmt (kann daher nur der selbe Pfad oder ein Unterordner sein).
Das type "%Pack%" steht nur zu Testzwecken da, um sofort das Ergebnis angezeigt zu erhalten und wird in der fertigen Version natürlich nicht benötigt.
Grüße
bastla
P.S.: Nicht sehr ausführlich getestet ...
[Edit] Falls dieser Überprüfungs-Batch in die ursprüngliche Fassung integriert werden soll, müsste das Unterprogramm :ProcessDir umbenannt werden, da oben schon die gleiche Sprungmarke verwendet wurde. [/Edit]