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

Batch - Dateien kopieren und ggf. umbenennen

Frage Entwicklung Batch & Shell

Mitglied: schplint

schplint (Level 1) - Jetzt verbinden

03.11.2006, aktualisiert 18.10.2012, 18235 Aufrufe, 9 Kommentare

[Edit Biber:] Originaltitel "[Batch] Dateien kopieren und ggf. umbenennen" beim Verschieben geändert.
Die eckigen Klammern sind nicht mehr speicherbar im Titel.
[Edit]

Hallo allerseits,
habe mittlerweile versucht seit einigen stunden eine Antwort für mein Problem im Forum zu finden, jedoch komme ich einfach nicht weiter.

Mittels einer Batch Datei möchte ich ein Backup von einem Laufwerk machen. Diese Dateien sollen auf ein anderes Laufwerk kopiert werden.
Vor dem kopieren soll geprüft werden, ob bereits Ordner oder Dateien mit gleichen Namen bereits auf dem Backup Laufwerk vorhanden ist. Sollte dies der Fall sein, soll an den Dateien bzw Ordnern das aktuelle Datum angehängt werden.

Mein Ansatz sieht wie folgt aus;
@echo off

Set parentdir=X:\

Set targetdir=F:\

xcopy "%parentdir%" %targetdir% /e /q /h /y
Weiter bin ich bissher nicht gekommen, hoffe ihr könnt mir weiterhelfen, habe wie gesagt mit den anderen Beiträgen aus dem Forum bezüglich dieses Themas nix anfangen können.
Mitglied: bastla
04.11.2006, aktualisiert 18.10.2012
Hallo schplint!

Vielleicht kannst Du konkreter beschreiben, was Du vor hast, insbesondere wie viele verschiedene Dateiversionen Du aufheben willst. Nach Deiner obigen Aussage würden nämlich (durch das Umbenennen) überhaupt niemals alte Sicherungsstände überschrieben, wodurch Du vermutlich mit der Zeit Platzprobleme bekämst.

Nicht sinnvoll ist es, sowohl Ordner- als auch Dateinamen für in der Sicherung bereits vorhandene Elemente zu verändern - eines von beidem genügt. Zur Demonstration zwei Varianten:
Wenn Du kein Problem damit hast, Ordner unter anderem Namen zu speichern, könntest Du gleich die ganze Sicherung in jeweils einen neuen Ordner legen und dort (um Platz zu sparen) nur die veränderten Dateien (Schalter /m) hinkopieren, also etwa so:

01.
xcopy /e /h /m /q /y X:\*.* F:\2006-11-04\*.*
Um das Tagesdatum als Ordnernamen zu verwenden, kannst Du Dich an der unten beschriebenen Lösung (hier geklaut bei Biber) mit VBScript und der Variablen "Datum" orientieren.
Wenn es kein Problem ist, dass sich Dateinamen ändern, könnstest Du die ursprüngliche Ordnerstruktur beibehalten und generell die Sicherungsdateien mit angefügtem Datum speichern. Das ginge so:

Zunächst ist der folgende Code als "GetDate.vbs" zu speichern (in meinem Beispiel im Ordner "Z:\Scripts"), um das aktuelle Datum im Format "JJJJ-MM-TT" zu erzeugen:
01.
WScript.Echo Year(Date) & "-" & Right("0" & Month(Date),2) & "-" & Right("0" & Day(Date), 2)
Die für die Sicherung zuständige Batchdatei sieht wie folgt aus:
01.
@echo off & setlocal 
02.
for /f %%d in ('cscript //nologo Z:\Scripts\GetDate.vbs') do set Datum=%%d 
03.
xcopy /t "X:\*.*" "F:\*.*" 
04.
pushd X:\  
05.
for /r %%i in (*.*) do copy "%%i" "F:\%%~pi%%~ni-%Datum%%%~xi" 
06.
popd
Hier wird im ersten Schritt die Ordnerstruktur kopiert und im zweiten Schritt jede einzelne Datei unter einem um das Datum erweiterten Namen in den entsprechenden Ordner übertragen. Bei Bedarf lassen sich Quelle (X und Ziel (F natürlich variabel gestalten.
Einschränkung: Es werden keine versteckten oder Systemdateien kopiert.

Bei Verwendung dieser Alternative würde in jedem Ordner des Backups die aktuelle Version aller Dateien zu allen bereits vorhandenen hinzugefügt, sodass Du als nächstes nach einer Löschstrategie suchen müsstest ...
Solltest Du wirklich viele verschiedene Versionen benötigen, empfiehlt sich aber ohnehin eher etwas in der Art: Version Backup. Vielleicht findet sich auch hier etwas Brauchbares ...

HTH
bastla

Da der Link zu dem alten, aber wie ich finde, guten "TaskZip" tot zu sein scheint: http://download.pchome.de/download/taskzip-v2.10.0002_484.html
Bitte warten ..
Mitglied: Biber
04.11.2006 um 19:26 Uhr
Moin schplint,

ebenso wie bastla würde ich erst mal, vor der handwerklichen Umsetzung, die Strategie überdenken.
Den jeweils schon vorhandenen Dateien jeweils das Datum des Kopierens anzuhängen, ist auch IMHO keine so bestechende Idee.
Dann hast Du ja definitiv hinterher in Quell- und Zielverzeichnis unterschiedliche Dateinamen - wenn Du tatsächlich mal rücksichern musst, ist es alles Grütze schwierig.
Die zuletzt bearbeiteten Dateinamen in Deinen Applikationen (Word, Excel.. alles was einen "Verlauf" benutzt) passen alle nicht.

However, um Deine Frage dennoch zu beantworten:
Mach 3 xcopy's.
Zuerst stelle mit einem Xcopy fest, welche Dateien schon im Zielverzeichnis vorhanden sind.
Dafür jibbet den Parameter /U.
01.
... 
02.
XCopy [deineXCopyParameter] /U /L quelle ziel\ >%temp%\JibbetSchon.Lst 
03.
XCopy [deineXCopyParameter] /Exclude:%temp%\JibbetSchon.Lst quelle ziel\  
04.
Xcopy [deineXCopyParameter] /U quelle ziel\%datumsprefix%_*.* 
[Das Beiwerk mit Zusammenbasteln von %datumsprefix% hab ich mal übersprungen; gibts hier mehrfach im Bereich Batch und Shell.]

Gruß
Biber
Bitte warten ..
Mitglied: bastla
04.11.2006 um 19:46 Uhr
@Biber

Den jeweils schon vorhandenen Dateien jeweils das Datum des Kopierens anzuhängen, ist auch IMHO keine so bestechende Idee.
Hoffentlich hat's zur Abschreckung gereicht , weil für Versionierung gibt's auf jeden Fall Besseres ...
Übrigens: "%datumsprefix%_*.*" als Ziel funktioniert bei mir nicht.

Und weil Du grad in der Gegend bist: Gibt es eigentlich für XCOPY etwas in der Art von /-i (also: Ziel ist Datei und nicht Verzeichnis)?

Grüße
bastla
Bitte warten ..
Mitglied: Biber
05.11.2006 um 18:26 Uhr
@bastla

Moin bastla,

Übrigens: "%datumsprefix%_*.*" als Ziel funktioniert bei mir nicht.

Jau, stimmt... habe es auch grad ausprobiert...macht der XCopy nicht...*axelzuck*

Dann eben mit einer Zeile "FOR /F... ...copy.... " statt der dritten XCopy-Zeile...
In dieser Exclude-List stehen doch schon alle Quell-Dateien, die es im Zielverzeichnis schon gibt.
Also machen wir das Kopieren dieser Dateien inclusive Umbenennen mit normalem Copy.
01.
... 
02.
for /f "delims=. tokens=1-3" %%a in ("%date%") do set "dateprefix=%%c-%%b-%%a" 
03.
 
04.
XCopy [deineXCopyParameter] /U /L %quelle% %ziel%\ >%temp%\JibbetSchon.Lst 
05.
XCopy [deineXCopyParameter] /Exclude:%temp%\JibbetSchon.Lst %quelle% %ziel%\  
06.
for /f "delims=" %%i in (%temp%\JibbetSchon.Lst) do ( 
07.
    copy "%%i"  "%ziel%\%%~ni_%dateprefix%%%~xi" 
08.
09.
...
Zur zweiten Frage... hab ich auch noch nicht probiert.
Werde ich mal in einer ruhigen Minute.

Grüße
Biber
Bitte warten ..
Mitglied: bastla
05.11.2006 um 18:48 Uhr
@Biber

Bekommst Du mit dem einfachen "copy" nicht Probleme mit dem Ziel-Pfad (gefragt war ja ua "xcopy /e" und damit wohl auch /s)?

Grüße
bastla
Bitte warten ..
Mitglied: Biber
06.11.2006 um 07:57 Uhr
@bastla

Bekommst Du mit dem einfachen "copy" nicht Probleme ...
Stimmt schon, obwohl... "Problem" würde ich es noch nicht nennen...*gg

Dann muss/müsste eben noch eine "FOR /R quellroot....DO "-Anweisung außen drumherum und je Unterverzeichnis ein XCopy OHNE /s /e abgefeuert werden...

Ich denke aber, das eigentliche Problem ist mein Unterbewusstsein, das sich offensichtlich hartnäckig dagegen sträubt, sich mit schplints Plan ernsthaft anzufreunden.

Handwerklich lösbar ist es sicher, aber es ist nicht so charmant...

Grüße
Biber
Bitte warten ..
Mitglied: bastla
06.11.2006 um 08:22 Uhr
@Biber

Ich denke aber, das eigentliche Problem ist mein Unterbewusstsein, das sich offensichtlich hartnäckig dagegen sträubt, sich mit schplints Plan ernsthaft anzufreunden.

ACK, wobei ein (fertiger) Plan ja noch gar nicht wirklich vorliegt.

(Ich hab's oben auch nur zu Übungszwecken versucht - was Du ja nicht brauchst )

Grüße
bastla
Bitte warten ..
Mitglied: 44227
17.07.2007 um 21:38 Uhr
Hallo zusammen,

ich würd egerne was ähnliches, nur noch viel einfacheres machen.

Ich hätte gerne eine Batch, die mir die datei "Z:\proggies\Dokument.doc" in "f:\Backup" kopiert und dabei den Dateinamen mit dem aktuellen Datum ergänzt im sinne 070707_Dokuemtn.doc.

Ist so was einfach möglich?

Danke und Gruß,
Nermin
Bitte warten ..
Mitglied: Biber
17.07.2007 um 21:55 Uhr
Moin Hajvazovic,

Dich hab ich ja lange nicht gelesen hier, welcome bäck.

Mach bitte für Deine Frage einen neuen Beitrag auf, falls Du über Forumssuche nach "batch umbenennen Zeit Datum" nichts Passendes findest.

Denn dieser Beitrag ist schon so verkorkst, dass ich den auch jetzt sofort schließe...
schplint hat sich sicherlich schon anderen wichtigen Fragen zugewandt.

Grüße
Biber

Ach ja, und ich verschiebe gleich mal den Beitrag von "Windows" nach "Batch & Shell".
Obwohl ich eigentlich gar nicht dort haben will...
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Mittels Batch Ordner umbenennen und Dateien kopieren
gelöst Frage von held.christophBatch & Shell12 Kommentare

Guten Tag allerseits Ich bin absoluter Leihe und konnte Dank mehr oder weniger grossen Suche in den Foren bereits ...

Batch & Shell
Verzeichniss überwachen Datei kopieren und umbenennen
gelöst Frage von fischle63Batch & Shell6 Kommentare

Hallo, Habe folgendes Problem: In einem Verzeichniss sind Dateien mit dem Suffix ".nd" enthalten. Bsp. "00000010.nd" Ich brauche eine ...

Batch & Shell
Batch Datei Kopieren
gelöst Frage von FragerBatch & Shell17 Kommentare

Hallo Zusammen, ich bekomme es nicht hin ich muss aus einem Ordner (liegt auf einem Server) eine von vielen ...

Batch & Shell
Batch: Loop zum kopieren von Dateien
gelöst Frage von BiffBaffBatch & Shell1 Kommentar

Hallo zusammen, leider bin ich nicht sehr vertraut mit dem erstellen von Batch dateien daher mag die Frage vielleicht ...

Neue Wissensbeiträge
Batch & Shell

Open Object Rexx: Eine mittlerweile fast vergessene Skriptsprache aus dem Mainframebereich

Information von Penny.Cilin vor 16 StundenBatch & Shell8 Kommentare

Ich kann mich noch sehr gut an diese Skriptsprache erinnern und nutze diese auch heute ab und an noch. ...

Humor (lol)

"gimme gimme gimme": Automatischer Test stolpert über Easter Egg im man-Tool

Information von Penny.Cilin vor 18 StundenHumor (lol)6 Kommentare

Interessant, was man so alles als Easter Egg implementiert. Ist schon wieder Ostern? "gimme gimme gimme": Automatischer Test stolpert ...

MikroTik RouterOS

Mikrotik - Lets Encrypt Zertifikate mit MetaROUTER Instanz auf dem Router erzeugen

Anleitung von colinardo vor 1 TagMikroTik RouterOS8 Kommentare

Einleitung Folgende Anleitung ist aus der Lage heraus entstanden das ein Kunde auf seinem Mikrotik sein Hotspot Captive Portal ...

Sicherheit

Sicherheitslücke in HP-Druckern - Firmware-Updates stehen bereit

Information von BassFishFox vor 1 TagSicherheit1 Kommentar

Ein weiterer Grund, dass Drucker keinerlei Verbindung nach "auswaerts" haben sollen. Unter Verwendung spezieller Malware können Angreifer aus der ...

Heiß diskutierte Inhalte
Windows Server
RDP macht Server schneller???
Frage von JaniDJWindows Server17 Kommentare

Hallo Community, wir betrieben seit geraumer Zeit diverse virtuelle Maschinen und Server mit Windows Server 2012. Leider haben wir ...

Windows 10
Windows 10 dunkler Bildschirm nach Umfallen
Frage von AkcentWindows 1015 Kommentare

Hallo, habe hier einen Windows 10 Rechner der von einem User umgefallen wurde (Beine übers Knie, an den PC ...

Windows 10
Bitlocker nach Verschlüsselung nicht mehr aufrufbar!
gelöst Frage von alexlazaWindows 1013 Kommentare

Hallo, ich besitze ein HP ZBook 17 G4 mit einem Windows 10 Pro Betriebssystem. Bei diesem Problem handelt sich, ...

Batch & Shell
Neuste Datei via PowerShell kopieren
gelöst Frage von kaiuwe28Batch & Shell11 Kommentare

Hallo zusammen, ich hatte mir mit Hilfe der Suche im Forum einen kleinen Code von colinardo rausgesucht und versucht ...