Automatisiertes Ändern eines Batch-Codes.
Hallo an die Community!
Ich habe ein Archivierungsprozess für dat-Dateien erstellt.
Für den Prozess wird automatisch ein Ordner mit dem Datum als Namen erzeugt (Form: 03-2010).
Die Daten in diesem Ordner werden dann archiviert.
Mein Problem ist nun, dass ich jeden ersten des Monats im Archvierungsprozess die Ordnernamen manuell ändern muss.
Kann man das auch irgendwie automatiseren? Am besten auch per Batch.
Hier mal das Archivierungs-Batch:
Edit:
Es muss nicht im Archivierungsprozess selber sein, es kann auch ein neuer Prozess sein.
Ich habe ein Archivierungsprozess für dat-Dateien erstellt.
Für den Prozess wird automatisch ein Ordner mit dem Datum als Namen erzeugt (Form: 03-2010).
Die Daten in diesem Ordner werden dann archiviert.
Mein Problem ist nun, dass ich jeden ersten des Monats im Archvierungsprozess die Ordnernamen manuell ändern muss.
Kann man das auch irgendwie automatiseren? Am besten auch per Batch.
Hier mal das Archivierungs-Batch:
@echo off &setlocal
:: die Dateiendung
set ext=*.dat
:: die Verzeichnisse
set folder_1=X:\Ordner\Ordner\Archiv\Bla1\03-2010
set folder_2=X:\Ordner\Ordner\Archiv\Bla2\03-2010
set folder_3=X:\Ordner\Ordner\Archiv\Bla3\03-2010
set folder_4 ... usw
set nr=0
for /f "delims== tokens=1*" %%a in ('set folder_') do set "folder=%%b" &call :sub
exit
:sub
set /a nr+=1
pushd "%folder%"
:: Name kreieren
for /f "delims=. tokens=1-3" %%i in ("%date%") do set "name=blaarchiv_%%j-%%k.cab"
:: .ddf Datei erstellen
chcp 1252>nul
>directives.ddf echo .Option Explicit
>>directives.ddf echo .Set CabinetNameTemplate=%name%
>>directives.ddf echo .Set CompressionType=MSZIP
>>directives.ddf echo .Set UniqueFiles="OFF"
>>directives.ddf echo .Set Cabinet=on
>>directives.ddf echo .Set DiskDirectory1=Temp
for /f "delims=" %%i in ('dir /a-d /b "%ext%"') do echo "%%i">>directives.ddf
chcp 850>nul
:: makecab aufrufen
makecab /f directives.ddf
:: aufräumen
del setup.inf
del setup.rpt
del directives.ddf
move "Temp\%name%" ".\%name%"
rd Temp
popd
::goto :eof
Edit:
Es muss nicht im Archivierungsprozess selber sein, es kann auch ein neuer Prozess sein.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 138344
Url: https://administrator.de/contentid/138344
Ausgedruckt am: 22.11.2024 um 13:11 Uhr
6 Kommentare
Neuester Kommentar
Hallo SWuser!
Wie Du zu den Datumsbestandteilen kommst, weißt Du ja schon (Zeile 19) - auf dieser Basis sollten sich die Variablen "folder_x" mit passenden Werten erstellen lassen (wobei ich ja nicht zuletzt wegen der besseren Sortierbarkeit anstelle von "MM-JJJJ" eher zur Schreibweise "JJJJ-MM" neigen würde) ...
Grüße
bastla
Wie Du zu den Datumsbestandteilen kommst, weißt Du ja schon (Zeile 19) - auf dieser Basis sollten sich die Variablen "folder_x" mit passenden Werten erstellen lassen (wobei ich ja nicht zuletzt wegen der besseren Sortierbarkeit anstelle von "MM-JJJJ" eher zur Schreibweise "JJJJ-MM" neigen würde) ...
Grüße
bastla
Moin SWUser,
du kannst doch die Mimik der angesprochenen Zeile 19 auch schon weiter oben verwenden.
Grüße
Biber
du kannst doch die Mimik der angesprochenen Zeile 19 auch schon weiter oben verwenden.
....
for /f "delims=. tokens=1-3" %%i in ("%date%") do (
REM statt set folder_1=X:\Ordner\Ordner\Archiv\Bla1\03-2010--> bzw 2010-03
set "folder_1=X:\Ordner\Ordner\Archiv\Bla1\%%k-%j"
set "folder_2=X:\Ordner\Ordner\Archiv\Bla1\%%k-%j"
set "folder_3=X:\Ordner\Ordner\Archiv\Bla1\%%k-%j"
REM usw
)
...
set nr=0
...
Grüße
Biber