Datei aus txt verschieben per batch
Hallo,
habe eine Batch geschrieben, diese soll rar dateien die in ner txt stehen verschieben..
klappt soweit, esseidenn es sind part1.rar, part2.rar usw..
in der rars.txt steht sowas:
Pfad\datei.rar
oder
Pfad\datei1.part1.rar
in der Batch:
for /f "delims=" %%i in (Rars.txt) do move /Y %%i D:\Download\
wenn ich das ausführe wird immer nur die datei.rar kopiert oder die datei1.part1.rar
aber folgedateien wie (datei1.part2.rar) verschiebt es nicht mit,
wäre aber praktisch..
jemand eine idee?
danke
habe eine Batch geschrieben, diese soll rar dateien die in ner txt stehen verschieben..
klappt soweit, esseidenn es sind part1.rar, part2.rar usw..
in der rars.txt steht sowas:
Pfad\datei.rar
oder
Pfad\datei1.part1.rar
in der Batch:
for /f "delims=" %%i in (Rars.txt) do move /Y %%i D:\Download\
wenn ich das ausführe wird immer nur die datei.rar kopiert oder die datei1.part1.rar
aber folgedateien wie (datei1.part2.rar) verschiebt es nicht mit,
wäre aber praktisch..
jemand eine idee?
danke
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 87219
Url: https://administrator.de/forum/datei-aus-txt-verschieben-per-batch-87219.html
Ausgedruckt am: 11.04.2025 um 09:04 Uhr
14 Kommentare
Neuester Kommentar
Hallo chizophren!
Wenn Du in "rars.txt" immer nur die erste Schreibweise (also "Pfad\datei.rar") verwendest, könntest Du es so versuchen (ungetesteter Ansatz):
Das "/Y" beim "move" kannst Du Dir in einem Batch übrigens schenken.
Grüße
bastla
Wenn Du in "rars.txt" immer nur die erste Schreibweise (also "Pfad\datei.rar") verwendest, könntest Du es so versuchen (ungetesteter Ansatz):
for /f "delims=" %%i in (Rars.txt) do move "%%i" D:\Download\ 2>nul & move "%%~dpni.part?%%~xi" D:\Download\ 2>nul
Grüße
bastla
Hallo chizophren!
Gar nichts mehr ist dann ja echt wenig ...
Wie erwähnt, setzt die obige Variante einen Eintrag ohne enthaltenes ".part" voraus (auch wenn es mehrere Teile sind) - daher sollte in der "rars.txt" stehen:
Wenn dann noch anstelle des "?" ein "*" verwendet wird, sollte es so eigentlich klappen:
Da es ja nur eine Zeile ist, kannst Du diese auch direkt aus der Konsole testen - dann aber nur jeweils ein "%"-Zeichen schreiben.
Grüße
bastla
Gar nichts mehr ist dann ja echt wenig ...
Wie erwähnt, setzt die obige Variante einen Eintrag ohne enthaltenes ".part" voraus (auch wenn es mehrere Teile sind) - daher sollte in der "rars.txt" stehen:
D:\Irgend ein Pfad\GrosseRARdatei.rar
for /f "delims=" %%i in (Rars.txt) do move "%%i" D:\Download\ 2>nul & move "%%~dpni.part*%%~xi" D:\Download\ 2>nul
Grüße
bastla
Hallo chizophren!
Dann eben so:
Grundannahme ist hier, dass nur eine ".rar"- oder eine ".part1.rar"-Datei in der Liste vorkommt.
Grüße
bastla
Dann eben so:
@echo off & setlocal
set "Source=D:\rars.txt"
set "Target=D:\Download\"
for /f "usebackq delims=" %%i in ("%Source%") do call :ProcessFile "%%i"
goto :eof
:ProcessFile
set "Rar=%~1"
set "Rar=%Rar:.part1.=.part*.%
move "%Rar%" "%Target%">nul
goto :eof
Grüße
bastla
Hallo chizophren!
Ändere zum Testen das "@echo off" in der ersten Zeile in ein "@echo on" und starte den Batch von der Kommandozeile aus - da dann alle Befehle vor ihrer Ausführung angezeigt werden, solltest Du erkennen können, wo es hakt ...
Grüße
bastla
aber in der txt stehen ja mehrer dateien drin, kann das deswegen nich gehen?
Mit der Dateianzahl hat das nix zu tun - gemeint war nur, dass etwa eine angegebene ".part3.rar"-Datei nicht verarbeitet würde, sondern es nur mit ".part1.rar" oder ".rar" funktionieren kann.Ändere zum Testen das "@echo off" in der ersten Zeile in ein "@echo on" und starte den Batch von der Kommandozeile aus - da dann alle Befehle vor ihrer Ausführung angezeigt werden, solltest Du erkennen können, wo es hakt ...
Grüße
bastla
Hallo chizophren!
Da Du es anscheinend bevorzugst, Dateinamen oder Pfade direkt in die Befehle zu schreiben, anstatt sie, wie vorgeschlagen, am Anfang per "set" festzulegen, musst Du natürlich auch "%Target%" durch "D:\Downloads\" ersetzen.
Dein eingefügtes "echo processfile rars set" gibt noch mehr Info her, wenn Du es etwa so formulierst:
Grüße
bastla
Da Du es anscheinend bevorzugst, Dateinamen oder Pfade direkt in die Befehle zu schreiben, anstatt sie, wie vorgeschlagen, am Anfang per "set" festzulegen, musst Du natürlich auch "%Target%" durch "D:\Downloads\" ersetzen.
Dein eingefügtes "echo processfile rars set" gibt noch mehr Info her, wenn Du es etwa so formulierst:
echo processfile %Rar%
Grüße
bastla
Hallo chizophren!
Versuch es mal mit dieser Variante:
Grüße
bastla
P.S.: Für das Posten von Code hätten wir eine eigene Formatierungen in den Beiträgen.
habe die rar-variable mal ausgegeben, da scheint nichts drin zu stehen, erfolgt keine ausgabe..
Das hieße aber, dass im Unterprogramm nichts ankommt, was eigentlich nur bei einer leeren Textdatei möglich wäre ...Versuch es mal mit dieser Variante:
@echo off & setlocal
for /f "usebackq delims=" %%i in ("D:\download\rars2delete3.txt") do set "Rar=%%i" & echo Gelesene Zeile: %%i & call :ProcessFile
echo step1
goto :eof
:ProcessFile
set "Rar=%Rar:.part1.=.part*.%
echo Bearbeiteter Pfad: %Rar%
move "%Rar%" "%Target%"
goto :eof
Grüße
bastla
P.S.: Für das Posten von Code hätten wir eine eigene Formatierungen in den Beiträgen.
Hallo chizophren!
Der Grund dafür, dass die "Y.part*.rar" nicht berücksichtigt werden, kann eigentlich nur in der Listendatei zu finden sein - der Batch in der Version vom 12.05. versucht, jede Zeile der Liste zu lesen und weiter zu bearbeiten (und dokumentiert dies auch durch eine entsprechende Ausgabe).
Versuch einmal, von Hand eine entsprechende Liste zu erstellen und damit zu testen ...
Grüße
bastla
Der Grund dafür, dass die "Y.part*.rar" nicht berücksichtigt werden, kann eigentlich nur in der Listendatei zu finden sein - der Batch in der Version vom 12.05. versucht, jede Zeile der Liste zu lesen und weiter zu bearbeiten (und dokumentiert dies auch durch eine entsprechende Ausgabe).
Versuch einmal, von Hand eine entsprechende Liste zu erstellen und damit zu testen ...
Grüße
bastla