Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Automatisiertes Ändern eines Batch-Codes.

Frage Entwicklung Batch & Shell

Mitglied: SWuser

SWuser (Level 1) - Jetzt verbinden

16.03.2010, aktualisiert 11:27 Uhr, 3777 Aufrufe, 6 Kommentare

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:

01.
@echo off &setlocal 
02.
:: die Dateiendung 
03.
set ext=*.dat 
04.
:: die Verzeichnisse 
05.
set folder_1=X:\Ordner\Ordner\Archiv\Bla1\03-2010 
06.
set folder_2=X:\Ordner\Ordner\Archiv\Bla2\03-2010 
07.
set folder_3=X:\Ordner\Ordner\Archiv\Bla3\03-2010 
08.
set folder_4 ... usw 
09.
 
10.
set nr=0 
11.
for /f "delims== tokens=1*" %%a in ('set folder_') do set "folder=%%b" &call :sub 
12.
 
13.
exit 
14.
 
15.
:sub 
16.
set /a nr+=1 
17.
pushd "%folder%" 
18.
:: Name kreieren 
19.
for /f "delims=. tokens=1-3" %%i in ("%date%") do set "name=blaarchiv_%%j-%%k.cab" 
20.
:: .ddf Datei erstellen 
21.
chcp 1252>nul 
22.
>directives.ddf echo .Option Explicit 
23.
>>directives.ddf echo .Set CabinetNameTemplate=%name% 
24.
>>directives.ddf echo .Set CompressionType=MSZIP 
25.
>>directives.ddf echo .Set UniqueFiles="OFF" 
26.
>>directives.ddf echo .Set Cabinet=on 
27.
>>directives.ddf echo .Set DiskDirectory1=Temp 
28.
for /f "delims=" %%i in ('dir /a-d /b "%ext%"') do echo "%%i">>directives.ddf 
29.
chcp 850>nul 
30.
:: makecab aufrufen 
31.
makecab /f directives.ddf 
32.
:: aufräumen 
33.
del setup.inf 
34.
del setup.rpt 
35.
del directives.ddf 
36.
move "Temp\%name%" ".\%name%" 
37.
rd Temp 
38.
popd 
39.
::goto :eof 
40.
 

Edit:
Es muss nicht im Archivierungsprozess selber sein, es kann auch ein neuer Prozess sein.
Mitglied: bastla
16.03.2010 um 11:57 Uhr
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
Bitte warten ..
Mitglied: SWuser
16.03.2010 um 12:52 Uhr
Hallo bastla!

Danke für deinen Tipp!

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

Habe zwei Varianten ausprobiert:

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

und

01.
set erstelldat=%date:.=-% 
02.
set targetdat=%erstelldat:~3% 
03.
... 
04.
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
Bitte warten ..
Mitglied: Biber
16.03.2010 um 13:05 Uhr
Moin SWUser,

du kannst doch die Mimik der angesprochenen Zeile 19 auch schon weiter oben verwenden.
01.
.... 
02.
for /f "delims=. tokens=1-3" %%i in ("%date%") do ( 
03.
    REM statt set folder_1=X:\Ordner\Ordner\Archiv\Bla1\03-2010--> bzw 2010-03 
04.
     set "folder_1=X:\Ordner\Ordner\Archiv\Bla1\%%k-%j" 
05.
     set "folder_2=X:\Ordner\Ordner\Archiv\Bla1\%%k-%j" 
06.
     set "folder_3=X:\Ordner\Ordner\Archiv\Bla1\%%k-%j" 
07.
      REM usw 
08.
09.
... 
10.
set nr=0 
11.
...
Grüße
Biber
Bitte warten ..
Mitglied: SWuser
16.03.2010 um 13:21 Uhr
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
Bitte warten ..
Mitglied: SWuser
17.03.2010 um 08:22 Uhr
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:
01.
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.
Bitte warten ..
Mitglied: SWuser
17.03.2010 um 08:57 Uhr
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:
01.
> REM statt set folder_1=X:\Ordner\Ordner\Archiv\Bla1\03-2010 
02.
> 

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!
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Batch & Shell
gelöst Datum per batch ändern in Tagen (2)

Frage von crawnby zum Thema Batch & Shell ...

IDE & Editoren
gelöst IP und DNS per Batch ändern (9)

Frage von andyw5 zum Thema IDE & Editoren ...

Batch & Shell
gelöst Per Batch FTP-Server Dateien ändern (1)

Frage von Marlon1 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (33)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...

Windows Netzwerk
Windows 10 RDP geht nicht (18)

Frage von Fiasko zum Thema Windows Netzwerk ...