copro
Goto Top

Batch: Alle Zeilen aus txt abarbeiten

Alle Zeilen aus txt abarbeiten

Hallo zusammen

Ich habe folgendes Problem:

Ich habe mir ein Script geschrieben das beim Herunterfahren meinen Desktop säubert.

Da ich nicht jede Endung in einen eigenen Ordner schmeissen will und zudem z.B. ein Zip Datei auch ein Treiber, Bilder usw. sein kann, werden nur bestimmte Endungen wie .exe in tools verschoben oder .psd in design usw. der "Rest" kommt in den Ordner Misc.

Nun stehe ich vor dem Problem, dass wenn ein Ordner vorhanden ist, der leer erstellt wird in jedem Ordner obwoh er da nix zu suchen hat.

Kein Problem dachte ich mir, verschieben wir alle Ordner zuerst bevor dann die Abfrage mit den Endungen beginnt.

Das habe ich wie folgt versucht:
DIR /B /AD "%userprofile%\desktop\" > c:\list.txt  
For /F %%a IN (c:\list.txt) DO xcopy /E /Y "%userprofile%\desktop\%%a" "e:\desktop\%date%\Misc\"  
For /F %%a IN (c:\list.txt) DO rd /S /Q "%userprofile%\desktop\%%a"   
Beim ersten Ordner klappt das ganz gut. Beim zweiten wird nur der Inhalt kopiert und der Dritte ignoriert... Woran kann das liegen?
Oder gibt es eine andere möglichkeit dies abzufangen, schliesslich wäre es ja schön wenn ein Ordner mit MP3's im Ordner Sound liegt und nicht in Misc.

Ja ich habe beim xcopy befehl die parameter /E /S aktiviert, doch die benötige ich, falls ein cms oder so auf dem Desktop liegt. Da kann es schon sein das ein Ordner leer ist aber dennoch benötigt wird und sollte nicht einfach so ignoriert werden...

Hoffe man versteht was ich meine =)
Danke im Voraus für die Hilfe
MFG

Content-Key: 14808

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

Printed on: April 19, 2024 at 20:04 o'clock

Member: copro
copro Aug 23, 2005 at 23:03:36 (UTC)
Goto Top
Ok ich weiss jetzt wo das Problem ist...
Die Leerzeichen aus der list.txt!

For /F %%g IN (C:\LIST:TXT) DO xcopy /S /E /Y "%userprofile%\desktop\%%g" "e:\desktop\%date%\Misc\"

Dieses List.txt müsste quasi in Anführungszeichen stehen.
Mit usebackq hats nicht geklappt weiss jemand wie ich das bewerkstellige?
Member: Biber
Biber Aug 24, 2005 at 07:10:56 (UTC)
Goto Top
For /F %%g IN (C:\LIST.TXT) DO xcopy /S /E /Y "%userprofile%\desktop\%%g" "e:\desktop\%date%\Misc\"

Dieses List.txt müsste quasi in Anführungszeichen stehen.

Eine der vielen Möglichkeiten wäre mit "Delims=", eine andere mit "Tokens=*" (s. "FOR /?"):
For /F "delims=" %%g IN (C:\LIST.TXT) DO xcopy /S /E /Y "%userprofile%\desktop\%%g" "e:\desktop\%date%\Misc\"

HTH Frank / der Biber aus Bremen
Member: copro
copro Aug 24, 2005 at 13:15:44 (UTC)
Goto Top
Jopp genau hattes es gestern Nacht noch heraus gefunden...
So geht das ganze wunderbar.

DIR /B /AD "%userprofile%\desktop\" > c:\list.txt
For /F "tokens=*" %%g IN (c:\list.txt) DO xcopy /S /E /Y "%userprofile%\desktop\%%g" "e:\desktop\%date%\Misc\%%g"
For /F "tokens=*" %%g IN (c:\list.txt) DO rd /S /Q "%userprofile%\desktop\%%g"

THX trozdem ;)