Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

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

Bedingtes Kopieren mithilfe von Batch und Robocopy

Frage Entwicklung Batch & Shell

Mitglied: Protecdok

Protecdok (Level 1) - Jetzt verbinden

28.07.2013 um 18:21 Uhr, 1500 Aufrufe, 2 Kommentare, 1 Danke

Hallo liebe Community,

ich bin an euren Rat angewiesen. Ich habe für eine Sicherung ein Robocopy Script erstellt. Das funktioniert soweit. Nun wollte ich eine Optimierung vornehmen. Wenn ich per VPN die Sicherung durchführe, wird sehr viel „unnötiges“ überprüft, sodass die Sicherung sehr viel Zeit in Anspruch nimmt. Dabei bin ich auf die Idee gekommen, nur die aktuellen Ordner zu kopieren.
01.
@echo off 
02.
 
03.
set year=%date:~6% 
04.
 
05.
FOR /f "tokens=1 delims=." %%F IN ('dir /AD /B Y:\Daten') DO ( 
06.
 
07.
IF "%%F" == "%year%" ( 
08.
 
09.
robocopy.exe "Y:\Daten\ <ORDNERNAME>" "C:\Daten\ <ORDNERNAME>" " /E /Z /COPY:DAT /XO /XC /XN /FFT /R:0 /W:0 /ETA /LOG+:"%HOMEPATH%\Sicherungslogdatei.log" /v /TEE 
10.
 
11.
12.
 
13.
)
Meine Ordnerstruktur ist folgendermaßen aufgebaut:
<Laufwerksbuchstabe>\Daten\ <Jahr.Monat.Tag>
<Jahr.Monat.Tag>

Die Optimierung sollte dazu führen, dass das Jahr aus dem Ordnernamen mit dem heutigen Jahr verglichen wird. Wenn das der Fall ist, soll der Ordner kopiert werden. Um das zu realisieren muss ich die Pfade im Robocopy dynamisch an das derzeitige Ergebnis der For-Schleife gestalten. Das Problem ist, dass die Laufzeitvariable nur das Jahr des Ordnernamens beinhaltet und nicht den kompletten Ordnernamen. Hätte jemand einen Tipp wie ich das realisieren könnte? Für jeden Hinweis wäre ich dankbar.

Gruß Protecdok
Mitglied: Endoro
28.07.2013 um 20:37 Uhr
Hallo Protecdok,

du könntest eine Forschleife davorspannen:
01.
@ECHO OFF &SETLOCAL 
02.
set "year=%date:~6%" 
03.
 
04.
FOR /d %%a IN (Y:\Daten\*) DO ( 
05.
	FOR /f "delims=." %%F IN ("%%~a") DO ( 
06.
		IF "%%F" == "%year%" ( 
07.
			robocopy.exe "Y:\Daten\%%~a" "C:\Daten\%%~a" " /E /Z /COPY:DAT /XO /XC /XN /FFT /R:0 /W:0 /ETA /LOG+:"%HOMEPATH%\Sicherungslogdatei.log" /v /TEE 
08.
09.
10.
)
oder gleich alle Tokens deiner Forschleife einsammeln:
01.
@ECHO OFF &SETLOCAL 
02.
set "year=%date:~6%" 
03.
 
04.
FOR /f "tokens=1-3 delims=." %%F IN ('dir /AD /B Y:\Daten') DO ( 
05.
	IF "%%F" == "%year%" ( 
06.
		robocopy.exe "Y:\Daten\%%F.%%G.%%H" "C:\Daten\%%F.%%G.%%H" " /E /Z /COPY:DAT /XO /XC /XN /FFT /R:0 /W:0 /ETA /LOG+:"%HOMEPATH%\Sicherungslogdatei.log" /v /TEE 
07.
08.
)
lg.
Bitte warten ..
Mitglied: Protecdok
28.07.2013 um 21:37 Uhr
Batch ist schon was spezielles...
Funktioniert aber einwandfrei! Vielen Dank

LG
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Robocopy soll nur spezielle Unterordner kopieren (2)

Frage von PoldiMUC zum Thema Batch & Shell ...

Batch & Shell
gelöst Batch: alle Ordner mit einem bestimmten Namen kopieren (4)

Frage von Remsboys zum Thema Batch & Shell ...

Batch & Shell
gelöst Robocopy log Angabe der Zeiten - Verständnissfrage (3)

Frage von NetMare zum Thema Batch & Shell ...

Server
gelöst Robocopy RECYCLE.BIN (21)

Frage von swissbull zum Thema Server ...

Neue Wissensbeiträge
Ubuntu

Ubuntu 17.10 steht zum Download bereit

(3)

Information von Frank zum Thema Ubuntu ...

Datenschutz

Autofahrer-Pranger - Bewertungsportal illegal

(8)

Information von BassFishFox zum Thema Datenschutz ...

Windows 10

Neues Win10 Funktionsupdate verbuggt RemoteApp

(8)

Information von thomasreischer zum Thema Windows 10 ...

Microsoft

Die neuen RSAT-Tools für Win10 1709 sind da

(2)

Information von DerWoWusste zum Thema Microsoft ...

Heiß diskutierte Inhalte
Routers & Routing
Allnet - VDSL2 Modem - SFP (mini-GBIC) (20)

Frage von Dobby zum Thema Routers & Routing ...

Monitoring
Netzwerk-Monitoring Software (17)

Frage von Ghost108 zum Thema Monitoring ...

Voice over IP
DeutschlandLAN IP Voice Data M Premium, Erfahrung mit Faxgeräte? (17)

Frage von liquidbase zum Thema Voice over IP ...

Windows 10
Windows 10 Ordnerfreigabe (15)

Frage von Xaero1982 zum Thema Windows 10 ...