Liebe WinFuture-Forum-Menschen,
ich nutze auf der Arbeit einen Windows 10 Rechner, privat jedoch macOS und Linux - deshalb ersuche ich eure Hilfe zu Windows.
Ich erstelle jeden Mittag zwei PDF Dateien für den nächsten Tag und jeden Morgen zwei aktualisierte PDF Dateien für den aktuellen Tag. Diese werden mit verschiedenen Daten (tt-mm-jj) versehen und in mehrere Netzwerkordner kopiert, wo ggf. schon Dateien vorliegen, die gelöscht/ersetzt werden müssen. Bis jetzt mache ich dies über eine Weboberfläche oder einen Webdavordner, der im Arbeitsplatz eingebunden ist.
Ich schreibe hier nicht um mir die Arbeit von euch machen zu lassen, ich weiß nur nicht, wo ich anfangen soll. Deshalb möchte ich kurz den Ablauf beschreiben. Vielleicht habt ihr ja Tipps für mich
Ich habe einige Dateinamen und Pfade mit <> anonymisiert.
****************
Desktop:
C:\Users\<Usernummer>\Desktop
Ordner1: Pfad für Datei 1 (mit Datum im Dateinamen):
\\webdav.<serveradresse>@SSL\DavWWWRoot\Groups\<Pfad1>\<Pfad2>
Ordner2: Pfad für Datei 2 (mit Datum im Dateinamen):
\\webdav.<serveradresse>@SSL\DavWWWRoot\Groups\<Pfad3>\<Pfad4>
Ordner3: Pfad für Datei 1 & Datei 2 (ohne Datum im Dateinamen):
\\webdav.<server>@SSL\DavWWWRoot\Groups\<Pfad5>\<Pfad6>
Was die Dateien tun sollen:
1. Bat-Datei für Mittags für den NÄCHSTEN Tag:
- Die Dateien "Datei1.pdf" und "Datei2.pdf" befinden sich auf dem Desktop
- Die Datei "Datei1.pdf" wird in "Datei1_tt-mm-jj.pdf"umbenannt (tt-mm-jj stellt dabei das Datum des NÄCHSTEN Tages dar, bspw. 03-09-20)
- Die Datei "Datei1_tt-mm-jj.pdf" wird nach [Ordner1, s.o.] verschoben
- Wenn die Datei in Ordner1 bereits existiert, wird sie vorher gelöscht bzw. ersetzt
- Die Datei "Datei2.pdf" wird in "Datei2_tt-mm-jj.pdf"umbenannt (tt-mm-jj stellt dabei das Datum des NÄCHSTEN Tages dar)
- Die Datei "Datei2_tt-mm-jj.pdf" wird nach [Ordner2), s.o.] verschoben
- Wenn die Datei in Ordner2 bereits existiert, wird sie vorher gelöscht bzw. ersetzt
2. Bat-Datei für Morgens für den AKTUELLEN Tag:
- Die Dateien "Datei1.pdf" und "Datei2.pdf" befinden sich auf dem Desktop
- Beide Dateien werden nach [Ordner3, s.o.] verschoben
- Die vorhandenen Dateien werden vorher gelöscht bzw. ersetzt
- Die Datei "Datei1.pdf" wird in "Datei1_tt-mm-jj.pdf"umbenannt (tt-mm-jj stellt dabei das Datum des AKTUELLEN Tages dar)
- Die Datei "Datei1_tt-mm-jj.pdf" wird nach [Ordner1, s.o.] verschoben
- Die vorhandene Datei mit gleichem Namen (die, die gestern mit dem obigen Algorithmus erstellt wurde) wird vorher gelöscht bzw. ersetzt
- Die Datei "Datei2.pdf" wird in "Datei2_tt-mm-jj.pdf"umbenannt (tt-mm-jj stellt dabei das Datum des AKTUELLEN Tages dar)
- Die Datei "Datei2_tt-mm-jj.pdf" wird nach [Ordner2, s.o.] verschoben
- Die vorhandene Datei wird vorher gelöscht bzw. ersetzt
****************
Ergibt das Sinn?
Ich würde mich sehr freuen, wenn ihr mir Tipps zur Automatisierung dieses Tasks geben könntet.
Liebe Grüße
fil
Seite 1 von 1
Batch: Dateien umbenennen & verschieben vorhandene Dateien umbenennen und in einen Netzwerkordner verschieben
Anzeige
#2
geschrieben 02. September 2020 - 15:31
nein, sieht nach Unsinnig aus
Niemand ist so gut, wie ich sein könnte.
#4
geschrieben 03. September 2020 - 17:58
Wollte dir nicht auf den Schlips treten! Wenn man was archivieren will, dann macht man das aber kontinuierlich und ersetzt nicht täglich die Datei oder?
Niemand ist so gut, wie ich sein könnte.
#5
geschrieben 04. September 2020 - 06:20
Schon okay, danke.
Es handelt sich tatsächlich um einen Personalplan, in dem jeden Tag aufgrund von Einsätzen und Krankheitsfällen Änderungen auftreten.
LG
fil
Es handelt sich tatsächlich um einen Personalplan, in dem jeden Tag aufgrund von Einsätzen und Krankheitsfällen Änderungen auftreten.
LG
fil
#6
geschrieben 10. September 2020 - 14:47
Hallo fil3000,
1.bat
heutemorgen.vbs:
Gruß,
crashed
vermutlich ist das Hauptproblem die Berechnung und Formatierung der Daten?!
Hier eine Lösung als reine Batch-Datei { :: Calculate tomorrow's date } :
https://www.robvande...t.php#Yesterday
..und hier könnte auch was brauchbares dabei sein:
https://www.it-swarm...pel/1040666020/
Falls es etwas moderner sein soll (Powershell), vielleicht das hier:
https://stackoverrun.com/de/q/11064802
Eine Konvertierung des Datums mittels VBS (DateAdd) sollte auch recht einfach sein - das Resultat könnte man dann als Umgebungsvariable setzen und in der Batch-Datei weiterverarbeiten.
Meine Umsetzung sieht in etwa so aus, wie in der angetackerten (Beta-Version!) Zip-Datei:
heutemorgen.zip (890bytes)
Anzahl der Downloads: 52
Und falls es mir Cloudflare erlaubt, auch hier:
Hier eine Lösung als reine Batch-Datei { :: Calculate tomorrow's date } :
https://www.robvande...t.php#Yesterday
..und hier könnte auch was brauchbares dabei sein:
https://www.it-swarm...pel/1040666020/
Falls es etwas moderner sein soll (Powershell), vielleicht das hier:
https://stackoverrun.com/de/q/11064802
Eine Konvertierung des Datums mittels VBS (DateAdd) sollte auch recht einfach sein - das Resultat könnte man dann als Umgebungsvariable setzen und in der Batch-Datei weiterverarbeiten.
Meine Umsetzung sieht in etwa so aus, wie in der angetackerten (Beta-Version!) Zip-Datei:
heutemorgen.zip (890bytes)
Anzahl der Downloads: 52
Und falls es mir Cloudflare erlaubt, auch hier:
1.bat
@echo off cscript .\heutemorgen.vbs echo Datum von Heute : %AlignedDatumHeute% echo Datum von Morgen: %AlignedDatumMorgen% timeout /T 2 :cleanup rem setx AlignedDatumHeute "" rem setx AlignedDatumMorgen "" set AlignedDatumHeute= set AlignedDatumMorgen=
heutemorgen.vbs:
REM :: 20200910 Berlin/Tempelhof :: Set objCMD = CreateObject("WScript.Shell") REM Variablen im System-Kontext ''Set objEnvironment = objCMD.Environment("SYSTEM") REM Variablen im User-Kontext Set objEnvironment = objCMD.Environment("USER") objEnvironment("AlignedDatumHeute") = TimeStampEx(0) objEnvironment("AlignedDatumMorgen") = TimeStampEx(1) WScript.Echo "AlignedDatumHeute: " & objEnvironment("AlignedDatumHeute") WScript.Echo "AlignedDatumMorgen: " & objEnvironment("AlignedDatumMorgen") Set objCMD = Nothing Set objEnvironment = Nothing Function TimeStampEx(Offset) ' rem Formatierung "tt-mm-jj" ' Dim t t = DateAdd("d", Offset, now()) ' Morgen ' TimeStampEx = _ Right("0" & Day(t), 2) & _ "-" & Right("0" & Month(t), 2) & _ "-" & Right(Year(t), 2) End Function
Für die Umgebungsvariablen im Systemkontext (Also Systemweit und persistent):
@heutemorgen.vbs: Set objEnvironment = objCMD.Environment("SYSTEM")
@1.bat: setx
Für die Umgebungsvariablen im Userkontext (Also nur in der aktuellen Session und volatil):
@heutemorgen.vbs: Set objEnvironment = objCMD.Environment("USER")
@1.bat: set
und das jeweils andere auskommentieren. Derzeit ist es für den User-Kontext eingestellt.
Der Rest - also die Dateioperationen - sollte ja als Batch-Datei relativ einfach zu codieren sein, oder gibt es da Fragen?!
@heutemorgen.vbs: Set objEnvironment = objCMD.Environment("SYSTEM")
@1.bat: setx
Für die Umgebungsvariablen im Userkontext (Also nur in der aktuellen Session und volatil):
@heutemorgen.vbs: Set objEnvironment = objCMD.Environment("USER")
@1.bat: set
und das jeweils andere auskommentieren. Derzeit ist es für den User-Kontext eingestellt.
Der Rest - also die Dateioperationen - sollte ja als Batch-Datei relativ einfach zu codieren sein, oder gibt es da Fragen?!
Gruß,
crashed
#7
geschrieben 10. September 2020 - 22:00
PS.: Noch ein paar Tipps:
Meine grundsätzliche Vorgehensweise ist zielorientiert - wobei ich ggf. versuche, alle relevanten Fehlermöglichkeiten zu berücksichtigen (was aber letztendlich die meiste Entwicklungszeit kostet).
Der Ablauf scheint von dir bereits relativ gut durchdacht zu sein, somit ist die Batchdatei recht einfach zu realisieren (auch wenn ich einige Details nicht so ganz nachvollziehen kann).
Also, einfach jenes in der Batch-Sprache schreiben, welches man - in genau der Reihenfolge - auch "tun" würde.
Eine Batchdatei ist ja nichts anderes, als eine Liste von Befehlen, welche nacheinander - ebendiese - ausführt.
Ein paar relevante Befehle an dieser Stelle:
Umbenennen - ren /?
Löschen - del /?
Verschieben - move /?
Kopieren - copy /? sowie xcopy /?
Existenz - if exist
Eine Beispiel-Batchdatei für das Kopieren der Datei1 von deinem Desktop auf den WebDav-Server1 und gleichzeitige Umbenennen anhand des morgigen Datums hab ich mal mit in die Zip-Datei gelegt (cpy_to_webdav1.bat).
20200910.zip (977,28K)
Anzahl der Downloads: 105
(Hoffe, Cloudflare stresst jetzt nicht schonwieder.)
PPS.:
Falls COPY / XCOPY komische Fehler bringt, dann am besten mit den Parametern (force overwrite) rumspielen, bis es passt:
https://serverfault....not-empty-error
PPPS.:
Einen ganz brauchbaren Editor mit Syntaxhighlighting für Batchdateien hab ich auch mal in die Zip-Datei gepackt (R134), Quelle ist:
https://github.com/ProgerXP/Notepad2e
Meine grundsätzliche Vorgehensweise ist zielorientiert - wobei ich ggf. versuche, alle relevanten Fehlermöglichkeiten zu berücksichtigen (was aber letztendlich die meiste Entwicklungszeit kostet).
Der Ablauf scheint von dir bereits relativ gut durchdacht zu sein, somit ist die Batchdatei recht einfach zu realisieren (auch wenn ich einige Details nicht so ganz nachvollziehen kann).
Also, einfach jenes in der Batch-Sprache schreiben, welches man - in genau der Reihenfolge - auch "tun" würde.
Eine Batchdatei ist ja nichts anderes, als eine Liste von Befehlen, welche nacheinander - ebendiese - ausführt.
Ein paar relevante Befehle an dieser Stelle:
Umbenennen - ren /?
Löschen - del /?
Verschieben - move /?
Kopieren - copy /? sowie xcopy /?
Existenz - if exist
Eine Beispiel-Batchdatei für das Kopieren der Datei1 von deinem Desktop auf den WebDav-Server1 und gleichzeitige Umbenennen anhand des morgigen Datums hab ich mal mit in die Zip-Datei gelegt (cpy_to_webdav1.bat).
20200910.zip (977,28K)
Anzahl der Downloads: 105
(Hoffe, Cloudflare stresst jetzt nicht schonwieder.)
PPS.:
Falls COPY / XCOPY komische Fehler bringt, dann am besten mit den Parametern (force overwrite) rumspielen, bis es passt:
https://serverfault....not-empty-error
PPPS.:
Einen ganz brauchbaren Editor mit Syntaxhighlighting für Batchdateien hab ich auch mal in die Zip-Datei gepackt (R134), Quelle ist:
https://github.com/ProgerXP/Notepad2e
Thema verteilen:
Seite 1 von 1