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

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

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

Member: bastla
bastla Mar 16, 2010 at 10:57:01 (UTC)
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
Member: SWuser
SWuser Mar 16, 2010 at 11:52:59 (UTC)
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
Member: Biber
Biber Mar 16, 2010 at 12:05:53 (UTC)
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
Member: SWuser
SWuser Mar 16, 2010 at 12:21:49 (UTC)
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
Member: SWuser
SWuser Mar 17, 2010 at 07:22:40 (UTC)
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.
Member: SWuser
SWuser Mar 17, 2010 at 07:57:39 (UTC)
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!