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, 10452 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 ...

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 ...

Windows Tools

Robocopy . Datei im Zielverzeichnis nur überschreiben, wenn neuer

Frage von gnrmarcelWindows Tools7 Kommentare

Hallo, ich habe hier in der Firma, ältere USB Festplatten, wo das Gleiche (Ordner struktur inkl. Dateien) drauf ist ...

Neue Wissensbeiträge
Video & Streaming

Ruckelfreies Fernsehen auf Smartphone oder Tablet - in SD oder gar HD - Eine Alternative zum Fritz DVB-C Receiver

Anleitung von power-user vor 10 StundenVideo & Streaming1 Kommentar

Wer kennt das nicht: Man möchte gemütlich auf dem Balkon sitzen und vielleicht grillen und dabei das WM-Spiel gucken ...

Erkennung und -Abwehr
Trendmicro WFBS 10 ist in deutsch verfügbar!
Tipp von VGem-e vor 20 StundenErkennung und -Abwehr

Servus Kollegen, downloadbar unter

Windows Update

Microsoft Patchday Juni 2018 - BSOD, obwohl noch kein Patch freigegeben

Erfahrungsbericht von diemilz vor 20 StundenWindows Update4 Kommentare

Hallo zusammen, wir hatten hier letzte Woche ein massives Problem. Alles begann damit, dass ein Mitarbeiter kurz vor Feierabend ...

Microsoft
Shadow Defender
Tipp von Hyrule vor 1 TagMicrosoft

Ich denke viele kennen es: Ein Update oder ein neues Programm und vieles funktioniert nicht mehr wie gewünscht. Die ...

Heiß diskutierte Inhalte
CPU, RAM, Mainboards
ASUS P5W DELUXE startet nur manchmal und nur mit 2 GraKas
Frage von Windows10GegnerCPU, RAM, Mainboards17 Kommentare

Hallo, ich habe das o.g. Motherboard erhalten. Egal ob C2D 8400, Pentium D 945 oder P4 670, das teil ...

Batch & Shell
Powershell Netzwerkdrucker auflisten
gelöst Frage von schiggi85Batch & Shell16 Kommentare

Hallo zusammen, ich möchte mit dem invoke-command bei einem remoteclient die installierten Netzwerkdrucker des Users abfragen. Nur klappt das ...

Outlook & Mail
Nachweis des Löschens einer Email nach DSGVO in Outlook
Frage von linuxadmOutlook & Mail15 Kommentare

Hallo Forum, wie wahrscheinlich viele von Euch kämpfe ich mit der Umsetzung der DSGVO bei meinen Kunden. Konkret geht ...

Exchange Server
Exchange 2013 kein Mail-Versand und -Empfang nach Neustart
Frage von AkroshExchange Server11 Kommentare

Hallo zusammen, ich habe hier ein Problem mit unserem Exchange Server 2013 (VM auf ESXi 6.5). Die Festplatten C ...