Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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

Erstellung Batch-Datei Kopieren und Umbenennen falls vorhanden

Frage Entwicklung Batch & Shell

Mitglied: sascha27283

sascha27283 (Level 1) - Jetzt verbinden

21.08.2013 um 09:19 Uhr, 2342 Aufrufe, 16 Kommentare, 3 Danke

Hallo zusammen,

dies ist mein erster Post hier und ich hoffe ihr könnt mir helfen.

Ich habe eine kleine selbstgebastelte Lösung für unsere Verwaltung entwickelt. Ohne jetzt lange drum herum zu reden, will ich gleich zum Punkt kommen.
Es liegt eine Datei in einem Ordner (C:\Programme\Sicherung\Sicherung.xxx). Diese Datei soll auf ein Serverlaufwerk verschoben werden (U:\......\Sicherungen). Da die Datei bei allen Clients (ca. 60) aber genau gleich heisst, soll in der Batch-Datei beinhaltet sein, dass beim Kopiervorgang geprüft wird, ob die Datei bereits im Zielordner vorhanden ist und wenn ja, FORTLAUFEND umbenannt (also Sicherung_1.xxx, Sicherung_2.xxx) und anschliessend in den Ordner kopiert wird, sodass ich am Ende 60 Dateien mit Sicherung_x.xxx haben sollte. Es soll also keine Datei überschrieben werden. Es muss also geprüft werden, ob der Originalname vorhanden ist und bei Bedarf die letzte fortlaufende Nummerung verwendet wird. Sollte also bereits Sicherung_15.xxx vorhanden sein, soll die Datei in Sicherung_16.xxx umbenannt werden.
Da ich mich nur rudimentär mit Batch auskenne, bekomme ich sowas leider nicht und habe bislang auch keine Anleitung für eine fortlaufende automatische Nummerierung gefunden.

Ich würde mich sehr freuen, wenn sich jemand damit auskennt und mir möglicherweise den Text für diese Batch-Datei erstellen könnte oder mir zumindest behilflich sein kann.

Falls es noch Fragen gibt, einfach melden

Vielen Dank vorab!

Mit freundlichen Grüßen
Sascha
Mitglied: tibor.nemes
21.08.2013 um 10:59 Uhr
Hallo Sascha,

wäre es nicht sinnvoller im Dateinamen den Clientnamen hinzuzufügen?
Läuft die Batch auf jedem Client zur gleichen Zeit? Dann würde es bei deiner Variante zu inkonsistenten Zuständen kommt. Und wie würdest du die Rücksicherung realisieren?

Viele Grüße
Tibor
Bitte warten ..
Mitglied: bastla
21.08.2013 um 11:01 Uhr
Hallo sascha27283 und willkommen im Forum!

Wäre es nicht ev sinnvoller, anstatt "Sicherung_1.xxx" die Sicherungsdatei "Sicherung_%computername%.xxx" zu benennen?

Wie (und von wo aus - Server / Client) wird übrigens der Batch gestartet?

Grüße
bastla
Bitte warten ..
Mitglied: B-free
21.08.2013 um 11:12 Uhr
öhm. ich denke ungefähr so:
01.
Qecho off 
02.
 
03.
if not exist "C:\Programme\Sicherung\rename\NUL" md "C:\Programme\Sicherung\rename" 
04.
 
05.
set path1 = C:\Programme\Sicherung\ 
06.
set serveradresse = ***!Hier serveradresse eintragen!*** 
07.
 
08.
set /p numerierung =<%path1%/letztenummer.log 
09.
set aktuellenummer = %numerierung% + 1 
10.
echo %aktuellenummer%>> %path1%/letztenummer.log 
11.
 
12.
copy "C:\Programme\Sicherung\Sicherung.xxx" "C:\Programme\Sicherung\rename\Sicherung.xxx" 
13.
 
14.
cd %path1% 
15.
 
16.
ren %path1%\rename\Sicherung.xxx sicherung_%aktuellenummer%.xxx 
17.
 
18.
::Hab kein plan ob es geht :( 
19.
 
20.
net use X: \\SERVER\Freigabe 
21.
move %aktuellenummer%.xxx X: 
22.
 
23.
EXIT
wahrscheinlich wird es nicht funktionieren, aber es ist ne (einigermaßen) gute grundlage.

Tschau
B-Free
Bitte warten ..
Mitglied: sascha27283
21.08.2013, aktualisiert um 11:19 Uhr
Die Idee mit dem Namen ist zwar gut, aber leider darf dies nicht erfolgen. Die Dateinamen müssen personenunabhängig sein und nicht darauf hindeuten, von wem die Datei stammt. Zumindest nicht auf den ersten Blick.

Die Datei oder besser die Verknüpfung wird in den Autostart jedes Clients gelegt. Die Originaldatei befindet sich auf nem Serverlaufwerk. Dass sich zwei PCs genau gleichzeitig anmelden, halte ich für unwahrscheinlich.
Was meinst du mit Rücksicherung? Es handelt sich eigentlich nicht wirklich um ne Sicherung. Ich sags mal so, es werden Daten gesammelt, welche dann in das zentrale Verzeichnis verschoben werden sollen.

Achja die Dateien sollen nicht kopiert werden, sondern verschoben werden. Es soll also im Startordner keine Datei mehr zu finden sein, falls möglich. Ansonsten wird die Datei einfach immer überschrieben, was auch gehen würde. Aber falls möglich, sollte sie verschoben werden.

Grüße
Sascha
Bitte warten ..
Mitglied: B-free
21.08.2013 um 11:32 Uhr
na dann erstze "copy" durch "Move" :D

B-free
Bitte warten ..
Mitglied: bastla
21.08.2013 um 15:05 Uhr
Hallo sascha27283!
Die Dateinamen müssen personenunabhängig sein und nicht darauf hindeuten, von wem die Datei stammt.
Nur interessehalber (falls die gesammelten Dateien nicht auf einer FAT-Partition abgelegt werden) - was wird denn für
dir /x Sicherung_*.xxx
ausgegeben?

Grüße
bastla
Bitte warten ..
Mitglied: sascha27283
21.08.2013, aktualisiert um 15:33 Uhr
Ich weiss nicht, ob es das ist was du suchst, aber es wird das hier ausgegeben:

21.08.2013 15:08 122.098 SICHER~1.PCA Sicherung.xxx
1 Datei(en) 122.098 Bytes
0 Verzeichnis(se), 112.731.406.336 Bytes frei

@B-free

Dein Script funktioniert leider nicht. Ich verstehe das Script auch nicht ganz. Die Erstellung eines Ordners rename ist ja gar nicht gewünscht. Es soll lediglich die Datei verschoben werden und dabei geprüft werden, ob bereits eine Sicherung.xxx vorhanden ist. Falls ja, soll die zu kopierende Datei fortlaufend nummeriert werden (Sicherung_1.xxx). Das ist alles.
Gibt es noch weitere Vorschläge?
Bitte warten ..
Mitglied: bastla
21.08.2013 um 16:11 Uhr
Hallo sascha27283!

Sorry - eigentlich hatte ich
dir /q Sicherung_*.xxx
gemeint ...

Grüße
bastla
Bitte warten ..
Mitglied: sascha27283
21.08.2013 um 16:16 Uhr
dann kommt

21.08.2013 15:10 782.991 Domäne\meinbenutzername Sicherung.xxx
1 Datei(en) 782.991 Bytes
0 Verzeichnis(se), 112.729.751.552 Bytes frei
Bitte warten ..
Mitglied: bastla
21.08.2013, aktualisiert um 16:25 Uhr
Hallo sascha27283!
21.08.2013 15:10 782.991 Domäne\meinbenutzername Sicherung.xxx
Der Dateiname ist also tatsächlich "personenunabhängig" ...

Das Verschieben sollte sich (ungetestet) etwa so machen lassen:
01.
@echo off & setlocal 
02.
set "Quelle=C:\Programme\Sicherung\Sicherung.xxx" 
03.
set "Zielpfad=U:\......\Sicherungen" 
04.
 
05.
for %%i in ("%Quelle%") do ( 
06.
    set "Name=%%~ni" 
07.
    set "Ext=%%~xi" 
08.
09.
if not defined Name goto :eof 
10.
 
11.
set /a Nr=1 
12.
:Loop 
13.
set "Ziel=%Zielpfad%\%Name%_%Nr%%Ext%" 
14.
if not exist "%Ziel%" ( 
15.
    move "%Quelle%" "%Ziel%" 
16.
    goto :eof 
17.
18.
set /a Nr+=1 
19.
goto :Loop
Grüße
bastla
Bitte warten ..
Mitglied: sascha27283
21.08.2013, aktualisiert um 16:34 Uhr
Tausend Dank bastla, das funktioniert super Ich hab zwar keine Ahnung was das alles heisst, aber es geht
Die Angabe mit Domäne und Benutzername habe ich nur anonymisiert ;) da steht schon was drin. Genauso wie beim Format der Sicherung.xxx

Tausend Dank, Thread kann geschlossen werden
Bitte warten ..
Mitglied: pieh-ejdsch
21.08.2013, aktualisiert um 16:41 Uhr
moin Sascha,

Wenn die Daten/Backups sowieso anonymisiert auf der Kiste Gespeichert werden sollen und Du Dir da so Sicher bist es gibt nicht zwei PCs die sich genau gleichzeitig anmelden, dann nimm "Datum_Uhrzeit_Zufallszeichenfolge_Zufallszeichenfolge.EXT"

Damit hast Du Die Daten auch schön aufgereiht im Ordner abgelegt. ''Wozu überhaupt abzählen?''
20132208_065832_A5§78#_2Qc_Backup.bin 
20132208_065848_Sd0r+_ybm[_Backup.bin 
20132208_070103_lökajfg_8945ewn_Backup.Bin 
...
[edit] Oh doch schon zu spät.[/edit]

Gruß Phil
Bitte warten ..
Mitglied: sascha27283
21.08.2013 um 16:43 Uhr
Sicher kann man sich natürlich nicht sein, aber die Wahrscheinlichkeit dass sich jemand in der gleichen Sekunden anmeldet halte ich für gering.
Mit deinem Tipp allein hätte ich allerdings nichts anfangen können. Dennoch Danke für deine Mühe.
Bitte warten ..
Mitglied: bastla
21.08.2013 um 16:44 Uhr
Hallo sascha27283!
Die Angabe mit Domäne und Benutzername habe ich nur anonymisiert ;) da steht schon was drin.
Das meinte ich ja in Bezug auf "personenunabhängig" - es muss nicht der Rechner-/Benutzername im Dateinamen enthalten sein, um nachvollziehen zu können, von wem die Datei gespeichert wurde; demnach wäre es also eigentlich egal, ob der Name des Rechners oder Benutzers auch im Dateinamen auftaucht ...

Grüße
bastla
Bitte warten ..
Mitglied: bastla
21.08.2013 um 16:49 Uhr
@ PH
_Zufallszeichenfolge_Zufallszeichenfolge
... wobei in Batch
_%random%_%random%
handlicher ist und zusammen mit Datum und Uhrzeit wohl ausreichend sein sollte ...

Grüße
bastla
Bitte warten ..
Mitglied: 112778
21.08.2013, aktualisiert um 17:11 Uhr
Hi,

die Zeit könnte man bis auf die Hundertstelsekunde genau bestimmen. Ob dabei zwei oder mehr User diese Hundertstelsekunde genau treffen würden, wage ich mal zu bezweifeln. Allerdings: Ausgeschlossen ist das nicht.

Gruß
Bitte warten ..
Neuester Wissensbeitrag
Internet

Unbemerkt - Telekom Netzumschaltung! - BNG - Broadband Network Gateway

(3)

Erfahrungsbericht von ashnod zum Thema Internet ...

Ähnliche Inhalte
Batch & Shell
gelöst Ordner per Batch verschieben, Datei kopieren (2)

Frage von Shape.Shifter zum Thema Batch & Shell ...

Batch & Shell
Batch: Word Datei kopieren und umbennen (9)

Frage von ExcelNoob177 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (17)

Frage von JayyyH zum Thema Switche und Hubs ...

Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

Microsoft Office
Keine Updates für Office 2016 (11)

Frage von Motte990 zum Thema Microsoft Office ...