Top-Themen

Aktuelle Themen (A bis Z)

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

Frage Entwicklung Batch & Shell

Per Batch bzw. Skript Inhalte von Ordnern in andere Ordner mit gleichem Namen verschieben

Mitglied: 1garym

1garym (Level 1) - Jetzt verbinden

03.04.2014 um 22:34 Uhr, 1502 Aufrufe, 17 Kommentare, 1 Danke

Hallo,

ich benötige etwas Unterstützung bei der Umsetzung eines größeren Datenumzugs. Nachfolgende Aufgabe soll möglichst automatisiert ablaufen:

Ich möchte aus einem Ordner (C:\Daten\Projekte\123456_Projektname\Aufgaben\Allgemein) alle Dateien/Ordner an einen neuen Ort (D:\NEU) verschieben. Am neuen Speicherort soll unter D:\Daten der Ordner des Projekts (123456_Projektname) erstellt werden und darin soll dann alles (Ordner, Unterordner und Dateien) aus C:\Daten\Projekte\123456_Projektname\1-Aufgaben\01-Allgemein verschoben werden. Die Ordnernamen der Projekte sind immer nach dem Schema 1234_Projektname bzw. 123456_Projektname angelegt worden. Bei den Projektnamen sind auch Leerzeichen und Umlaute dabei, z.B. 123456_Schöner Wohnen usw.

Ich hab hier im Forum schon viele Beiträge gefunden, aber keine passte so richtig zu meinem Vorhaben. Wäre super, wenn mir jemand helfen könnte.

Vorab besten Dank

Gary
Mitglied: Xaero1982
03.04.2014 um 23:14 Uhr
Moin,

nur zum Verständnis:

Du willst Daten aus dem Ordner:
01.
C:\Daten\Projekte\123456_Projektname\Aufgaben\Allgemein
nach

01.
d:\Daten_der_Ordner_des_Projekts_(123456_Projektname)
verschieben oder nach:

01.
d:\123456_Projektname
?

So richtig klar find ich das nicht.

Dann tuts doch ein simpler Copy-Befehl:

01.
copy c:\daten\projekte\*.* d:\*.*
Gruß
Bitte warten ..
Mitglied: 1garym
04.04.2014, aktualisiert um 06:44 Uhr
Hallo,

sorry, ich versuchs nochmal mit einem übersichtlicheren Beispiel

Quelle der Daten (es gibt über 300 dieser Projektordner unter C:\Daten\Projekte) z.B.:

C:\Daten\Projekte\123456_Huber\Aufgaben\Allgemein
C:\Daten\Projekte\123654_Meier\Aufgaben\Allgemein
C:\Daten\Projekte\3214_Müller\Aufgaben\Allgemein

Der gesamte Inhalt (Dateien und ggf. weitere Ordner) von "Allgemein" soll für jedes Projekt an einen anderen Ort verschoben werden. Der Pfad des Ziels ist D:\Daten\Archiv und am Ende soll es so aussehen:

D:\Daten\Archiv\123456_Huber\(hier jetzt der Inhalt von C:\Daten\Projekte\123456_Huber\Aufgaben\Allgemein)
D:\Daten\Archiv\123654_Meier\(hier jetzt der Inhalt von C:\Daten\Projekte\123654_Meier\Aufgaben\Allgemein)
D:\Daten\Archiv\3214_Müller\(hier jetzt der Inhalt von C:\Daten\Projekte\3214_Müller\Aufgaben\Allgemein)

Es muss also unter D:\Daten\Archiv der jeweilige Projektordner (z.B. "3214_Müller") neu angelegt werden und in diesen dann der Inhalt von "Allgemein" eingefügt werden.

Ich hoffe, dass es jetzt nachvollziehbar ist

Vorab besten Dank
Gary
Bitte warten ..
Mitglied: Xaero1982
04.04.2014, aktualisiert um 08:18 Uhr
Evtl. geht es ja so...

01.
@echo off 
02.
for /f "delims=\ tokens=1*" %%i in ('dir "c:\daten\projekte\" /b /ad') do md "d:\daten\archiv\%%i" 
03.
for /f "delims=\ tokens=1*" %%i in ('dir "c:\daten\projekte\" /b /ad') do copy "c:\daten\projekte\%%i\aufgaben\allgemein\*.*" "d:\daten\archiv\%%i\*.*" 
04.
 
Edit: Da du es ja verschieben willst kannst du dann mit:

01.
rd /s /q c:\daten\projekte\
die Ordner löschen - ACHTUNG bei diesem Kommando erfolgt dann keine Nachfrage (/q)

Gruß
ps: irgendwer bekommt das sicher als Einzeiler hin
Bitte warten ..
Mitglied: SaschaRD
04.04.2014 um 08:39 Uhr
Sieht gut aus @xaero

Kleiner Zusatz: falls jemand mit Variablen arbeiten möchte s.u.
01.
set quelle="c:\daten\projekte" 
02.
set ziel="d:\daten\archiv" 
03.
 
04.
for /f "delims=\ tokens=1*" %%i in ('dir %quelle% /b /ad') do md %ziel%\%%i 
05.
for /f "delims=\ tokens=1*" %%i in ('dir %quelle% /b /ad') do copy %quelle%\%%i\aufgaben\allgemein\*.* %ziel%\%%i\*.*
Gruß, Sascha
Bitte warten ..
Mitglied: Xaero1982
04.04.2014 um 08:47 Uhr
Danke

Deins sieht schöner aus

Gruß
Bitte warten ..
Mitglied: 1garym
04.04.2014 um 09:00 Uhr
Hallo,

super! Wir sind genau auf dem richtigen Weg Beide Varianten funktionieren gleich gut

Folgendes gäbe es noch umzusetzen:

Die Unterordner von z.B. "C:\Daten\Projekte\123456_Huber\Aufgaben\Allgemein" werden nicht mit kopiert, nur die Dateien. Sicher nur eine Kleinigkeit.

Nächste Aufgabe wäre dann noch das Löschen der Quelle, also jeweils der Ordner "Allgemein". Perfekt wäre es, wenn vorher geprüft wird, ob am neuen Ziel auch alles angekommen ist

Vorab besten Dank
Gary
Bitte warten ..
Mitglied: SaschaRD
04.04.2014, aktualisiert um 09:16 Uhr
Morgen Gary,
01.
set quelle="c:\daten\projekte" 
02.
set ziel="d:\daten\archiv" 
03.
 
04.
for /f "delims=\ tokens=1*" %%i in ('dir %quelle% /b /ad') do md %ziel%\%%i 
05.
for /f "delims=\ tokens=1*" %%i in ('dir %quelle% /b /ad') do xcopy /S /E %quelle%\%%i\aufgaben\allgemein\*.* %ziel%\%%i\*.*
Dann muss xcopy verwendet werden.
Dazu öffnest Du am besten die Windows CLI und machst xcopy /? Dann erhälst Du die Befehlsmöglichkeiten.

/S = Kopiert Verzeichnisse und Unterverzeichnisse, die nicht leer sind.
/E = Kopiert alle Unterverzeichnisse (leer oder nicht leer).

Gruß, Sascha
Bitte warten ..
Mitglied: Xaero1982
04.04.2014, aktualisiert um 09:26 Uhr
Er wird so ein Problem bekommen wenn Ordner ein Leerzeichen haben: (Man achte auf die "")

01.
set quelle="c:\daten\projekte" 
02.
set ziel="d:\daten\archiv" 
03.
 
04.
for /f "delims=\ tokens=1*" %%i in ('dir %quelle% /b /ad') do md %ziel%\"%%i" 
05.
for /f "delims=\ tokens=1*" %%i in ('dir %quelle% /b /ad') do xcopy %quelle%\"%%i\aufgaben\allgemein\*.*" %ziel%\"%%i"\ /E /Y /H
/H kopiert noch versteckte Dateien oder Systemdateien.
ob /E oder /S musst du entscheiden. /E kopiert auch leere Ordner

Den Vergleich überlass ich jemand anderes

Gruß
Bitte warten ..
Mitglied: 1garym
04.04.2014 um 09:27 Uhr
Perfekt! Funktioniert wunderbar Jetzt noch die Daten der Quelle löschen, also jeweils der Ordner "Allgemein". Perfekt wäre es, wenn vorher geprüft wird, ob am neuen Ziel auch alles angekommen ist

Vielen vielen Dank !
Gary
Bitte warten ..
Mitglied: SaschaRD
04.04.2014 um 11:24 Uhr
Hallo Gary,

das mit der Prüfung wird komplexer. Heißt ein Dateivergleich oder gleich zu Robocopy wechseln =)
Hier ein Link in dem Robocopy erklärt ist.

Ein weiterer Link aus dem Forum Administrator.de

Gruß, Sascha
Bitte warten ..
Mitglied: Xaero1982
04.04.2014, aktualisiert um 15:28 Uhr
EDIT: Korrektur um 15:25 Getestet auf Server 2008
So,

nicht schön, aber selten:

01.
@echo off 
02.
set quelle="c:\daten\projekte" 
03.
set ziel="d:\daten\archiv" 
04.
set tmpfile=%temp%\test.txt 
05.
 
06.
for /f "delims=\ tokens=1*" %%i in ('dir %quelle% /b /a /ad') do md %ziel%\"%%i"  
07.
if exist %tmpfile% (del %tmpfile%) 
08.
for /f "delims=\ tokens=1*" %%i in ('dir %quelle% /b /a /ad') do echo %%i >>%tmpfile% 
09.
for /f "delims=\ tokens=1*" %%i in ('dir %quelle% /b /a /ad') do xcopy %quelle%\"%% 
10.
 
11.
i\aufgaben\allgemein\*.*" %ziel%\"%%i"\ /E /Y /H 
12.
 
13.
set /A qdateien=0 
14.
set /A qordner=0 
15.
for /f %%d in (%tmpfile%) do ( 
16.
for /F %%i in ('dir %quelle%\%%d\aufgaben\allgemein /s /a /B /A-d') do set /A qdateien=qdateien+1 
17.
for /F %%i in ('dir %quelle%\%%d\aufgaben\allgemein /s /a /B /Ad') do set /A qordner=qordner+1 
18.
19.
echo Im Ordner %quelle% befinden sich: %qdateien% Dateien und %qordner% Ordner 
20.
 
21.
set /A zdateien=0 
22.
set /A zordner=0 
23.
for /f %%d in (%tmpfile%) do ( 
24.
for /F "delims=\ tokens=1*" %%i in ('dir %ziel%\%%d /s /a /B /A-d') do set /A zdateien=zdateien+1 
25.
for /F "delims=\ tokens=1*" %%i in ('dir %ziel%\%%d /s /a /B /Ad') do set /A zordner=zordner+1 
26.
27.
echo Im Ordner %ziel% befinden sich: %zdateien% Dateien und %zordner% Ordner 
28.
 
29.
IF %qdateien% == %zdateien% (echo Dateianzahl stimmt! ) ELSE (GOTO FError) 
30.
if %qordner% == %zordner% (echo Ordnerzahl stimmt! Goto kopieren) ELSE (GOTO OError) 
31.
 
32.
:kopieren 
33.
for /f %%d in (test.txt) do ( echo /s /q %quelle%\"%%d\aufgaben\allgemein" ) 
34.
GOTO EOF 
35.
 
36.
:FError 
37.
echo ACHTUNG: Dateianzahl stimmt nicht ueberein! 
38.
GOTO EOF 
39.
 
40.
:OError 
41.
echo ACHTUNG: Ordneranzahl stimmt nicht ueberein! 
42.
GOTO EOF 
43.
 
44.
:EOF 
45.
del %tmpfile%
Es gibt hier ein paar Fallstricke.

1. Er überprüft natürlich keine Dateigrößen/Fehlerfreiheit der Dateien
2. Du musst aus dem echo in (Zeile 33)
01.
for /f %%d in (test.txt) do ( echo /s /q %quelle%\%%d\aufgaben\allgemein )
ein rd machen, damit die Dateien gelöscht werden inkl. des Ordners allgemein.
3. Du brauchst Schreibrechte an dem Ort an dem die Batch liegt, weil dort eine temporäre Datei erstellt wird. Edit: Dank des Einwands von Bastla obsolet - Tempdatei wird im Ordner %temp% temporär angelegt.

Gruß
PS: Verwendung auf eigene Gefahr
Bitte warten ..
Mitglied: 1garym
04.04.2014 um 13:30 Uhr
Super, ich werde es vorab ausgiebig testen, damit da nix verloren geht Herzlichen Dank an Euch alle und ein schönes Wochende

Gary
Bitte warten ..
Mitglied: Xaero1982
04.04.2014 um 13:31 Uhr
Korrektur siehe oben!
Bitte warten ..
Mitglied: bastla
04.04.2014 um 15:22 Uhr
@ Xaero1982
Du brauchst Schreibrechte an dem Ort an dem die Batch liegt, weil dort eine temporäre Datei erstellt wird.
Im %TEMP%-Ordner hat der User eigentlich immer Schreibrechte ...

Grüße
bastla
Bitte warten ..
Mitglied: Xaero1982
04.04.2014 um 15:23 Uhr
Stimmt ... kann ich noch anpassen - guter Einwand

Gruß
Bitte warten ..
Mitglied: mayho33
14.04.2014 um 16:35 Uhr
Hi!

Warum verwendest du nicht USMT?

Vorteil: Wiederverwendbarkeit, unendlich viele Möglichkeiten was wie und wann gesichert wird, unscharfe suche mit Patterns, Verschieben beim Wiederherstellen in andere Ordner, usw.

eventueller Nachteil: Man muss sich in das Thema einarbeiten

lg

mayho
Bitte warten ..
Mitglied: Xaero1982
14.04.2014 um 18:15 Uhr
Zitat von mayho33:

Hi!

Warum verwendest du nicht USMT?

Vorteil: Wiederverwendbarkeit, unendlich viele Möglichkeiten was wie und wann gesichert wird, unscharfe suche mit Patterns,
Verschieben beim Wiederherstellen in andere Ordner, usw.

eventueller Nachteil: Man muss sich in das Thema einarbeiten

lg

mayho

Was genau hat USMT damit zu tun?
https://www.google.com/search?client=opera&q=USMT&sourceid=opera ...

Sagt mir es wird für die Nutzermigration benutzt. Darum geht es hier aber nicht.

Gruß
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Ordner und Datei Name gleich (BATCH)
gelöst Frage von clragonBatch & Shell12 Kommentare

Hey Leute. Simples Problem; Bat to Exe Converter ist nicht sehr sauber. Trotzdem nützlich. Es räumt die Dateien und ...

Batch & Shell
Ordner mit selben Namen verschieben
Frage von 918103Batch & Shell13 Kommentare

Hey, ich habe Ordner wie D:\1\001 abc 02391 D:\1\002 abc 02828 D:\1\003 abc 92811 D:\1\004 def 92810 D:\1\005 ...

Batch & Shell
Batch Ordner erstellen und verschieben
gelöst Frage von FromeonlyBatch & Shell6 Kommentare

Hallo Leute, ich habe ein kleines Problem beim erstellen einer Batch. Ziel der Batch soll es sein, dass sie ...

Batch & Shell
Batch: alle Ordner mit einem bestimmten Namen kopieren
gelöst Frage von RemsboysBatch & Shell4 Kommentare

Hallo zusammen, ich würde gerne eine Batch-Datei erstellen, mit der ich aus einem Ordner alle Unterverzeichnisse die den Namen ...

Neue Wissensbeiträge
Linux

Meltdown und Spectre: Linux Update

Information von Frank vor 2 TagenLinux

Meltdown (Variante 3 des Prozessorfehlers) Der Kernel 4.14.13 mit den Page-Table-Isolation-Code (PTI) ist nun für Fedora freigegeben worden. Er ...

Tipps & Tricks

Solutio Charly Updater Fehlermeldung: Das Abgleichen der Dateien in -Pfad- mit dem Datenobject ist fehlgeschlagen

Tipp von StefanKittel vor 2 TagenTipps & Tricks

Hallo, hier einmal als Tipp für alle unter Euch die mit der Zahnarztabrechnungssoftware Charly von Solutio zu tun haben. ...

Sicherheit

Meltdown und Spectre: Wir brauchen eine "Abwrackprämie", die die CPU-Hersteller bezahlen

Information von Frank vor 2 TagenSicherheit12 Kommentare

Zum aktuellen Thema Meltdown und Spectre: Ich wünsche mir von den CPU-Herstellern wie Intel, AMD oder ARM eine Art ...

Sicherheit

Meltdown und Spectre: Realitätscheck

Information von Frank vor 2 TagenSicherheit10 Kommentare

Die unangenehme Realität Der Prozessorfehler mit seinen Varianten Meltdown und Spectre ist seit Juni 2017 bekannt. Trotzdem sind immer ...

Heiß diskutierte Inhalte
E-Mail
Erfahrungen mit hMailServer gesucht
Frage von it-fraggleE-Mail10 Kommentare

Hallo, meine neue Stelle möchte einen eigenen Mailserver. Ich als Linuxkind war direkt geistig mit Postfix dabei. Leider wollen ...

Firewall
Penetrationstester-Labor - Firewalls
Frage von Oli-nuxFirewall9 Kommentare

Mich würde interessieren warum man beim Einrichten eines Penetrationstester-Labor (VMs) die Firewall der Systeme deaktivieren soll? Hat das nur ...

Entwicklung
VBS: alle PDF-Dateien in einem Ordner gleichzeitig öffnen
gelöst Frage von JuweeeEntwicklung9 Kommentare

Hallo, ich habe in deiner Ordnerstruktur (.\Tagesberichte\xx.18\) mehrere dynamische PDF-Formulare (mit LCD erstellt). Die Berichtsformulare sind im Layout alle ...

Netzwerkgrundlagen
IPv6 Inter-VLAN Routing
gelöst Frage von clSchakNetzwerkgrundlagen8 Kommentare

Hi ich befasse mich gerade mit der Implementierung von IPv6 was bisher (in einem VLAN) korrekt funktioniert inkl. DNS ...