Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Möglichkeit per CMD Dateien zu kopieren, welche verteilt sind

Frage Entwicklung Batch & Shell

Mitglied: belanglos

belanglos (Level 1) - Jetzt verbinden

06.03.2009, aktualisiert 10:48 Uhr, 7158 Aufrufe, 7 Kommentare

Hallo,

gibt es eine Möglichkeit, Dateien per CMD kopieren zu lassen, welche auf mehrere Unterverzeichnisse verteilt sind? Problem ist nämlich, dass ich eine Liste mit Dateinamen habe, in welcher aber kein Verzeichnis angegeben ist. Nun möchte ich also, dass DATEI001.txt oder DATEI001.jpg in einem Ordner mit bspw. 100 Unterverzeichnissen gesucht wird und wenn gefunden, in ein vorgegebenes Verzeichnis kopiert wird.

Schon mal vielen Dank im Voraus!

Gruß
Mitglied: Combattent
06.03.2009 um 10:54 Uhr
hallo belanglos,

ich bin jetzt nicht 100% sicher, aber kann das nicht robocopy?
Bitte warten ..
Mitglied: bastla
06.03.2009 um 12:30 Uhr
Hallo belanglos!

Etwa so von der Kommandozeile:
for /f "delims=" %i in ('dir /s /b /a-d D:\Basisverzeichnis\DATEI001.txt') do @echo copy "%i" D:\Zielverzeichnis
bzw mit jeweils %%i als Batch.

Das "echo" vor dem "copy" ist nur zum Testen drin - so wird der Kopierbefehl zunächst nur angezeigt.

Zu beachten wäre noch, dass "copy" in einem Batch ohne Rückfrage bestehende Dateien überschreibt - falls es also mehrere Dateien des gesuchten Namens geben könnte, müsste für diesen Fall vorgesogrt werden.

Grüße
bastla
Bitte warten ..
Mitglied: belanglos
06.03.2009 um 13:21 Uhr
Mein Problem ist aber, dass ich ja nicht weiß, in welchem Verzeichnis die Dateien sind. Du hast ja jetzt ein Verzeichnis mit angegeben.

Wie stelle ich das denn dann an, wenn ich die Dateien Datei1.jpg, Datei2.jpg, Datei99.jpg usw (sind ca. 5000 Dateien) im Hauptverzeichnis inkl. Unterverzeichnisse suchen lassen möchte und diese dann zum Ziel kopieren lassen möchte?
Bitte warten ..
Mitglied: bastla
06.03.2009 um 15:23 Uhr
Hallo belanglos!
Mein Problem ist aber, dass ich ja nicht weiß, in welchem Verzeichnis die Dateien sind. Du hast ja jetzt ein Verzeichnis mit angegeben.
Ich erwarte oder verlange ja kein Vertrauen - Du hättest doch auch einfach testen können ...

... und übrigens: Ich habe nicht nur ein (Start-)Verzeichnis, sondern auch "/s" angegeben.

Wie stelle ich das denn dann an, wenn ich die Dateien Datei1.jpg, Datei2.jpg, Datei99.jpg usw (sind ca. 5000 Dateien) im Hauptverzeichnis inkl. Unterverzeichnisse suchen lassen möchte und diese dann zum Ziel kopieren lassen möchte?
Wenn Du bereits eine Liste davon hast (etwa D:\Liste.txt), dann etwa so:
01.
@echo off & setlocal 
02.
set "Basis=D:\" 
03.
set "Ziel=X:\Archiv" 
04.
set "Liste=D:\Liste.txt" 
05.
 
06.
for /f "usebackq delims=" %%d in ("%Liste%") do for /f "delims=" %%i in ('dir /s /b /a-d "%Basis%%%d" 2^>nul') do @echo copy "%%i" "%Ziel%"
Falls Du doch nicht im Hauptverzeichnis beginnen wolltest, bei der Angabe des "Basis"-Verzeichnisses immer einen "\" an das Ende setzen.

Bei sehr vielen Dateien wird das allerdings etwas langsam sein - in diesem Fall böte es sich an, das Inhaltsverzeichnis in eine Datei zu schreiben und danach diese zu durchsuchen:
01.
@echo off & setlocal 
02.
set "Basis=D:\" 
03.
set "Ziel=X:\Archiv" 
04.
set "Liste=D:\Liste.txt" 
05.
set "DL=%temp%\DL.txt" 
06.
 
07.
dir /s /b /a-d "%Basis%">%DL% 
08.
for /f "usebackq delims=" %%d in ("%Liste%") do for /f "delims=" %%i in ('findstr /e /i /c:"\\%%d" %DL%') do @echo copy "%%i" "%Ziel%"
Noch die Variante ohne Liste (für "Datei1.jpg" bis "Datei99.jpg"):
01.
echo off & setlocal 
02.
set "Basis=D:\" 
03.
set "Ziel=X:\Archiv" 
04.
 
05.
for /L %%d in (1,1,99) do for /f "delims=" %%i in ('dir /s /b /a-d "%Basis%Datei%%d.jpg" 2^>nul') do @echo copy "%%i" "%Ziel%"
Grüße
bastla
Bitte warten ..
Mitglied: belanglos
09.03.2009 um 09:12 Uhr
Vielen vielen Dank!!!

Habe mir bisher erst eine Batch-Datei mit der Liste erstellt. Klappt aber wunderbar. Noch mal Danke!
Bitte warten ..
Mitglied: seejay
09.06.2009 um 10:35 Uhr
Zitat von bastla:
Zu beachten wäre noch, dass "copy" in einem Batch ohne
Rückfrage bestehende Dateien überschreibt - falls es also
mehrere Dateien des gesuchten Namens geben könnte, müsste
für diesen Fall vorgesogrt werden.

Grüße
bastla


Hallo,

was kann ich dagegen machen, dass die Daten nicht überschrieben werden sondern zum Beispiel etwas angehängt wird (2) (3)...?

Gruß
seejay
Bitte warten ..
Mitglied: bastla
09.06.2009 um 20:20 Uhr
Hallo seejay!

Das könnte (ungetestet) so gehen:
01.
@echo off & setlocal 
02.
set "Basis=D:\" 
03.
set "Ziel=X:\Archiv" 
04.
set "Liste=D:\Liste.txt" 
05.
set "DL=%temp%\DL.txt" 
06.
 
07.
dir /s /b /a-d "%Basis%">%DL% 
08.
for /f "usebackq delims=" %%d in ("%Liste%") do for /f "delims=" %%i in ('findstr /e /i /c:"\\%%d" %DL%') do call :CopyFile "%%i" 
09.
goto :eof 
10.
 
11.
:CopyFile 
12.
set "Zusatz=" 
13.
set /a Nr=1 
14.
:Loop 
15.
if not exist "%Ziel%\%~n1%Zusatz%%~x1" goto :DoIt 
16.
set /a Nr+=1 
17.
set "Zusatz=(%Nr%)" 
18.
goto :Loop 
19.
 
20.
:DoIt 
21.
copy %1 "%Ziel%\%~n1%Zusatz%%~x1" 
22.
goto :eof
Grüße
bastla
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Batch & Shell
Dateien kopieren die nicht mehr verändert werden? (10)

Frage von pbelcl zum Thema Batch & Shell ...

Windows Server
gelöst Administrator kann auf Server keine EXE-Dateien kopieren, löschen, anlegen (5)

Frage von Winfried-HH zum Thema Windows Server ...

Batch & Shell
Nur aktuelle Dateien kopieren (3)

Frage von icke.hausen zum Thema Batch & Shell ...

Batch & Shell
gelöst Script: Dateien kopieren, Benamung anhang von Attributen (4)

Frage von Flexxa zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (33)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...

Windows Netzwerk
Windows 10 RDP geht nicht (18)

Frage von Fiasko zum Thema Windows Netzwerk ...