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

Dateien aus einem Quellverzeichnis in Backupverzeichnis kopieren und in zehn Zielverzeichnisse verschieben

Mitglied: fritzel

fritzel (Level 1) - Jetzt verbinden

27.12.2011, aktualisiert 11:51 Uhr, 2452 Aufrufe, 16 Kommentare

Hallo zusammen und nachträglich frohe Weihnachten

ich habe lange gesucht und leider nichts finden können, was meinem Vorhaben entspricht:

Ich möchte jeweils eine Datei aus einem Quellverzeichnis (mit unterschiedlicher, möglicher Anzahl) zuerst in ein Backupverzeichnis kopieren und dann in eines von zehn Zielverzeichnisse verschieben.


So soll es aussehen:
Quelldatei 1 kopieren nach Backupverzeichnis, dann verschieben nach Zielverzeichnis 1
Quelldatei 2 kopieren nach Backupverzeichnis, dann verschieben nach Zielverzeichnis 2
Quelldatei 3 kopieren nach Backupverzeichnis, dann verschieben nach Zielverzeichnis 3
Quelldatei 4 kopieren nach Backupverzeichnis, dann verschieben nach Zielverzeichnis 4
......
......
Quelldatei 10 kopieren nach Backupverzeichnis, dann verschieben nach Zielverzeichnis 10
Quelldatei 11 kopieren nach Backupverzeichnis, dann verschieben nach Zielverzeichnis 1
Quelldatei 12 kopieren nach Backupverzeichnis, dann verschieben nach Zielverzeichnis 2
......
......



Wichtig ist das 1. das ganze nicht abbricht wenn im Quellverzeichnis KEINE Datei vorhanden ist und das die Zielverzeichnisse jeweils nur mit einer Datei "gefüttert" werden in fortlaufender, sich wiederholender Reihenfolge (Zielverzeichnis 1 - 10).


Gruß, Fritzel
Mitglied: PhilippBeitz
27.12.2011 um 12:57 Uhr
Suchst du dafür ein Tool ? Oder brauchst du ein Script ?
Bitte warten ..
Mitglied: fritzel
27.12.2011 um 13:02 Uhr
Hallo Philipp,

suche hierfür ein Script.
Bitte warten ..
Mitglied: Friemler
27.12.2011 um 13:08 Uhr
Hallo Fritzel,

Deine Anforderungen sind etwas mager beschrieben. Ich habe bei meinem Lösungsvorschlag mal vermutet, dass sich die Nummerierung der Quelldateien aus ihrer Sortierreihenfolge ergibt (alphabetisch, aufsteigend, nach Dateiname und -erweiterung).

01.
@echo off & setlocal 
02.
 
03.
set "SrcDir=." 
04.
set "BackupDir=E:\Backup" 
05.
 
06.
set "NDestDirs=10" 
07.
set "DestDir1=E:\Verzeichnis 1" 
08.
set "DestDir2=E:\Verzeichnis 2" 
09.
set "DestDir3=E:\Verzeichnis 3" 
10.
set "DestDir4=E:\Verzeichnis 4" 
11.
set "DestDir5=E:\Verzeichnis 5" 
12.
set "DestDir6=E:\Verzeichnis 6" 
13.
set "DestDir7=E:\Verzeichnis 7" 
14.
set "DestDir8=E:\Verzeichnis 8" 
15.
set "DestDir9=E:\Verzeichnis 9" 
16.
set "DestDir10=E:\Verzeichnis 10" 
17.
 
18.
for /f "tokens=1* delims=:" %%a in ('dir /b /a:-d-h-s /o:ne "%SrcDir%" 2^>NUL ^| findstr /n "^"') do ( 
19.
  call :ProcessFile %%a "%%b" 
20.
21.
 
22.
exit /b 
23.
 
24.
 
25.
:ProcessFile 
26.
  set /a i=(%1-1)%%%NDestDirs%+1 
27.
  echo copy "%SrcDir%\%~2" "%BackupDir%" 
28.
  call echo move "%SrcDir%\%~2" "%%DestDir%i%%%" 
29.
exit /b
Der Code ist noch nicht "scharf" geschaltet, dazu müssen erst noch die ECHO-Befehle aus den Zeilen 27 und 28 entfernt werden.

Gruß
Friemler
Bitte warten ..
Mitglied: fritzel
27.12.2011 um 13:22 Uhr
Hallo Friemler,

ok, dachte ich hätte es auführlich genug ausgedrückt...

Also: die Quelldateien haben immer die Dateiendung .DAT; sie sollen nicht umbenannt werden. Einfach nur in die Ordner 1 - 10 kopiert werden; die 11. Datei dann wieder in Ordner 1, die 12. Datei in Ordner 2 etc.


Gruß, Fritzel
Bitte warten ..
Mitglied: Skyemugen
27.12.2011 um 13:27 Uhr
Aloha Friemler liest man auch mal etwas von dir,

[OT]
das hätte ich von dir aber nicht erwartet, dass du die DesrDirs alle manuell anlegen lässt *gg*
[/OT]

greetz André

P.S.: set /a i=(%1-1) warum muss ich bei derartigen is immer ans Visual Basic denken *grübel*
Bitte warten ..
Mitglied: Friemler
27.12.2011 um 13:34 Uhr
Hallo Fritzel,

tja, und woraus ergibt sich bei Dir die Nummer einer x-beliebigen Datei?...

Wie gesagt, ich habe mal auf die alphabetische Sortierreihenfolge getippt. Weitere Möglichkeiten wären z.B. das Erstellungsdatum, die Größe oder die physikalische Reihenfolge der Dateinamenseinträge im Verzeichnis. Aufsteigende und absteigende Sortierung bringt weitere Variationen.

Teste den obigen Code einfach mal. Er verändert nichts an Deinem System sondern gibt nur aus, was er tun würde. Dann siehst Du ja, ob das Deinen Anforderungen entspricht.

Gruß
Friemler
Bitte warten ..
Mitglied: Friemler
27.12.2011 um 13:43 Uhr
Moin André,

ja, habe in letzter Zeit viel zu tun und mache mich deshalb etwas rar. Aber z.Z. ist ein kurzer Urlaub angesagt.

Btr. Manuelle DestDirs:
Es sind ja nur 10 Verzeichnisse. Zuerst hatte ich auch an ein Batch-Pseudo-Array gedacht mit Indizierung über eine berechnete Tokennummer einer FOR /F-Schleife, aber die Verzeichnisnamen könnten ja Leerzeichen enthalten und die Verarbeitung mehrerer in Anführungszeichen eingeschlossener Zeichenketten haben die Redmonder Praktikanten durch einen Programmierfehler bei FOR /F unmöglich gemacht. Bei einer normalen FOR-Schleife mit manuellem inkrementieren eines Hilfszählers und Vergleich mit dem berechneten Wert laut Formel aus Zeile 26 wird verzögerte Variablenerweiterung benötigt - das gefiel mir auch nicht. Deshalb etwas umständlich und Anfängertauglich.

Gruß
Friemler
Bitte warten ..
Mitglied: Skyemugen
27.12.2011 um 14:41 Uhr
Aloha Friemler,

ja Urlaub ist gut, genieße ich auch derzeit

Gefiel dir eine FOR /L nicht? Du weißt schon so à la for /l %%s in (1,1,%NDestDirs%) do set "DestDir%%s=E:\Verzeichnis %%s"

Rein für's Anlegen

greetz André
Bitte warten ..
Mitglied: Friemler
27.12.2011 um 14:50 Uhr
Hi André,

stimmt, wäre eine Möglichkeit. Aber ein gutes Essen macht träge (anscheinend auch im Kopf) .

Gruß
Friemler
Bitte warten ..
Mitglied: Biber
31.12.2011 um 16:04 Uhr
Sache ma', Fritzel,

meinst du, du könntest noch diese Jahr, zum Beispiel während das Raclette heute abend vorgeheizt wird, einen minzefarbenen Haken für die vielen hilfreichen Antworten vergeben?

Oder sind noch Fragen offen?

Grüße
Biber
Bitte warten ..
Mitglied: fritzel
05.01.2012 um 13:50 Uhr
Hallo zusammen und ein frohes neues noch

sorry, war im Urlaub "verschwunden", deshalb keine Reaktion....

sooo, wollte nun mal testen, und habe das Script angepasst, erhalte jedoch leider folgende Fehlermeldung:


[URL=http://s1.directupload.net/file/d/2760/zhpgco4w_gif.htm][IMG]http://s1.directupload.net/images/120105/temp/zhpgco4w.gif[/IMG][/URL]
Bitte warten ..
Mitglied: Skyemugen
05.01.2012 um 15:04 Uhr
... dir ist schon klar, dass das hier eine batch ist und kein vbs?
Bitte warten ..
Mitglied: fritzel
09.01.2012 um 11:28 Uhr
hello again, ups - "wer lesen kann ist klar im Vorteil"

als "BATCH" funktioniert das ganze super, danke euch allen schonmal.

Aber:

wie kann ich das BATCH nun so erweitern, das es sich "merkt" in welches Verzeichnis er das letzte mal kopiert hat (z.B: x05) und beim wiederaufruf dann ensprechend weitermacht (in diesem Falle dann X06) ?
Bitte warten ..
Mitglied: fritzel
12.01.2012 um 19:27 Uhr
... lässt sich das nicht realisieren ?
Bitte warten ..
Mitglied: fritzel
16.01.2012 um 23:14 Uhr
warte geduldig auf Hilfe von den vielen Profis hier...
Bitte warten ..
Mitglied: Friemler
18.01.2012 um 18:15 Uhr
Hallo fritzel,

so, heute hatte ich mal Zeit mich mit Deiner Sache zu beschäftigen.

Das neue Script merkt sich die Nummer des Verzeichnisses, in das zuletzt eine Datei kopiert wurde, in einem INI-File. Dieses INI-File kann Einträge für mehrere Quellverzeichnisse enthalten.

Wie beim letzten Mal ist der Code nicht scharf geschaltet sondern zeigt nur an, was er tun würde. Das INI-File wird trotzdem erstellt. Nachdem Du getestet hast, kannst Du in den Zeilen 77 und 78 den echo-Befehl entfernen.

01.
@echo off & setlocal 
02.
 
03.
::********** Config-Variablen ********** 
04.
set "SrcDir=E:\Test\Quelle" 
05.
set "BackupDir=E:\Test\Backup" 
06.
 
07.
set "NDestDirs=10" 
08.
set "DestDir1=E:\Test\Verz1" 
09.
set "DestDir2=E:\Test\Verz2" 
10.
set "DestDir3=E:\Test\Verz3" 
11.
set "DestDir4=E:\Test\Verz4" 
12.
set "DestDir5=E:\Test\Verz5" 
13.
set "DestDir6=E:\Test\Verz6" 
14.
set "DestDir7=E:\Test\Verz7" 
15.
set "DestDir8=E:\Test\Verz8" 
16.
set "DestDir9=E:\Test\Verz9" 
17.
set "DestDir10=E:\Test\Verz10" 
18.
::************************************** 
19.
 
20.
::Aus einer INI-Datei, die den gleichen Namen wie das Script hat, 
21.
::wird die Nummer des letzten Verzeichnisses ausgelesen, in das 
22.
::beim letzten Scriptlauf eine Datei kopiert wurde. 
23.
::In der INI-Datei können Einträge für verschiedene Quellverzeichnisse 
24.
::stehen. Ein Eintrag ist nach dem Muster 
25.
::      PfadZumQuellverzeichnis=Nummer 
26.
::aufgebaut. 
27.
set /a Offset=0 
28.
 
29.
if exist "%~dpn0.ini" ( 
30.
  for /f "usebackq tokens=1* delims==" %%a in ("%~dpn0.ini") do ( 
31.
    if "%%a" equ "%SrcDir%" ( 
32.
      set /a Offset=%%b 
33.
34.
35.
36.
 
37.
::Aus der eingelesenen Nummer mit der Modulo-Funktion den Offset für 
38.
::den aktuellen Scriptlauf berechnen. 
39.
set /a Offset=Offset%%NDestDirs 
40.
 
41.
::Dateien im Quellverzeichnis verarbeiten 
42.
for /f "tokens=1* delims=:" %%a in ('dir /b /a:-d-h-s /o:ne "%SrcDir%" 2^>NUL ^| findstr /n "^"') do ( 
43.
  call :ProcessFile %%a "%%b" 
44.
45.
 
46.
::Die alte INI-Datei zeilenweise auslesen und dabei nach der Zeile 
47.
::suchen, die zum aktuellen Quellverzeichnis gehört. Diese Zeile 
48.
::wird mit aktualisiertem Wert in eine temporäre INI-Datei geschrieben. 
49.
::Alle anderen Zeilen werden unverändert in diese Datei geschrieben. 
50.
::Falls die INI-Datei noch nicht existiert, wird eine temporäre 
51.
::INI-Datei angelegt, die nur den Eintrag für das aktuelle Quell- 
52.
::verzeichnis enthält. 
53.
if exist "%~dpn0.ini" ( 
54.
  for /f "usebackq tokens=1* delims==" %%a in ("%~dpn0.ini") do ( 
55.
    if "%%a" neq "%SrcDir%" ( 
56.
      >>"%~dpn0_new.ini" echo %%a=%%b 
57.
    ) else ( 
58.
      >>"%~dpn0_new.ini" echo %%a=%i% 
59.
60.
61.
) else ( 
62.
  > "%~dpn0_new.ini" <NUL set /p "=%SrcDir%=%i%" 
63.
  >>"%~dpn0_new.ini" echo. 
64.
65.
 
66.
::Die temporäre INI-Datei umbenennen und dabei die ggf. schon existierende 
67.
::alte INI-Datei ohne Nachfrage überschreiben. 
68.
move /y "%~dpn0_new.ini" "%~dpn0.ini" > NUL 
69.
 
70.
::Script Ende 
71.
exit /b 
72.
 
73.
 
74.
::Unterprogramm 
75.
:ProcessFile 
76.
  set /a i=(%1-1+Offset)%%NDestDirs+1 
77.
  echo copy "%SrcDir%\%~2" "%BackupDir%" 
78.
  call echo move "%SrcDir%\%~2" "%%DestDir%i%%%" 
79.
exit /b

Gruß
Friemler
Bitte warten ..
Ähnliche Inhalte
Batch & Shell

Ordner per Batch verschieben, Datei kopieren

gelöst Frage von Shape.ShifterBatch & Shell2 Kommentare

Guten Abend :) Ich möchte mein Backup etwas anpassen und muss dafür viele Ordner verschieben und jeweils eine Datei ...

Windows 10

Kopieren und Verschieben von Dateien auf gemappte Netzlaufwerke nicht möglich

gelöst Frage von tycoonWindows 107 Kommentare

Hallo zusammen, ich habe das Problem, dass ich in gemappte Netzlaufwerke nichts reinkopieren kann. Ich kann aber ganz normal ...

VB for Applications

Variable Tabelle kopieren und in neue Excel-Datei verschieben

gelöst Frage von Gimli3311VB for Applications5 Kommentare

Guten Zusammen, ich bin grad Praktikant bei einem Unternehmen und muss aus verschiedenen Excel Dateien die jeweils eine Tabelle ...

Batch & Shell

Ordner durchsuchen - wenn "bestimmter Text" in einer Datei enthalten, diese Datei in einen anderen Ordner kopieren oder verschieben

gelöst Frage von ConcurveBatch & Shell14 Kommentare

Hallo zusammen, ich habe ein Problem bei der Erstellung einer *.bat, welche innerhalb eines zu definierenden Ordners alle Dateien ...

Neue Wissensbeiträge
Internet

Datendealing im WWW Tracking Methoden immer brutaler

Information von sabines vor 1 StundeInternet

Interessanter Artikel zum Thema Tracking im WWW und die immer "besseren" Methoden des Trackings. Professor Arvind Narayanan (Princeton-Universität) betreibt ...

Erkennung und -Abwehr

Ups: Einfaches Nullzeichen hebelte den Anti-Malware-Schutzt in Windows 10 aus

Information von kgborn vor 13 StundenErkennung und -Abwehr

Windows 10 ist das sicherste Windows aller Zeiten, wie Microsoft betont. Insidern ist aber klar, das es da Lücken, ...

Windows 10

Windows 10 on ARM: von Microsoft entfernte Info - Klartext, was nicht geht

Information von kgborn vor 15 StundenWindows 10

Windows 10 on ARM ist ja eine neue Variante, die Microsoft im Verbund mit Geräteherstellern am Markt etablieren will. ...

Microsoft
TV-Tipp: Das Microsoft-Dilemma
Information von kgborn vor 15 StundenMicrosoft9 Kommentare

Aktuell gibt es in Behörden und in Firmen eine fatale Abhängigkeit von Microsoft und dessen Produkten. Planlos agieren die ...

Heiß diskutierte Inhalte
Windows 10
Windows 10 (1709) Tastur und Maus wieder einschalten?
Frage von LochkartenstanzerWindows 1026 Kommentare

Moin, Ich habe von einem Kunden einen Win10-Rechner bekommen, bei dem weder Tastatur noch Maus geht. Die Hardware funktioniert ...

Firewall
RB2011 Firewall Rule eine bestimmte Mac oder IP Adresse nicht zu blockieren
Frage von lightmanFirewall15 Kommentare

Hallo liebes Forum mit ihren Spezialisten. Ich habe meine Firewall so konfiguriert das kein Endgerät ohne meine Speziellen Erlaubnis ...

Server
Route-Befehl Unterstützung (unter CMD)
gelöst Frage von FKRR56Server15 Kommentare

Guten Tag , i.M. habe ich Probleme über den CMD-Route-Befehl ein Routing auf einen entfernten Server zuzulassen. Der Server ...

Humor (lol)
Was könnte man mit einem Server machen? Idee gesucht
Frage von 2SeitenHumor (lol)15 Kommentare

Hey Zusammen Ich habe einen alten HP G2 Rackserver zu Hause rumliegen. 28GB Ram, 1xAMD Prozi mit etwa 2GHz. ...