netdog
Goto Top

Batch zum verschieben von Daten in Datumsabhängige Verzeichnisse

Hallo liebe community!

Ich würde gerne für ein IPcam System, welches die aufgenommenen Bilder per FTP auf einen W2k8R2 spielt, eine saubere Ordnerstruktur einführen.
Hierzu soll ein Batchscript täglich um 00:01 per Cronjob laufen, welches folgende Schritte für mich durchführt (ich erkläre es gleich Anhand eines Beispiels):

- Im Verzeichnis C:\share\ipcam\halle ein Verzeichnis mit dem Namen des gestrigen Datums - also z.B. 27.01.2013 - anlegen
- Alle JPGs mit dem Erstellungsdatum vom Vortag (in diesem Fall z.B. 27.01.2013) in das Verzeichnis "27.01.2013" verschieben.
- eine ZIP-Datei mit hoher Kompression des Verzeichnis "27.01.2013" erstellen und im Verzeichnis C:\share\backup ablegen
- ZIP-Datei "27.01.2013.zip" aus dem Verzeichnis C:\share\ipcam\halle\ wieder löschen

Wäre super wenn ihr hierfür eine Lösung parat hättet.
Ich weiß absolut nicht (auch nach Recherche im Netz) wie ich zu einer Variablen für den Vortag, also z.B. %YESTERDAY% komme bzw. wie ich es sonst im Skript umsetzen sollte.

Vielen Dank!

LG
Bernhard.

Content-ID: 197783

Url: https://administrator.de/forum/batch-zum-verschieben-von-daten-in-datumsabhaengige-verzeichnisse-197783.html

Ausgedruckt am: 09.04.2025 um 17:04 Uhr

LordXearo
LordXearo 28.01.2013 um 14:06:24 Uhr
Goto Top
Hallo,

ich weiss nicht wie komfortabel Batch bei sowas ist. Ich würde aber lieber damit anfangen Powershell zu verwenden. Da ist sowas schnell erledigt.

(Get-Date).AddDays(-1)

Mfg

Xearo
netdog
netdog 28.01.2013 um 14:08:49 Uhr
Goto Top
Vielen Dank für die schnelle Antwort!

Kannst du mir das Skript vielleicht kurz komplett machen?

Meine Scripting Kenntnisse sind nicht unbedingt die besten und in PowerShell schon gar nicht^^
Vielen Dank!

LG
Bernhard
Friemler
Friemler 28.01.2013 aktualisiert um 14:16:10 Uhr
Goto Top
Hallo netdog,

in Batchscript lässt sich mit Datumswerten schlecht rechnen. Dafür verwendet man am besten ein Inline-VBScript. BTW: Verzeichnisse/Dateien benennt man am besten (wegen der besseren Sortiermöglichkeit) im Format YYYY.MM.DD, so wie in folgendem Script:
@echo off & setlocal

set "GetYesterday=%TEMP%\GetYesterday.vbs"  

> "%GetYesterday%" echo.dYesterday = DateAdd("d", -1, Date)  
>>"%GetYesterday%" echo.WScript.Echo Year(dYesterday) ^& "." ^& Right("0" ^& Month(dYesterday), 2) ^& "." ^& Right("0" ^& Day(dYesterday), 2)  

for /f "delims=" %%d in ('cscript /nologo "%GetYesterday%"') do (  
  set "Yesterday=%%d"  
)

del "%GetYesterday%"  

echo %Yesterday%

Gruß
Friemler
netdog
netdog 28.01.2013 aktualisiert um 15:27:46 Uhr
Goto Top
Super, vielen vielen Dank, das hat mir sehr geholfen, das war auch schon die Lösung.

LG
Bernhard