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

Ausgedruckt am: 28.03.2024 um 23:03 Uhr

Mitglied: copro
copro 24.08.2005 um 01:03:36 Uhr
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?
Mitglied: Biber
Biber 24.08.2005 um 09:10:56 Uhr
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
Mitglied: copro
copro 24.08.2005 um 15:15:44 Uhr
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 ;)