Verwandte Beiträge
- Per Batch inhalte eines Ordners in eine Log-Datei ausgeben (4)
- Anführungszeichen per Batch aus Datei löschen (11)
- Batch - Alle Dateien umbenennen (3)
- Per Batch (Text-)Datei ohne Text erzeugen (10)
- Per Batch nach Datei in Ordner suchen, dann umbenennen, dann kopieren (19)
- Batch - alle Datei außer ... löschen - DEL negieren (6)
- Per Batch automatisch Dateien vom Vormonat mit rar komprimieren (72)
- per batch excel-datei schreiben (2)
- per Batch, Inhalt eines Ordners nach Größe sortiert auflisten (2)
- per Batch neuste Datei öffnen und bestimmtes Muster auslesen (7)
- Einträge per Batch aus Datei löschen (11)
- per Batch alle Rechner im Netz herunterfahren (3)
- mit batch alle dateien in text1 text2...umbenennen (2)
- Per Batch bereits importierte Ordner erkennen (7)
- Netzwerküberwachung per Batch Script - Datei ab bestimmter größe Löschen? (13)
- per batch bestimmte Dateien in einer Ordnerstruktur löschen (2)
- Per Batch nach bestimmten Ordnern und Dateien suchen (8)
- Per Batch alle Laufwerkbuchstaben auslesen aber Netzlaufwerke und CD-ROM ignorieren (27)
- Per Batch TXT-Datei editieren (6)
- mehr >>
Frage im Bereich
per Batch alle dateien eines Ordners jeweils in einen Ordner der den Namen der Datei erhält verschieben.
Geschrieben von paulkuhn am 2009/01/26 um 15:17:59 Uhr, 6 Antworten, 1380 Aufrufe, Status: gelöst
Hallo...
habe folgendes Batch-Anliegen:
Es sollen in einer Schleife alle Dateien (z.B. 123.pdf, 456.pdf, 456.log) eines Ordners z.B. (x:\in\) jeweils verschoben werden in einen Ordner mit Namen der Datei z.B. x:\123\123.pdf, x:\456\456.pdf und x:\456\456.log.
Dateien mit gleichem Dateinamen aber anderer Endung soll im gleichen Zielordner landen. Meist ist dieser Zielordner korrekt bezeichnet schon vorhanden, in wenigen Fällen nicht. Hier sollte der Ordner also vorher angelegt werden.
Der Dateiname ist in der Länge nicht fix. Die Batch-Datei wird nicht vom gleichen Ordner aufgerufen...
Für die meisten hier sicher trivial. Leider nicht für mich. Bin für alle Tipps dankbar...
habe folgendes Batch-Anliegen:
Es sollen in einer Schleife alle Dateien (z.B. 123.pdf, 456.pdf, 456.log) eines Ordners z.B. (x:\in\) jeweils verschoben werden in einen Ordner mit Namen der Datei z.B. x:\123\123.pdf, x:\456\456.pdf und x:\456\456.log.
Dateien mit gleichem Dateinamen aber anderer Endung soll im gleichen Zielordner landen. Meist ist dieser Zielordner korrekt bezeichnet schon vorhanden, in wenigen Fällen nicht. Hier sollte der Ordner also vorher angelegt werden.
Der Dateiname ist in der Länge nicht fix. Die Batch-Datei wird nicht vom gleichen Ordner aufgerufen...
Für die meisten hier sicher trivial. Leider nicht für mich. Bin für alle Tipps dankbar...
Veröffentlichen Sie diesen Beitrag in Ihrem sozialen Netzwerk
6 Antworten
2
paulkuhn schreibt am 2009/01/26 um 17:35:32 Uhr
Hmm...
zunächst Danke für den Hinweis.
Ich hätte das Problem aber gern nur mit Batchscript gelöst, ohne Aufruf zusätzlicher Tools.
Allerdings strauchele ich schon in der for-schleife bei dem korrekten Auslesen des Parameters (Dateiname ohne Endung)
zunächst Danke für den Hinweis.
Ich hätte das Problem aber gern nur mit Batchscript gelöst, ohne Aufruf zusätzlicher Tools.
Allerdings strauchele ich schon in der for-schleife bei dem korrekten Auslesen des Parameters (Dateiname ohne Endung)
3
Biber schreibt am 2009/01/26 um 18:53:17 Uhr
Moin paulkuhn,
willkommen im Forum.
Im Prinzip brauchst Du nur ein bis zwei Zeilen vom CMD-Prompt für Dein Vorhaben.
Eine zeile, um das (eventuell) noch nicht vorhandene verzeichnis anzulegen und eine Anweisung, um die Dateien in dieses Verzeichnis zu MOVEn.
Demo am CMD-Prompt [einzugebene Zeilen beginnen mit ">"]
Bei meiner vorhandenen Datei d:\temp1\sy6help.pdf würde als ECHO herauskommen:
In einem Batch auf ALLE Dateien angewandt (nicht nur auf *.pdf) sähe das so aus:
[Edit] ungetestete Skizze - aber erkennbar (s.u.) [/Edit]
Dieses ganze kryptische %%~pdnxi-Geraffel ist nur in den ersten zwei Leseversuchen unverständlich,
mit der Hilfe zu FOR/? im unteren Drittel hast Du den Code schnell geknackt.
Grüße
Biber
willkommen im Forum.
Im Prinzip brauchst Du nur ein bis zwei Zeilen vom CMD-Prompt für Dein Vorhaben.
Eine zeile, um das (eventuell) noch nicht vorhandene verzeichnis anzulegen und eine Anweisung, um die Dateien in dieses Verzeichnis zu MOVEn.
Demo am CMD-Prompt [einzugebene Zeilen beginnen mit ">"]
01.
> for %i in (d:\temp1\*.pdf) do @echo if not exist "%~dpi%~ni" md "%~dpi%~ni" 02.
> for %i in (d:\temp1\*.pdf) do @echo move "%i" "%~dpi%~ni\*.*"01.
if not exist "d:\temp1\sy6help" md "d:\temp1\sy6help" 02.
move "d:\temp1\sy6help.pdf" "d:\temp1\sy6help\*.*"In einem Batch auf ALLE Dateien angewandt (nicht nur auf *.pdf) sähe das so aus:
01.
::------snipp MoveIntoSubdirs.cmd 02.
@FOR %%i IN (d:\EinStartVerzeichnis\*.*) do @( 03.
IF NOT EXIST "%%~dpi%%~ni" MD "%%~dpi%%~ni" 04.
MOVE "%%i" "%%~dpi%%~ni\" 05.
)Dieses ganze kryptische %%~pdnxi-Geraffel ist nur in den ersten zwei Leseversuchen unverständlich,
mit der Hilfe zu FOR/? im unteren Drittel hast Du den Code schnell geknackt.
Grüße
Biber
4
paulkuhn schreibt am 2009/01/26 um 20:01:03 Uhr
Sauber...
Funktioniert nach einigen kleinen Änderungen sofort.
Es musste noch ein Leerzeichen zwischen IN und der Klammer und der Move-Befehl muss ohne *.* am Ende abgesetzt werden.
Dank dir sehr...
Aber:
was muss geändert werden, damit die Erstellung der Ordner und das Verschieben nicht in Unterordnern des Hauptordners stattfindet, sondern eine Ebene höher.
Also:
Hauptordner ist c:\test\out, darin befinden sich die Dateien, z.B. 157.pdf und 158.pdf
Die neuen Ordner sollen in c:\test\ erstellt werden und entsprechend die Datein von c:\test\out in die neuen Ordner auf c:\test\157\ und c:\test\158\ verschoben werden.
Gruß Paule
Funktioniert nach einigen kleinen Änderungen sofort.
Es musste noch ein Leerzeichen zwischen IN und der Klammer und der Move-Befehl muss ohne *.* am Ende abgesetzt werden.
Dank dir sehr...
Aber:
was muss geändert werden, damit die Erstellung der Ordner und das Verschieben nicht in Unterordnern des Hauptordners stattfindet, sondern eine Ebene höher.
Also:
Hauptordner ist c:\test\out, darin befinden sich die Dateien, z.B. 157.pdf und 158.pdf
Die neuen Ordner sollen in c:\test\ erstellt werden und entsprechend die Datein von c:\test\out in die neuen Ordner auf c:\test\157\ und c:\test\158\ verschoben werden.
Gruß Paule
5
Biber schreibt am 2009/01/26 um 21:58:20 Uhr
Moin paulkuhn,
ausgerechnet bei dem letzten Kommentar habe ich NICHT druntergeschrieben "[ungetestete Skizze]"...*g
Ich korrigier es gleich oben.
Zu Deiner Frage: Wenn Du ein "festes" neues Root-Zeilverzeichnis hast:
--> ganz klar, dann schreib es fest rein in die (ohnehin nur eine) Zeile.
Dann wird im ersten Wurf daraus:
...und wenn es bisschen wartbarer werden soll:
[ungetestete Skizze]
Grüße
Biber
ausgerechnet bei dem letzten Kommentar habe ich NICHT druntergeschrieben "[ungetestete Skizze]"...*g
Ich korrigier es gleich oben.
Zu Deiner Frage: Wenn Du ein "festes" neues Root-Zeilverzeichnis hast:
--> ganz klar, dann schreib es fest rein in die (ohnehin nur eine) Zeile.
Dann wird im ersten Wurf daraus:
01.
::------snipp MoveIntoSubdirsV2.cmd 02.
@FOR %%i IN(d:\EinStartVerzeichnis\*.*) do @( 03.
IF NOT EXIST "C:\test%%~ni" MD "c:\test%%~dpi%%~ni" 04.
MOVE "%%i" "c:\test%%~ni\" 05.
)01.
::------snipp MoveIntoSubdirsV3.cmd 02.
@echo off & setlocal 03.
Set "QuellRoot=d:\EinStartVerzeichnis" 04.
Set "ZielRoot=D:\test" 05.
@FOR %%i IN ("%QuellRoot%\*.*") do @( 06.
IF NOT EXIST "%ZielRoot%\%%~ni" MD "%zielRoot%\%%~dpi%%~ni" 07.
MOVE "%%i" "%ZielRoot%\%%~ni\" 08.
)Grüße
Biber
6
paulkuhn schreibt am 2009/01/27 um 10:06:22 Uhr
Nochmal einen herzlichen Dank!!!
Abgesehen von den überaus kompetenten Antworten ist besonders Prima,
daß sogar Anleitungen zum besseren Verständniss des Codes gegeben werden (in den einleitenden Blöcken, mit Hinweis auf die "Debug-Möglichkeit" mit @echo).
Das hat mir sehr geholfen, so das ich tatsächlich spät am Abend noch selbstständig auf eine ähnliche Lösung gekommen bin.
(Allerdings jeweils festverdrahtet, ohne Nutzung von Variablen für die Verzeichnisse) Dein neuer Code ist natürlich viel besser. Evtl. werde ich das noch so erweitern, das diese Source und Target-Variablen aus ner externen Datei eingelesen werden(Diese aus DB generiert) So das alles ohne weiteres editieren flutscht. Dazu gibt es hier ja reichlich Anleitungen und Hilfestellung. Toll, wie ein paar wenige Zeilen ein Problem lösen können....
Top!!!
Gruß Paule
Abgesehen von den überaus kompetenten Antworten ist besonders Prima,
daß sogar Anleitungen zum besseren Verständniss des Codes gegeben werden (in den einleitenden Blöcken, mit Hinweis auf die "Debug-Möglichkeit" mit @echo).
Das hat mir sehr geholfen, so das ich tatsächlich spät am Abend noch selbstständig auf eine ähnliche Lösung gekommen bin.
(Allerdings jeweils festverdrahtet, ohne Nutzung von Variablen für die Verzeichnisse) Dein neuer Code ist natürlich viel besser. Evtl. werde ich das noch so erweitern, das diese Source und Target-Variablen aus ner externen Datei eingelesen werden(Diese aus DB generiert) So das alles ohne weiteres editieren flutscht. Dazu gibt es hier ja reichlich Anleitungen und Hilfestellung. Toll, wie ein paar wenige Zeilen ein Problem lösen können....
Top!!!
Gruß Paule





http://www.wintotal.de/Artikel/robocopy/r ...
Gruß Rico