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

Robocopy mehrerer Dateien

Mitglied: dabjoern

dabjoern (Level 1) - Jetzt verbinden

06.12.2005, aktualisiert 12.12.2005, 10464 Aufrufe, 9 Kommentare

Hallo Leute,

ich will eine unbestimmte Anzahl von Dateien gleicher Dateiendung (*.ods) mit Robocopy vom Desktop in einen Ordner kopieren. Beim Kopieren sollen die Dateien in %USERNAME%_Dateiname_%laufendeNummer%.xxx umbenannt werden. Wie kann ich am Besten die laufende Nummer erzeugen?

Grüße
dabjoern
Mitglied: dabjoern
07.12.2005 um 20:24 Uhr
Hi Leute,

ich habe nun dieses Skript zusammengestellt.

@echo off
REM
REM In Datei alle .ods speichern mit /b - ohne Kopfdaten
dir "%USERPROFILE%\desktop\*.ods" /b 1>_dateiliste.tmp
REM In Variablen Dateinamen speichern
for /f "tokens=1,2,3,4,5,6,7,8,*" %%i in (_dateiliste.tmp) do set /a %%i %%j %%k %%l %%m %%n %%o %%p %%q
REM In Datei alle .ods Dateien (mit Anzahl) speichern
dir "%USERPROFILE%\desktop\*.ods" 1>_dateiliste2.tmp
REM In Datei die Anzahl der .ods Dateien speichern (mit Zusatzinformationen)
REM /c zeigt nur die Anzahl der die Zeichenfolge enthaltenden Zeilen an
find "ods" _dateiliste2.tmp /c >_dateianzahl.tmp
REM In Variable COUNT die Zahl der Variable c speichern
for /f "skip=1 tokens=1,2,3 delims=: " %%a in (_dateianzahl.tmp) do set /a COUNT=%%c

Also nun habe ich in der Datei _dateiliste.tmp alle Dateinamen und in der Variable COUNT die Anzahl der Dateien.

Aber jetzt weiß ich nicht, wie die Schleife lauten müsste, damit die x Dateien auf dem Desktop nach obigen Anforderungen umbenannt werden. Hat jemand einen Tipp? Danke im Voraus.

Grüße
dabjoern
Bitte warten ..
Mitglied: dabjoern
07.12.2005 um 20:57 Uhr
Okay, ich habe gesehen, dass es auch einfacher geht:

@echo off
cls
REM
REM In Datei alle .ods speichern mit /b --> ohne Kopfdaten und aehnliches
dir "%USERPROFILE%\desktop\*.ods" /b 1>_dateiliste.tmp
for /f %%i in (_dateiliste.tmp) do (rename "%USERPROFILE%\Desktop\%%i" "%USERNAME%_%%i")


)

Jetzt habe ich nur noch das Problem, dass Dateinamen mit Leerzeichen nicht umbenannt werden.

Grüße
dabjoern
Bitte warten ..
Mitglied: Biber
07.12.2005 um 21:19 Uhr
Moin dabjoern,

wenn Du schon so weit bist, lohnt sich der Einsatz von Robocopy ja kaum noch.
die paar restlichen Zeilen bekommst du dann mit einem normalen Copy hin.

Vorweg: Zwei Sachen begreife ich nicht (bzw. langsamer als andere):
a) ...ööhm, Dein COUNTer fängt dann immer wieder bei 1 an? Auch wenn Du jeden Tag sicherst? Da wird es aber schnell Dateinamenskollisionen geben.. Ich würde eher den bisherigen höchsten vergebenen COUNTer je %USERNAME% ermitteln und von da an weiterzählen... egal - dann musst du wenigstens festlegen, wie sich der Batch sinnvoll verhalten soll, wenn Datei "HeinzUser_035.ods" kopiert werden soll und schon im Zielverzeichnis existiert...

b) Was Du in der ersten FOR /F IN..DO..-Schleife machst ode glaubst zu tun) versteh ich nicht. Warteschleife?

Ich würde es sinngemäß so abfackeln (ist natürlich ungetestet):
@echo off & setlocal
...
...
Set "Counter=10000"
for /f %%i in ('dir /b "%USERPROFILE%\desktop\*.ods"') do call :copyLfd "%%i"
goto :eof

:copyLfd
set /a Counter+=1
Set "CounterLast4Chars=%counter:~-4%
Copy "%~dpnx1" "x:\y\Neuerordner\%Username%_%~n1_%CounterLast4Chars%.%~x1"
goto :eof
~~~~


Das wars.
Und, wie geschrieben, ich würde den Zähler nicht immer bei 1 anfangen lassen.
HTH Biber

[Edit] sorry, hatte nur langsamer getippt - ist noch keine Antwort auf Dein P.S., sondern parallel entstanden. Jetzt warte ich erstmal, welche Variante Du weiterführst... [/Edit]
Bitte warten ..
Mitglied: dabjoern
07.12.2005 um 22:44 Uhr
Hallo auch,

also arbeite zum ersten Mal mit for-Schleifen. Insofern sei der obige "Quatsch" mal entschuldigt Also ich woll einfach die Dateien mit einer laufenden Nummer versehen und den Zähler nicht zurücksetzen. Des Weiteren würde ich schon gern mit Robocopy arbeiten aufgrund der Logfile-Erstellung.

Zwei Fragen:
1) Kann es sein, dass Robocopy beim Kopieren die Dateinamen nicht umbenennen kann? Also was in der Form:

dir "%USERPROFILE%\desktop\*.ods" /b 1>_dateiliste.tmp
for /f "usebackq" %%i in (_dateiliste.tmp) do (robocopy "%USERPROFILE%\Desktop" "d:\pruefung\dest" %%i "%USERNAME%_%%i" /A-:rsh /LOG+:d:\pruefung\log\%USERNAME%_start_log.log)

2) Wenn das Robocopy nicht kann, dann möchte ich die Dateien vorher per rename umbenennen. Ich habe das Gefühlt, dass es da noch einige Besonderheiten bezüglich Leerzeichen in Dateinamen gibt:

dir "%USERPROFILE%\desktop\*.ods" /b 1>_dateiliste.tmp
for /f %%i in (_dateiliste.tmp) do (rename "%USERPROFILE%\Desktop\%%i" "%USERNAME%_%%i")

--> Dieser Code packt es noch nicht, Dateien mit Leerzeichen umzubenennen. Dasmit dem usebackq hab ich noch nicht ganz verstanden.

Grüße
dabjoern
Bitte warten ..
Mitglied: dabjoern
07.12.2005 um 23:51 Uhr
Also dieses Teil tut schonmal seine Aufgabe ganz gut. Dateien mit Leerzeichen werden bearbeitet:

for /f "delims=" %%i in ('dir "%USERPROFILE%\desktop\*.ods" /b') do (rename "%USERPROFILE%\Desktop\%%i" "%USERNAME%_%%i")

Jetzt ist nur noch kein Counter drinnen.

Grüße
dabjoern
Bitte warten ..
Mitglied: dabjoern
08.12.2005 um 21:46 Uhr
Hi auch,

das Skript funktioniert nun super. Danke an den Biber )

@echo off & setlocal
set "counter=10000"
for /f %%i in ('dir /b "%USERPROFILE%\desktop\*.ods"') do call :copyLfd "%%i"
goto :eof
:copyLfd
set /a counter+=1
set "countersnip=%counter:~-4%
rename "%~dpnx1" "%USERNAME%_%~n1_%countersnip%%~x1"
goto :eof
:eof

Nur mal eine kurze Frage: Was bedeutet dieses eof immer? Auf der Seite http://www.antonis.de/dos/batchtut/bat-kurs/ hab ich das gelesen: EOF-Zeichen = Control-Z. Das sollte doch dann ein Abbrechen des Batchvorganges bedeuten, oder?

Und nochwas: habe ich die goto-Anweisungen nicht drinnen, will er das Ganze 3 mal durchlaufen (obwohl nur 2 ods Dateien auf dem Desktop liegen). Wieso das?

Grüße und vielen vielen Dank
dabjoern
Bitte warten ..
Mitglied: Biber
09.12.2005 um 10:36 Uhr
Moin dabjoern,

a) die Anweisung "goto :eof" entspricht in etwa dem "RETURN" oder "END SUB" anderer Skriptsprachen. Ist eine interne Anweisung, d.h. es braucht keine Sprungmarke namens ":eof" definiert werden (Kannst auch Deine letzte Zeile wieder löschen, sonst verwirrst Du den CLI nur). Ich würde "goto :eof" also hier eher übersetzen mit "goto End-Of-Function" als mit "goto End-of-File".

b) das EOF-Zeichen ist Control-Z. Ja. Brauchte man/frau zu Edlin-Zeiten hin und wieder. Hat heute keine Bedeutung mehr. Abheften und bei Bedarf wieder vorholen.

c) >> ohne goto-Anweisungen rennt er dreimal um die Dörfer...
Jepp. Genau deshalb stehen ja die Goto-Anweisungen da. Der Batch ist ja eigentlich zu Ende nach der FOR...IN..DO-Anweisung. Da heißt "goto :Eof" wirklich "gehe zum Ende/RETURN".
Danach kommt noch ein "Unterblock"/eine "SubRoutine namens ":copyLfd". Deren Ende/deren "END SUB" wird im Batch wieder durch die Standard-Phrase "goto :eof" gekennzeichnet.

HTH und schönes Wochenende
Biber
Bitte warten ..
Mitglied: dabjoern
09.12.2005 um 10:44 Uhr
Danke dir tausendmal. Gestern Nacht hatte ich noch ein Tutorial von dir gelesen (findlongpath Teil 1). Dort hattest du schon ein wenig eof erklärt. Aber hier gefällt es mir noch besser. Vielen Dank und auch dir ein schönes WE.

Grüße
dabjoern
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Robocopy bleibt stehen bei einer datei
gelöst Frage von shooanBatch & Shell8 Kommentare

Habbo, ich habe hier ein kleines Problem mit meinem Script das mir meine Dateien Kopieren soll. Es bleibt einfach ...

Backup

Robocopy - Nur geänderte o.neue Dateien mit Datumstruktur

gelöst Frage von c0d3.r3dBackup10 Kommentare

Hallo! Ich habe mich bereits mehrere Stunden durch das Internet gekämpft und nicht wirklich etwas praktikables gefunden. Ich suche ...

Batch & Shell

Robocopy - Das System kann die angegebene Datei nicht finden

gelöst Frage von imebroBatch & Shell15 Kommentare

Hallo, ich habe eine 1TB Festplatte in 2 Partitionen aufgeteilt (D und F). Nun möchte ich Daten von der ...

Windows Tools

Robocopy kopiert täglich unveränderte Dateien

Frage von Tobias15Windows Tools8 Kommentare

Hallo zusammen, Ich habe zwar sehr aufmerksam die Fälle gelesen wo der unscharfe /FFT Parameter erfolgreich dazu führt, dass ...

Neue Wissensbeiträge
Backup

2016 - Restore mit WBAdmin - iSCSI Device als Sicherungsziel

Erfahrungsbericht von Henere vor 1 TagBackup1 Kommentar

Servus zusammen, was mich eben einige graue Haare gekostet hat Server 2016. Ich habe meinem Server eine weitere M2 ...

Humor (lol)
(Part num your Hacked phone. +XX XXXXXX5200)
Erfahrungsbericht von Henere vor 3 TagenHumor (lol)7 Kommentare

Mein Handy hat aber ne ganz andere Endnummer. Muss ich mir jetzt Sorgen machen ? :-) Vielleicht betrifft es ...

Exchange Server

Letztes Update für Exchange 2016 CU9 war in gewisser Weise destruktiv

Erfahrungsbericht von DerWoWusste vor 3 TagenExchange Server9 Kommentare

Kurzer Erfahrungsbericht zu Exchange2016-KB4340731-x64 Der Exchangeserver hat wie gewöhnlich versucht, es in der Nacht automatisch zu installieren - abgesehen ...

Erkennung und -Abwehr

Neue Sicherheitslücke Foreshadow (L1TF) gefährdet fast alle Intel-Prozessoren

Information von Frank vor 4 TagenErkennung und -Abwehr3 Kommentare

Eine neue Sicherheitslücke, genannt Foreshadow (alias L1TF) wurde auf der Usenix Security 18 von einem Team internationaler Experten veröffentlicht. ...

Heiß diskutierte Inhalte
E-Mail
Deutsche e-Mail Adresse auf iPhone in Katar. Nur Probleme
Frage von vanTastE-Mail15 Kommentare

Moin, ich habe hier in Deutschland auf einem Exchange 2013 eine e-Mail Adresse (name@domain.de) für einen Kollegen in Katar ...

Windows Server
Domäne beitreten nicht möglich, unter VMWare windows Server 2016 Core
Frage von AmanuelWindows Server11 Kommentare

Ich habe auf meinem Mac unter VMWare Windows Server 2016 Core und Windows Server 2016 Desktopversion installiert. Beide Systeme ...

RedHat, CentOS, Fedora
OTRS 5 kann keine Mails mehr abrufen
gelöst Frage von opc123RedHat, CentOS, Fedora11 Kommentare

Hallo, OTRS kann keine Mails mehr abrufen. Verschicken ja. Dadurch kommen keine Tickets mehr rein. Gibt es Anlaufpunkte was ...

Windows Server
Server 2016 Autotiering Storage Space
Frage von HenereWindows Server11 Kommentare

Servus, ich habe jetzt ein StorageSpace auf einem Server 2016 in Betrieb zum Testen. 1x M2 mit 512GB (970pro) ...