Batch zum Kopieren von Dateien aus Unterverzeichnissen?
In einem Ordner "ALLE" befindet sich folgende Verzeichnisstruktur:
ALLE
> ANTON
> AUS_ANTON.txt
> BERTA
> AUS_BERTA.txt
> CARLA
> AUS_CARLA.txt
> DORTE
> AUS_DORTE.txt
> MEINE_BATCH.bat
Also vier Ordner: ANTON, BERTA, CARLA und DORTE und meine Batchdatei, um die es hier geht. In den Ordnern liegt jeweils eine Textdatei vom Typ "AUS_...".
Nun will ich die Textdateien aus den Ordnern in den Ordner "ALLE" kopieren.
Wie geht das? Ob mir vielleicht gleich jemand den Code posten kann?
Danke,
Dernort
Sorry, aber irgendwie uebernimmt die Webseite meine Formatierung nicht. Aber die Beschreibung erklaert das Problem ja.
2 Antworten
Es gibt verschieden Command-Line Tools die das können, hier mal ein Beispiel:
xcopy c:\ordner1\dateixy.z c:\ordner2\
/D : nur neuere Dateien
/Y Dateien ohne Nachfragen überschreiben
Diese Zeile würde eine Datei von Ordner in Ordner 2 kopieren.
Wie gesagt gibt auch noch andere Tools, wie robocopy, google hilft ;)!
Mit freundlichen Grüßen
Vielen Dank! Fuer einen Profi muesste das eine triviale Aufgabe sein. Leider bin ich blutiger Anfaenger. Ob Du wohl so nett waerest, mir den Code fuer meine Aufgabe zu posten? Ich glaube, so lerne ich das am schnellsten. Nochmal herzlichen Dank!
xcopy oder auch robocopy sind die falschen Befehle um einzelne Dateien aus einer Ordnerstruktur an einen anderen Ort zu verfrachten. (im Prinzip gibt es keinen fertigen Befehl der dies kann)
...Also bastelb wir uns einen...
@echo off
rem Umlaute anzeigen
chcp 65001 >nul
rem hier Ziehlordner angeben (in dieser Demo: %~dp0=Pfad dieser Batch)
set "Zielordner=%~dp0"
rem evtl Backslash am Ende entfernen
if "%Zielordner:~-1%"=="\" set "Zielordner=%Zielordner:~,-1%"
rem einfach mal anzeigen wohin die Reise geht...
echo Zielordner: %Zielordner%"
rem was die gesuchten Dateien gemeinsam haben: (stern bedeute "alles Mögliche" , ein Joker)
set "Dateimaske=AUS_*.txt"
rem wenn ZielOrdner nicht existiert, diesen neu erstellen (Fehlermeldung wenn existiert unterdrücken)
md "%ZielOrdner%" 2>nul
rem Batchordner und Unterverzeichnisse nach Dateimaske durchsuchen (schalter /b nackte Pfadeliste anzeigen , /s Unterordner recoursiv einbziehen, /a:-o ordnerPfade im Ergebnis ausblenden)
rem for /f gibt lediglich das Ergebnis der Suche mit "DIR /B..." an auszuführenden Kommandos weiter....
for /f "tokens=*" %%a in ('dir /b /s /a:-o "%Dateimaske%"') do (
echo Datei ###%%~a### gefunden
rem kopiere in %%a Dateien übergenene Dateien nach Zielordner\gleicherDateiname
copy "%%~a" "%Zielordner%\*.*"
)
nocmal dateien Ordner anzeigen
dir
pause
Toll! Vielen Dank, da muss ich mich erstmal durcharbeiten.