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-Key: 197783

Url: https://administrator.de/contentid/197783

Printed on: April 19, 2024 at 05:04 o'clock

Member: LordXearo
LordXearo Jan 28, 2013 at 13:06:24 (UTC)
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
Member: netdog
netdog Jan 28, 2013 at 13:08:49 (UTC)
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
Member: Friemler
Friemler Jan 28, 2013 updated at 13:16:10 (UTC)
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
Member: netdog
netdog Jan 28, 2013 updated at 14:27:46 (UTC)
Goto Top
Super, vielen vielen Dank, das hat mir sehr geholfen, das war auch schon die Lösung.

LG
Bernhard