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
GELÖST

Pfad durchsuchen und bestimmten Ordner kopieren

Frage Entwicklung Batch & Shell

Mitglied: Alforno

Alforno (Level 1) - Jetzt verbinden

16.11.2009, aktualisiert 18.10.2012, 5909 Aufrufe, 14 Kommentare

Hallo,

ich bin auf der Suche nach einem Batch, der die folgende Aufgabe erledigt.

Ich habe zwei feste Pfade:

1. d:\programme\sicherungen\
2. H:\

Das Skript soll in dem 1. Pfad den zuletzt erstellten Ordner auf das Laufwerk H:\ kopieren.
Es wäre schön, wenn auf dem Laufwerk H:\ vorher automatisch ein Ordner nach dem schema "backup_aktuellesdatum" erzeugt werden würde.

Ich habe schon ein wenig im Forum gesucht, aber nichts 100% Passendes gefunden.

Wäre schön wenn jemand helfen kann.

Danke im Voraus.
Alforno
Mitglied: Farbauti
16.11.2009 um 13:21 Uhr
Sollte in der Theorie so funktionieren:

01.
set SRCDIR=d:\programme\sicherungen\ 
02.
set DESTDIR=H:\ 
03.
set TMPFILE=%TEMP%\temptemp.tmp 
04.
 
05.
REM zeige Dir, sortiert nach Datum 
06.
dir /od /b %SRCDIR%>%TMPFILE% 
07.
 
08.
REM liest letzte Zeile (=neuester Dir-Eintrag) 
09.
tail -1 %TMPFILE% > %TMPFILE%2 
10.
 
11.
REM setzt Dir 
12.
set /p LATESTDIR=<%TMPFILE%2 
13.
 
14.
REM setzt datum in ziel dir 
15.
set NOWDIR=backup_%DATE:~-4,4%-%DATE:~-7,2%-%DATE:~-10,2% 
16.
 
17.
REM kopiert was auch immer... 
18.
copy %SRCDIR%\%LATESTDIR% %DESTDIR%\%NOWDIR%
Benötigt wird dazu das "tail" Kommando aus dem Win Ressource Kit.
Das Script kann/sollte noch erweitert werden (Fehlerabfragen, abschließendes Löschen der Temp-Dateien).

Gruß, Farbauti.
Bitte warten ..
Mitglied: Alforno
16.11.2009 um 16:17 Uhr
Ich danke Dir.

Klingt gut, ich denke ich habe es soweit auch verstanden.

Könnte man den Umweg über eine temp-Datei nicht umgehen?
Kann man nicht direkt das "jüngste" Verzeichnis als das zu kopierende auslesen?

Danke Dir.

Alforno
Bitte warten ..
Mitglied: Biber
16.11.2009 um 16:50 Uhr
Moin Alforno,

ohne temporäre Zwischenspeicherung müsste es so oder ähnlich aussehen:
01.
.... 
02.
for /f "delims=" %%i in ('dir /od /ad /b d:\temp') do set "newest=%%i" 
03.
...:: ab hier dann mit der Variable %newest% arbeiten 
--> würde das "zuletzt angelegte Verzeichnis" der ersten Ebene unterhalb von d:\temp in die Variable %newest% schreiben
---> der Zusatz "delims=" ist für den Dfall, dass dieses Verzeichnis "Leerzeichen im Namen" hat.

Diese Mimik findest du auch über Forumssuche nach (sinngemäß) "Älteste Verzeichnisse löschen".

Grüße
Biber
Bitte warten ..
Mitglied: Alforno
16.11.2009 um 18:04 Uhr
Zitat von Biber:
01.
ab hier dann mit der Variable %newest% arbeiten  

Ja, das klingt gut, nur leider habe ich davon so gut wie keine Ahnung.

Als nächstes müßte dann wohl der eigentliche copy Befehl kommen.
Nur leider weiß ich nicht so wirklich wie.
Könnte man die beiden Pfade als Konstanten deklarieren?

Würde mich freuen wenn du mir nochmal helfen könntest.
Vielen Dank.

mfg
Alforno
Bitte warten ..
Mitglied: Biber
16.11.2009 um 18:38 Uhr
Moin Alfonso,

in Farbautis Skizze eingefügt würde es so aussehen:
01.
set "SRCDIR=d:\programme\sicherungen" 
02.
set "DESTDIR=H:" 
03.
 
04.
:: --- hier ist jetzt ein bisschen Luft aus dem Käse gedrückt 
05.
:: --- eine Zeile bleibt: 
06.
FOR /F "delims=" %%i in ('dir /od /ad /b %SRCDIR%') do set "LATEXDIR=%%i" 
07.
 
08.
REM setzt datum in ziel dir 
09.
set NOWDIR=backup_%DATE:~-4,4%-%DATE:~-7,2%-%DATE:~-10,2% 
10.
 
11.
REM kopiert was auch immer... 
12.
copy %SRCDIR%\%LATEXDIR% %DESTDIR%\%NOWDIR%
in vollem Vertrauen in Farbauti, von daher ungetestet

Grüße
Biber
Bitte warten ..
Mitglied: Alforno
16.11.2009 um 20:20 Uhr
Da scheint sich ein kleiner Fehler eingeschlichen zu haben.

Aus dem Ordner d:\programme\sicherungen\ soll der letzte Ordner komplett kopiert werden.

Wenn ich das Skript starte, dann wird zunächst garnichts kopiert und es wird auch kein Ordner erstellt.
Wenn ich in dem Ordner d:\programme\sicherungen\test\ eine Datei anlege und anschließend das Skript starte,
dann wird diese Datei kopiert und umbenannt nach backup_datum.

Da muss irgendwo ein kleiner Fehler sein, leider weiß ich nicht so wirklich wo ich suchen muss.

Vielleicht sieht es ja jemand.

Danke euch schonmal.

mfg
Alforno
Bitte warten ..
Mitglied: TsukiSan
17.11.2009 um 03:48 Uhr
Hallo Alforno,

wo nix ist, wird auch nix kopiert. Es müßte schon klar sein, dass sich in deinem Ordner "Test" Daten zum kopieren befinden müssen.
Um einen neuen Ordner anzulegen nimmst du zum Beispiel:
01.
MD H:\backup_%date%
und im Anschluss die schon vorangegangenen Codes in deine Batchdatei einfügen.

Gruss
Tsuki
Bitte warten ..
Mitglied: Alforno
18.11.2009 um 20:40 Uhr
@Tsuki

Leider funktioniert das alles nicht.
Es sollen nicht nur die Dateien aus dem Ordner kopiert werden, sondern der gesamte Ordner.

Nehmen wir an, in dem Ordner Sicherungen gibt es viele Unterordner, diese werden automatisch angelegt.
Nun soll immer der letzte Ordner komplett kopiert werden. (nicht nur der Inhalt des Ordners, sondern auch der Ordner selber)

Auf dem Ziellaufwerk solle ein Ordner angelegt werden nach dem Schema "backup_datum".

Wenn ich das jetzt ausprobiere, dann wird kein Ordner angelegt.

Würde mich freuen wenn sich das nochmal jemand ansehen könnte.

Danke.

Alforno
Bitte warten ..
Mitglied: TsukiSan
19.11.2009, aktualisiert 18.10.2012
@Alforno,

bibers schnipsel funktioniert. Es ist das Prinzip! Die Ordnertiefe wurde auch schon mal in http://www.administrator.de/forum/datei-in-alle-unterordner-kopieren%2c ... diesem">href="http://www.administrator.de/forum/datei-in-alle-unterordner-kopieren%2c-aber-unterordner-tiefe-abgeben-k%c3%b6nnen-56338.html" title="http://www.administrator.de/forum/datei-in-alle-unterordner-kopieren%2c-aber-unterordner-tiefe-abgeben-k%c3%b6nnen-56338.html" onclick="window.open(this.href); return false;">http://www.administrator.de/forum/datei-in-alle-unterordner-kopieren%2c ... diesem Thread behandelt.
Füge die Infos mit etwaigen Änderungen von Bibers Script zusammen und es funktioniert.
Wenn ich für Testzwecke mal Bibers letztes Script nehme und schreibe es so um
01.
set "SRCDIR=D:\1\Alle" 
02.
set "DESTDIR=D:" 
03.
 
04.
:: --- hier ist jetzt ein bisschen Luft aus dem Käse gedrückt 
05.
:: --- eine Zeile bleibt: 
06.
FOR /F "delims=" %%i in ('dir /od /ad /b %SRCDIR%') do set "LATEXDIR=%%i" 
07.
 
08.
REM setzt datum in ziel dir 
09.
set NOWDIR=backup_%DATE:~-4,4%-%DATE:~-7,2%-%DATE:~-10,2% 
10.
 
11.
md %DESTDIR%\%NOWDIR% 
12.
 
13.
REM kopiert was auch immer... 
14.
move %SRCDIR%\%LATEXDIR% %DESTDIR%\%NOWDIR%
dann wird der letzte Ordner in meinem Pfad nach dem Backup-Ordner mit Datum kopiert.

Gruss
Tsuki
Bitte warten ..
Mitglied: Alforno
19.11.2009 um 09:51 Uhr
@Tsuki

Danke für die schnelle Rückmeldung.
Mit dem Befehl move wird der gesamte Ordner verschoben.
Ich möchte aber gerne das er kopiert wird.

Ich habe move durch copy ersetzt. Das führt dazu, dass nur noch der Inhalt des Ordners, aber nicht der gesamte Ordner kopiert wird.

Wenn du mir jetzt noch helfen könntest, dass der gesamte Ordner kopiert wird, dann hätten wir die Lösung.

Vielen Dank.

mfg
Alforno
Bitte warten ..
Mitglied: Biber
19.11.2009 um 10:02 Uhr
Moin Alforno,

reicht es nicht, wenn du die Zeilen 11-14 ersetzt durch einen XCOPY-Befehl?

... 
XCopy %SRCDIR%\%LATEXDIR% %DESTDIR%\%NOWDIR%\%LATEXDIR%\
ggf noch mit Anführungszeichen, falls Leerzeichen im Pfad und XCopy-Parametern ["XCopy "%SRCDIR%\%LATEXDIR%" "%DESTDIR%\%NOWDIR%\%LATEXDIR%\"]

Grüße
Biber
Bitte warten ..
Mitglied: Alforno
19.11.2009 um 17:00 Uhr
@Biber

Deinen Vorschlag habe ich gerade umgesetzt. Resultat ist, dass jetzt garnichts mehr kopiert wird.
Es wird auch kein neuer Ordner angelegt.

Eigentlich sollte das nicht so schwierig sein, oder?
Ich denke ich mache etwas falsch.

Ich verwende Windows 7, kann mir aber kaum vorstellen, dass das der Grund ist.

Es wäre wirklich super, wenn jemand mir aus der Misere hilft.

Danke.

mfg
Alforno
Bitte warten ..
Mitglied: Biber
19.11.2009 um 18:14 Uhr
Moin Alforno,

wenn wir da mit bloßem Auge keine (Denk-)Fehler erkennen können, dann
  • starte doch diesen Winz-Schnipsel vom CMD-Prompt aus
  • und stelle minimal der XCOPY-Zeile ein "Echo " voran

Schau nach, was ausgeführt werden würde, copy&paste diese Ausgabe und schick genau dieses Copy&Pastilat auf die Reise.
Ggf mit einem Schalter /L hintendran, damit auch dieser Xcopy-Befehl nur simuliert.

Irgendwas muss er ja erzählen...

Wenn das nix hilft, dann schwerere Geschütze. Oben in den Batch das "Echo off " raus und ein "echo on" rein.

Ergebnis hier posten.

Grüße
Biber
Bitte warten ..
Mitglied: Alforno
19.11.2009 um 19:39 Uhr
So, dank der Hilfe zur Selbsthilfe, habe ich den Fehler gefunden.

Hinter dieser Zeile:
01.
set NOWDIR=backup_%DATE:~-4,4%-%DATE:~-7,2%-%DATE:~-10,2%
War noch ein Leerzeichen gesetzt.
Das habe ich entfernt und nun läuft Alles.

Vielen Dank für Eure Mühe.

mfg
Alforno
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Durchsuchen von Unterverzeichnissen nach bestimmten Ordnern!
gelöst Frage von DeadseraphimBatch & Shell4 Kommentare

Hallo in die Runde, ich habe folgendes Problem: Im Verzeichnis: D:\Schriftverkehr befinden sich mehrere Unterverzeichnisse mit den Bezeichnungen: \Dokumentenklassen1\ ...

Batch & Shell
Ordner durchsuchen und Dateien kopieren
gelöst Frage von friedensbringerBatch & Shell4 Kommentare

Hallo zusammen, gibt es mittels Batchfile eine Möglichkeit in einem definierten Ordner inklusive allen Unterordnern (mehrere Ebenen möglich) nach ...

Batch & Shell
Nach bestimmten Ordner namen suchen und in einem anderem Pfad kopieren
gelöst Frage von erdgnrftBatch & Shell8 Kommentare

Hallo zusammen, ich bin neu hier und mit der Bach-Programmierung habe ich auch nicht viel Erfahrung. Habe folgendes Problem: ...

Microsoft
Batch Datei zum Kopieren bestimmter ordner mit Pfad
gelöst Frage von eivloxMicrosoft6 Kommentare

Hallo zusammen , Hab schon ein bisschen gegoogled aber nichts passendes gefunden . Folgendes Problem: Ich möchte einen Ordner ...

Neue Wissensbeiträge
Windows 10

Autsch: Microsoft bündelt Windows 10 mit unsicherer Passwort-Manager-App

Tipp von kgborn vor 17 StundenWindows 102 Kommentare

Unter Microsofts Windows 10 haben Endbenutzer keine Kontrolle mehr, was Microsoft an Apps auf dem Betriebssystem installiert (die Windows ...

Sicherheits-Tools

Achtung: Sicherheitslücke im FortiClient VPN-Client

Tipp von kgborn vor 19 StundenSicherheits-Tools

Ich weiß nicht, wie häufig die NextGeneration Endpoint Protection-Lösung von Fortinet in deutschen Unternehmen eingesetzt wird. An dieser Stelle ...

Internet

USA: Die FCC schaff die Netzneutralität ab

Information von Frank vor 1 TagInternet3 Kommentare

Jetzt beschädigt US-Präsident Donald Trump auch noch das Internet. Der neu eingesetzte FCC-Chef Ajit Pai ist bekannter Gegner einer ...

DSL, VDSL

ALL-BM200VDSL2V - Neues VDSL-Modem mit Vectoring von Allnet

Information von Lochkartenstanzer vor 1 TagDSL, VDSL2 Kommentare

Moin, Falls jemand eine Alternative zu dem draytek sucht: Gruß lks

Heiß diskutierte Inhalte
TK-Netze & Geräte
VPN-fähige IP-Telefone
Frage von the-buccaneerTK-Netze & Geräte16 Kommentare

Hi! Weiss noch jemand ein VPN-fähiges IP-Telefon mit dem man z.B. einen Heimarbeitsplatz gesichert anbinden könnte? Habe nur einen ...

Windows Server
GPO nur für bestimmte Computer
Frage von Leo-leWindows Server13 Kommentare

Hallo Forum, gern würde ich ein Robocopy script per Bat an eine GPO hängen. Wichtig wäre aber dort der ...

Windows Server
KMS Facts for Client configuration
Frage von winlinWindows Server13 Kommentare

Hey Leute, wir haben in unserem Netz nun einen neuen KMS Server. Haben Bestands-VMs die noch nicht aktiviert sind. ...

Windows Tools
Software-Tool zum Entfernen von bösartigem Windows
Frage von emeriksWindows Tools11 Kommentare

Hi, siehe Betreff hat das jemals irgendjemand schonmal sinnvoll eingesetzt? (MRT) E.