zensbert
Goto Top

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

Content-Key: 87219

Url: https://administrator.de/contentid/87219

Printed on: April 25, 2024 at 23:04 o'clock

Member: bastla
bastla May 08, 2008 at 13:45:44 (UTC)
Goto Top
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):
for /f "delims=" %%i in (Rars.txt) do move "%%i" D:\Download\ 2>nul & move "%%~dpni.part?%%~xi" D:\Download\ 2>nul  
Das "/Y" beim "move" kannst Du Dir in einem Batch übrigens schenken.

Grüße
bastla
Member: zensbert
zensbert May 08, 2008 at 14:05:01 (UTC)
Goto Top
Ehrlich gesagt verschiebt der so gar nichts mehr...
in der txt steht immer nur part1 egal wieviel andere parts mit gleichen namen existieren..

vll. hilft das ja;
"d:\Download\GrosseRARdatei.part1.rar"

aber schonmal danke..
Member: bastla
bastla May 08, 2008 at 14:53:46 (UTC)
Goto Top
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:
D:\Irgend ein Pfad\GrosseRARdatei.rar
Wenn dann noch anstelle des "?" ein "*" verwendet wird, sollte es so eigentlich klappen:
for /f "delims=" %%i in (Rars.txt) do move "%%i" D:\Download\ 2>nul & move "%%~dpni.part*%%~xi" D:\Download\ 2>nul  
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
Member: zensbert
zensbert May 08, 2008 at 17:05:19 (UTC)
Goto Top
hi,

ja, aber das problem ist, dass diese einträge automatisiert erstellt werden, also nicht von hand.
ich sag mal so grob worums geht,

-winrar entpackt per batch archive mit meist mehrern parts und schreibt erfolgreich
entpackte archiv in o.g. format in txt
-die erfolgreich entpackten sollen von ordner a nach ordner b verschoben werden

das is schon alles..


gruß..
Member: bastla
bastla May 08, 2008 at 18:07:48 (UTC)
Goto Top
Hallo chizophren!

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
Grundannahme ist hier, dass nur eine ".rar"- oder eine ".part1.rar"-Datei in der Liste vorkommt.

Grüße
bastla
Member: zensbert
zensbert May 08, 2008 at 22:43:04 (UTC)
Goto Top
servus,
kopiert so immer noch nicht, aber in der txt stehen ja mehrer dateien drin, kann das deswegen nich
gehen?
also
datei1.part1.rar
datei2.part1.rar
.
.


thx
Member: bastla
bastla May 09, 2008 at 05:21:51 (UTC)
Goto Top
Hallo chizophren!

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
Member: zensbert
zensbert May 09, 2008 at 07:17:14 (UTC)
Goto Top
hi,
also so siehts aus, das ist die batch:
for /f "usebackq delims=" %%i in ("D:\download\rars2delete3.txt") do call :ProcessFile "%%i"
echo step1
goto :eof

:ProcessFile
set "Rar=%~1"
set "Rar=%Rar:.part1.=.part*.%
echo processfile rars set
move "%Rar%" "%Target%"
echo move order
so die ausgabe :

processfile rars set
Das System kann die angegebene Datei nicht finden.
move order
step1

der pfad zur txt stimmt aber..
ne idee?
Member: bastla
bastla May 09, 2008 at 07:42:39 (UTC)
Goto Top
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:
echo processfile %Rar%

Grüße
bastla
Member: zensbert
zensbert May 09, 2008 at 10:09:00 (UTC)
Goto Top
hatte das nur gemacht um fehler auszuschliessen, is mir relativ ob ich da ne variable aufrufe oder
den pfad hinschreibe^^,
habe die rar-variable mal ausgegeben, da scheint nichts drin zu stehen, erfolgt keine ausgabe..

danke..
Member: bastla
bastla May 12, 2008 at 09:54:07 (UTC)
Goto Top
Hallo chizophren!

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 Formatting instructions in the posts.
Member: zensbert
zensbert May 12, 2008 at 20:25:45 (UTC)
Goto Top
danke..
so hats geklappt,
finde es sehr nett von dir das du deine zeit geopfert hast..

nochmals danke^^
Member: zensbert
zensbert Jul 07, 2008 at 09:54:18 (UTC)
Goto Top
Hmm, habe aber festgestellt dass immer nur die ersten RARs kopiert werden, sprich:
X.part1.rar und X.part2.rar
Y.part1.rar und Y.part2.rar
stehen in der txt, aber er schiebt nur die X (Part 1 und 2)...
was kann man da tun??

Thx im voraus..
Member: bastla
bastla Jul 15, 2008 at 14:08:34 (UTC)
Goto Top
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