swuser
Goto Top

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:

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

Content-ID: 138344

Url: https://administrator.de/forum/automatisiertes-aendern-eines-batch-codes-138344.html

Ausgedruckt am: 22.12.2024 um 22:12 Uhr

bastla
bastla 16.03.2010 um 11:57:01 Uhr
Goto Top
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
SWuser
SWuser 16.03.2010 um 12:52:59 Uhr
Goto Top
Hallo bastla!

Danke für deinen Tipp!

Habe es mal versuchsweise eingebaut. Aber irgendwie klapp es nicht.

Habe zwei Varianten ausprobiert:

set folder_1=X:\Ordner\Ordner\Archiv\Bla1\%%j-%%k
(Ohne vorher irgendwelche Konstanten zu bestimmen.)

und

set erstelldat=%date:.=-%
set targetdat=%erstelldat:~3%
...
set folder_1=X:\Ordner\Ordner\Archiv\Bla1\%targetdat%\


Hast du irgendwelche Tipps?
Ich habe auch nicht die größte Ahnung, habe diesen Batch-Code auch nur mit Mithilfe dieses Forums hinbekommen.

Beste Grüße
Felix
Biber
Biber 16.03.2010 um 13:05:53 Uhr
Goto Top
Moin SWUser,

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
SWuser
SWuser 16.03.2010 um 13:21:49 Uhr
Goto Top
Hallo Biber,

Danke für deinen Hinweis!

Ich habe leider herade keine Zeit das auszuprobieren. Ich werde es spätestens morgen (vormittags) testen können und mich wieder melden.

Danke bis hierher.

Beste Grüße
Felix
SWuser
SWuser 17.03.2010 um 08:22:40 Uhr
Goto Top
Guten Morgen!

Ich habe den Code mal ausgetestet und passend umgebaut. Zwecks Überprüfung habe ich auch noch eine Pause am Ende eingebaut.
1. Wenn ich den Prozess nun ausführe, dann sagt er mir, dass er die Datei nicht finden kann:


[URL=http://img3.imageshack.us/i/archiverstellen.jpg/][IMG=http://img3.imageshack.us/img3/8609/archiverstellen.jpg][/IMG][/URL]

2. Was meinst du mit:
REM statt set folder_1=X:\Ordner\Ordner\Archiv\Bla1\03-2010


Beste Grüße
Felix

Edit: irgendwie klappt das nicht mit dem Bild... aber über den Link kann man es ja auch sehen.
SWuser
SWuser 17.03.2010 um 08:57:39 Uhr
Goto Top
Zitat von @SWuser:
Guten Morgen!

Ich habe den Code mal ausgetestet und passend umgebaut. Zwecks Überprüfung habe ich auch noch eine Pause am Ende
eingebaut.
1. Wenn ich den Prozess nun ausführe, dann sagt er mir, dass er die Datei nicht finden kann:


[URL=http://img3.imageshack.us/i/archiverstellen.jpg/][IMG=http://img3.imageshack.us/img3/8609/archiverstellen.jpg][/IMG][/URL]

2. Was meinst du mit:
> REM statt set folder_1=X:\Ordner\Ordner\Archiv\Bla1\03-2010
> 


Beste Grüße
Felix

Edit: irgendwie klappt das nicht mit dem Bild... aber über den Link kann man es ja auch sehen.


Hat sich erledigt, war ein winziger Fehler im Code!
Es läuft jetzt!

Vielen Dank für den Hinweis!