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

CMD - Batch - For-Schleife-Übergabe

Frage Entwicklung Batch & Shell

Mitglied: kallewirsch

kallewirsch (Level 1) - Jetzt verbinden

27.11.2012, aktualisiert 21:53 Uhr, 3884 Aufrufe, 2 Kommentare

Hallo Forum,

ich habe folgende Verzeichnisstruktur:
01.
D:\Ordner_A\Unterordner_A\2011\01\01 
02.
D:\Ordner_A\Unterordner_A\2011\01\02 
03.
D:\Ordner_A\Unterordner_A\2011\01\03 
04.
D:\Ordner_A\Unterordner_A\2011\01\04 
05.
... 
06.
... 
07.
D:\Ordner_A\Unterordner_A\2011\01\31 
08.
D:\Ordner_A\Unterordner_A\2011\02\01 
09.
D:\Ordner_A\Unterordner_A\2011\02\02 
10.
D:\Ordner_A\Unterordner_A\2011\02\03 
11.
D:\Ordner_A\Unterordner_A\2011\02\04 
12.
... 
13.
... 
14.
D:\Ordner_A\Unterordner_A\2011\02\28 
15.
D:\Ordner_A\Unterordner_A\2011\03\01 
16.
D:\Ordner_A\Unterordner_A\2011\03\02 
17.
D:\Ordner_A\Unterordner_A\2011\03\03 
18.
D:\Ordner_A\Unterordner_A\2011\03\04 
19.
... 
20.
... 
21.
D:\Ordner_A\Unterordner_A\2011\03\31 
22.
... 
23.
... 
24.
... 
25.
... 
26.
D:\Ordner_A\Unterordner_A\2011\12\01 
27.
D:\Ordner_A\Unterordner_A\2011\12\02 
28.
D:\Ordner_A\Unterordner_A\2011\12\03 
29.
D:\Ordner_A\Unterordner_A\2011\12\04 
30.
... 
31.
... 
32.
D:\Ordner_A\Unterordner_A\2011\12\31
Ich möchte dann im Batch folgendes erreichen:
1. Ermitteln wieviele Tagesverzeichnisse im aktuellen Monatsverzeichniss
2. Die im aktuellen Tagesverzeichniss vorhandenen Dateien solle dann alle im zugehörigen Monat zu einem Tageszip nach
der Benennenung TT.zip mit 7za.exe gepackt werden.
3. Der beim ZIP-Vorgang entstehende Errorcode muss abgeprüft werden, gleich NULL, dann alle in das ARCHIV gepackte
Dateiein löschen.
4. Beim auftretenden Monatswechsel solle dann alle Archive des Vormonats zu einem Archiv mit der Bezeichnung MM.ZIP
gepackt werden, ebenfalls den ERRORLEVEL abfragen, wenn gleich NULL, dann die in das ARCHIV gepackte Dateien (also die
Tageszips) löschen.
5. Das wars....

Ich habe den Punkt 1 mit folgender FOR-Schleife:
for /D %%m in (D:\Ordner_A\Unterordner_A\2011\*) do (for /D %%d in (%%m\*) do echo %%d)
Damit schaffe ich, sowohl, die Monats- und Tagesverzeichnisse auszugeben.

Und das wars, ich bekomme es irgendwie nicht hin....
Ich hatte eigentlich geplant, anstelle des echo %%d eine weitere for-Schleife mit dem Parameter /F und delims und tokens zu arbeiten, aber....

Nun hoffe ich auf Eure Unterstützung.

Vielen Dank Forum.
Mitglied: bastla
27.11.2012, aktualisiert um 22:21 Uhr
Hallo kallewirsch!

Versuch mal, auf dieser Grobstruktur aufzubauen:
01.
@echo off & setlocal 
02.
set "Basis=D:\Ordner_A\Unterordner_A" 
03.
set "Jahr=2011" 
04.
 
05.
for /d %%m in ("%Basis%\%Jahr%\*") do ( 
06.
    echo Beginn Monat: %%~nm 
07.
    for /d %%d in ("%%m\*") do ( 
08.
        echo Datum: %Jahr%-%%~nm-%%~nd 
09.
10.
    echo Ende Monat: %%~nm 
11.
    echo ################# 
12.
)
In der Online-Hilfe (mit "for /?") findest Du gegen Ende eine Erklärung zu "%%~nm" ...

Grüße
bastla
Bitte warten ..
Mitglied: Friemler
27.11.2012, aktualisiert um 23:06 Uhr
Hallo kallewirsch,

hier noch was zum Testen:
01.
@echo off & setlocal 
02.
 
03.
pushd "%~dp0" 
04.
 
05.
 
06.
set "BaseDir=D:\Ordner_A\Unterordner_A" 
07.
set "7Zip=.\7za.exe" 
08.
 
09.
set "VBScript1=%TEMP%\GetCurDate.vbs" 
10.
set "VBScript2=%TEMP%\GetDayBefore.vbs" 
11.
 
12.
 
13.
> "%VBScript1%" echo.WScript.Echo CStr(Day(Date)) + "." + CStr(Month(Date)) + "." + CStr(Year(Date)) 
14.
 
15.
> "%VBScript2%" echo.intDay   = WScript.Arguments(0) 
16.
>>"%VBScript2%" echo.intMonth = WScript.Arguments(1) 
17.
>>"%VBScript2%" echo.intYear  = WScript.Arguments(2) 
18.
>>"%VBScript2%" echo. 
19.
>>"%VBScript2%" echo.vntTheDay    = DateSerial(intYear, intMonth, intDay) 
20.
>>"%VBScript2%" echo.vntDayBefore = DateAdd("d", -1, vntTheDay) 
21.
>>"%VBScript2%" echo. 
22.
>>"%VBScript2%" echo.WScript.Echo CStr(Day(vntDayBefore)) + "." + CStr(Month(vntDayBefore)) + "." + CStr(Year(vntDayBefore)) 
23.
 
24.
 
25.
for /f "tokens=1-3 delims=." %%a in ('cscript /nologo "%VBScript1%"') do ( 
26.
  for /f "delims=" %%n in ('dir /b /a:-d "%BaseDir%\%%c\%%b\%%a" ^| find /v /c "\"') do ( 
27.
    echo %%n Dateien in %BaseDir%\%%c\%%b\%%a 
28.
29.
 
30.
  "%7Zip%" a -tzip "%BaseDir%\%%c\%%b\%%a.zip" "%BaseDir%\%%c\%%b\%%a\*.*" > NUL && ( 
31.
    del "%BaseDir%\%%c\%%b\%%a\*.*" 
32.
33.
 
34.
  if %%a equ 1 ( 
35.
    for /f "tokens=1-3 delims=." %%d in ('cscript /nologo "%VBScript2%" %%a %%b %%c') do ( 
36.
      "%7Zip%" a -tzip "%BaseDir%\%%f\%%e.zip" "%BaseDir%\%%f\%%e\*.zip" > NUL && ( 
37.
        del "%BaseDir%\%%f\%%e\*.zip" 
38.
39.
40.
41.
42.
 
43.
del "%VBScript1%" 
44.
del "%VBScript2%" 
45.
 
46.
popd
Sollte auch beim Jahreswechsel funktionieren.

Gruß
Friemler
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Verschachtelte For Schleife für Batch Neuling (3)

Frage von yperiu zum Thema Batch & Shell ...

Batch & Shell
gelöst Verlinkung erstellen Batch Datei mit for Schleife (2)

Frage von rusdav zum Thema Batch & Shell ...

Batch & Shell
gelöst CMD: icacls in for-Schleife (2)

Frage von Lowrider614 zum Thema Batch & Shell ...

Batch & Shell
gelöst Batch Problem bei einer For Schleife (2)

Frage von Juergen42 zum Thema Batch & Shell ...

Neue Wissensbeiträge
Google Android

Cyanogenmod alternative Downloadquelle

(5)

Tipp von Lochkartenstanzer zum Thema Google Android ...

Batch & Shell

Batch als Dienst bei Systemstart ohne Anmeldung ausführen

(5)

Tipp von tralveller zum Thema Batch & Shell ...

Sicherheits-Tools

Sicherheitstest von Passwörtern für ganze DB-Tabellen

(1)

Tipp von gdconsult zum Thema Sicherheits-Tools ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
gelöst Statische Routen mit ISC-DHCP Server für Android Devices (22)

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

Server
gelöst Wie erkennen, dass nur deutsche IPs Zugang zu einer Website haben? (22)

Frage von Coreknabe zum Thema Server ...

Exchange Server
gelöst Migration Exchange 2007 zu 2013 - Public Folder teilweise weg (16)

Frage von Andy1987 zum Thema Exchange Server ...

Outlook & Mail
Outlook 2010 mit Exchange 2016 (15)

Frage von slansky zum Thema Outlook & Mail ...