Batch Datei WinRAR
Starten von WinRAR mittels einer Batch Datei
Hallo
Also bin zum ersten mal hier aber ich habe da ein kleines Problem:
Ich möchte monatlich mittels einer Batch Datei Winrar starten und durch Starten von WinRAR eine Textdatei komprimieren bzw. packen.
Bin für jede Hilfe dankbar
mfg carinthianwerewolf
Hallo
Also bin zum ersten mal hier aber ich habe da ein kleines Problem:
Ich möchte monatlich mittels einer Batch Datei Winrar starten und durch Starten von WinRAR eine Textdatei komprimieren bzw. packen.
Bin für jede Hilfe dankbar
mfg carinthianwerewolf
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 30961
Url: https://administrator.de/forum/batch-datei-winrar-30961.html
Ausgedruckt am: 23.12.2024 um 10:12 Uhr
61 Kommentare
Neuester Kommentar
Moin carinthianwerewolf,
würd ich mir überlegen, ob und wie ich das in einem Batch verdrahte, der nur einmal im Monat läuft.
Diese LabView-Testdaten-Bereitsteller haben doch einen Sockenschuss, wenn die irgendwo jeden Monat ein Verzeichnis "September" oder "März" (oder "Maerz" ??) anlegen, ohne die Verzeichnisnamen irgendwo in einem Log niederzuschreiben. *kopfschüttel*
Wie unterscheidest Du dann "September 2006" und "September 2003"?
Also: Strategien ( bewertete Reihenfolge; die praktikabelsten zuerst):
- auf monatlichen automatischen Start der Batch verzichten und einmal im Monat den Batch anpassen (meine ich ernst)
- auf der LabView-Seite versuchen, ob da nicht auch ein vorhersagbarer Verzeichnis-Name generieriert werden kann (z.B. im Format YYYY-MM oder so). Denn wie die meinen, den "März" schreiben zu müssen, weißt Du gar nicht vorher.
- dritte Strategie - überprüfen, ob nicht deren "letzte Lieferung" in irgendeiner Log-Datei steht- jede automatische Nachbildung eines nicht genau dokumentierten Algorithmius wie "Lege-Monatsverzeichnisse an" ist pure Rumraterei.
- oder, einmal im Monat, vor dem Start des Batches, eine Umgebungsvariable %AktuellerMonat% setzen. aber dann kannst Du genauso die eine WinRar-Zeile von Hand abschicken..
Wenn Du alle Warnungen in den Wind schlagen solltest und Dir diesen "September" oder ähnliches "berechnen" willst:
Aber dennoch..bei den wackeligen Vorgaben würde ich es manuell machen.
Gruß
Biber
würd ich mir überlegen, ob und wie ich das in einem Batch verdrahte, der nur einmal im Monat läuft.
Diese LabView-Testdaten-Bereitsteller haben doch einen Sockenschuss, wenn die irgendwo jeden Monat ein Verzeichnis "September" oder "März" (oder "Maerz" ??) anlegen, ohne die Verzeichnisnamen irgendwo in einem Log niederzuschreiben. *kopfschüttel*
Wie unterscheidest Du dann "September 2006" und "September 2003"?
Also: Strategien ( bewertete Reihenfolge; die praktikabelsten zuerst):
- auf monatlichen automatischen Start der Batch verzichten und einmal im Monat den Batch anpassen (meine ich ernst)
- auf der LabView-Seite versuchen, ob da nicht auch ein vorhersagbarer Verzeichnis-Name generieriert werden kann (z.B. im Format YYYY-MM oder so). Denn wie die meinen, den "März" schreiben zu müssen, weißt Du gar nicht vorher.
- dritte Strategie - überprüfen, ob nicht deren "letzte Lieferung" in irgendeiner Log-Datei steht- jede automatische Nachbildung eines nicht genau dokumentierten Algorithmius wie "Lege-Monatsverzeichnisse an" ist pure Rumraterei.
- oder, einmal im Monat, vor dem Start des Batches, eine Umgebungsvariable %AktuellerMonat% setzen. aber dann kannst Du genauso die eine WinRar-Zeile von Hand abschicken..
Wenn Du alle Warnungen in den Wind schlagen solltest und Dir diesen "September" oder ähnliches "berechnen" willst:
....(im Batch)
for /f "delims=. tokens=2" %%i in ("%date%") do Set "MM=%%i"
If [%MM%]==[01] set "AktMonat=Januar"
If [%MM%]==[02] set "AktMonat=Februar"
...
If [%MM%]==[12] set "AktMonat=Dezember"
if exist c:\%Aktmonat%\*.* (
C:\programme\winrar\winrar.exe a -ep1 -r c:\%AktMonat%.rar c:\%AktMonat%\*.*
)
Aber dennoch..bei den wackeligen Vorgaben würde ich es manuell machen.
Gruß
Biber
Im Prinzip ja, carinthianwerewolf,
wobei ich natürlich oben nur die Monatswerte ermittle (würde ja für Deinen Zweck ausreichen, außer wenn Du irgendwann mal täglich rar-en willst oder nach Silvester immer noch den gleichen Batch starten willst).
Wie Du das ganze Systemdatum aufdröselst in Jahr, Monat, Tach etc ist in einem der Tutorials im Bereich "Batch & Shell" beschrieben.
"Datums- und Zeitvariablen im Batch" heißt das da.
Dann musst Du halt Deine Pfadangaben "Lw:\LabDaten\2005\[Monat]" voreben oder eben auch das Jahr aus dem Systemdatum ermitteln.
Mach doch erst mal den Anfang - korrekturlesen kann ich Deinen Schnipsel dann gerne noch mal.
Außerdem...*gg - was spricht bei Bätchen dagegen, dass die stabiler und robuster laufen als Software von National Instruments.
Ich hab jetzt extra nicht geschrieben "...als Software von M$.."
Gruß
Biber
wobei ich natürlich oben nur die Monatswerte ermittle (würde ja für Deinen Zweck ausreichen, außer wenn Du irgendwann mal täglich rar-en willst oder nach Silvester immer noch den gleichen Batch starten willst).
Wie Du das ganze Systemdatum aufdröselst in Jahr, Monat, Tach etc ist in einem der Tutorials im Bereich "Batch & Shell" beschrieben.
"Datums- und Zeitvariablen im Batch" heißt das da.
Dann musst Du halt Deine Pfadangaben "Lw:\LabDaten\2005\[Monat]" voreben oder eben auch das Jahr aus dem Systemdatum ermitteln.
Mach doch erst mal den Anfang - korrekturlesen kann ich Deinen Schnipsel dann gerne noch mal.
Außerdem...*gg - was spricht bei Bätchen dagegen, dass die stabiler und robuster laufen als Software von National Instruments.
Ich hab jetzt extra nicht geschrieben "...als Software von M$.."
Gruß
Biber
<-------hier bitte ein: echo AktMonat: [%AktMonat%]
if exist c:\%Aktmonat%\*.* (
<--------------hier darf keine Leerzeile
C:\programme\winrar\winrar.exe a -ep1 -r c:\%AktMonat%.rar c:\%AktMonat%\*.*
<--------------hier darf keine Leerzeile
)
??? c:\%Aktmonat%\*.* --> ich dachte, Du hast es in einer Verzeichnisstruktur: [Lw:]\blablubb\YYYY\monatsname ??
Gruß
Biber
if exist c:\%Aktmonat%\*.* (
<--------------hier darf keine Leerzeile
C:\programme\winrar\winrar.exe a -ep1 -r c:\%AktMonat%.rar c:\%AktMonat%\*.*
<--------------hier darf keine Leerzeile
)
??? c:\%Aktmonat%\*.* --> ich dachte, Du hast es in einer Verzeichnisstruktur: [Lw:]\blablubb\YYYY\monatsname ??
Gruß
Biber
Sorry, mein Fehler...
also ...Monat "04" erkennt er dann ja schon mal..
Jetzt bitte als Ersatz für den "alten" Batch diesen hier:
::---------Snipp Test.bat
@echo off & Setlocal
for /f "delims=. tokens=2" %%i in ("%date%") do Set "MM=%%i"
If [%MM%]==[01] set "AktMonat=Januar"
If [%MM%]==[02] set "AktMonat=Februar"
If [%MM%]==[03] set "AktMonat=Maerz"
If [%MM%]==[04] set "AktMonat=April"
If [%MM%]==[05] set "AktMonat=Mai"
If [%MM%]==[06] set "AktMonat=Juni"
If [%MM%]==[07] set "AktMonat=Juli"
If [%MM%]==[08] set "AktMonat=August"
If [%MM%]==[09] set "AktMonat=September"
If [%MM%]==[10] set "AktMonat=Oktober"
If [%MM%]==[11] set "AktMonat=November"
If [%MM%]==[12] set "AktMonat=Dezember"
Echo Aktmonat [%Aktmonat%]
Echo on
if exist c:\%Aktmonat%\*.* (
C:\programme\winrar\winrar.exe a -ep1 -r c:\%AktMonat%.rar c:\%AktMonat%\*.*
)
::----------
also ...Monat "04" erkennt er dann ja schon mal..
Jetzt bitte als Ersatz für den "alten" Batch diesen hier:
::---------Snipp Test.bat
@echo off & Setlocal
for /f "delims=. tokens=2" %%i in ("%date%") do Set "MM=%%i"
If [%MM%]==[01] set "AktMonat=Januar"
If [%MM%]==[02] set "AktMonat=Februar"
If [%MM%]==[03] set "AktMonat=Maerz"
If [%MM%]==[04] set "AktMonat=April"
If [%MM%]==[05] set "AktMonat=Mai"
If [%MM%]==[06] set "AktMonat=Juni"
If [%MM%]==[07] set "AktMonat=Juli"
If [%MM%]==[08] set "AktMonat=August"
If [%MM%]==[09] set "AktMonat=September"
If [%MM%]==[10] set "AktMonat=Oktober"
If [%MM%]==[11] set "AktMonat=November"
If [%MM%]==[12] set "AktMonat=Dezember"
Echo Aktmonat [%Aktmonat%]
Echo on
if exist c:\%Aktmonat%\*.* (
C:\programme\winrar\winrar.exe a -ep1 -r c:\%AktMonat%.rar c:\%AktMonat%\*.*
)
::----------
Meinetwegen, carinmitdemlangennachnamen,
dann (Skizze):
Erstens NACH dem RAR-Befehl den Errorlevel prüfen:
...
..rar.exe....bla fasel ....
IF Errorlevel 1 (
echo RAR ging in die Grütze mit Errorlevel %Errorlevel%
Goto :eof
)
:: hier der OKAY-Fall: IF ERRORLEVEL 0 ...
Rd c:\%AktMonat% /s /y >nul
:: ...oder welche Parameter Du auch brauchen magst. Siehe RD /?
Bei Fragen weißt Du ja, wo Du mich findest.
Gruß
Biber
dann (Skizze):
Erstens NACH dem RAR-Befehl den Errorlevel prüfen:
...
..rar.exe....bla fasel ....
IF Errorlevel 1 (
echo RAR ging in die Grütze mit Errorlevel %Errorlevel%
Goto :eof
)
:: hier der OKAY-Fall: IF ERRORLEVEL 0 ...
Rd c:\%AktMonat% /s /y >nul
:: ...oder welche Parameter Du auch brauchen magst. Siehe RD /?
Bei Fragen weißt Du ja, wo Du mich findest.
Gruß
Biber
carinthianwerewolf
Tja, wir Bremer kennen keine Kärntner Werwölfe und ihr keine Grütze (nicht mal Rote).
Mit nul (mit einem "L") ist Absicht.
Unter *nix ist das das /dev/null (mit zwei "L")
In der DOS und Windows-Welt heißt das Null-Device "nul" bzw. alle Standard-Devices haben 3 Zeichen (CON, ERR, PRN, AUX, NUL)
NUL ist das M$-Nirwana, da wollte ich die Vollzugsmeldungen vom RD hinschicken.
Kannst es aber natürlich auch in eine Log-Datei schreiben....Du findest im Bereich Batch und und Shell ein paar Beispiele für Batch mit Logdatei.
Grüße
Biber
Tja, wir Bremer kennen keine Kärntner Werwölfe und ihr keine Grütze (nicht mal Rote).
Mit nul (mit einem "L") ist Absicht.
Unter *nix ist das das /dev/null (mit zwei "L")
In der DOS und Windows-Welt heißt das Null-Device "nul" bzw. alle Standard-Devices haben 3 Zeichen (CON, ERR, PRN, AUX, NUL)
NUL ist das M$-Nirwana, da wollte ich die Vollzugsmeldungen vom RD hinschicken.
Kannst es aber natürlich auch in eine Log-Datei schreiben....Du findest im Bereich Batch und und Shell ein paar Beispiele für Batch mit Logdatei.
Grüße
Biber
*eherSpringIchLachendInDieKreissägeBevorIchMontagsNochmalVersucheFragenZuBeantworten....*
*grummelbrummelbrummelfluchundschimpf*
Wir machen das jetzt anders - mit diesen Zeilen:
Geht denn dieser Montag gar nicht rum....?
Grüße Biber
*grummelbrummelbrummelfluchundschimpf*
Wir machen das jetzt anders - mit diesen Zeilen:
:: ---snipp MachMirDenCarinthianwerewolfRarVomVormonat.bat
@echo off & setlocal
echo wscript.echo monthname(datepart("m", dateAdd("m",-1, date())))>%temp%\lastmonth.vbs
For /f %%i in ('cscript //nologo %temp%\lastmonth.vbs') do set "LastMonth=%%i"
del %temp%\lastmonth.vbs
:: ##uncomment for Debug## echo LastMonth [%LastMonth%]
if [%LastMonth%]== goto :eof
if exist c:\%LastMonth%\*.* (
C:\programme\winrar\winrar.exe a -ep1 -r c:\%LastMonth%.rar c:\%LastMonth%\*.*
)
IF Errorlevel 1 (
echo RAR . %Errorlevel%
Goto :eof
)
Rd c:\%LastMonth% /s /q >nul
:: ---snapp MachMirDencarinthianwerewolfRarVomVormonat.bat
Geht denn dieser Montag gar nicht rum....?
Grüße Biber
Na, wir nähern uns doch dem Ende, hoffe ich...
- entkommentier bitte mal das "echo Lastmonth.." aus der Zeile ##uncomment ..bla ##
- lass Dir vom CMDPrompt aus anzeigen, welcher Monat ermittelt wird.
- wenn keiner... glaub ich nicht
- wenn "M}rz" oder ähnlich schräges-> dann ist es die falsche Codepage bei Dir.
->in diesem Fall am Anfang des Batches eine Zeile "CHCP 1252 >nul" einfügen.
-> oder, um festzustellen, ob die Umlaute das Problem sind, bitte oben in der 2. Zeile testweise ändern:
Von JETZT: dateAdd("m",-1, .... -->nimmt Monat -1
Zum Test: dateAdd("m",-2, .... -->nimmt Monat -2
...dann nimmt er den Februar bzw. den Vor-Vormonat...
Wenn das auch nicht klappt, sind die Umlaute unschuldig...
So ein @~##!!-Montag..... hoffentlich fängt nicht auch noch meine Sauce Hollandaise an zu stocken..
- entkommentier bitte mal das "echo Lastmonth.." aus der Zeile ##uncomment ..bla ##
- lass Dir vom CMDPrompt aus anzeigen, welcher Monat ermittelt wird.
- wenn keiner... glaub ich nicht
- wenn "M}rz" oder ähnlich schräges-> dann ist es die falsche Codepage bei Dir.
->in diesem Fall am Anfang des Batches eine Zeile "CHCP 1252 >nul" einfügen.
-> oder, um festzustellen, ob die Umlaute das Problem sind, bitte oben in der 2. Zeile testweise ändern:
Von JETZT: dateAdd("m",-1, .... -->nimmt Monat -1
Zum Test: dateAdd("m",-2, .... -->nimmt Monat -2
...dann nimmt er den Februar bzw. den Vor-Vormonat...
Wenn das auch nicht klappt, sind die Umlaute unschuldig...
So ein @~##!!-Montag..... hoffentlich fängt nicht auch noch meine Sauce Hollandaise an zu stocken..
Also..wenn von WinRar der Errorlevel 1 zurückkommpt, dann kann möglicherweise WinRar keine Umlaute verarbeiten.
Denn wenn der Batch dort ankommt (bei "WinRar....bla...", dann hat er ja schon ein Verzeichnis %LastMonth% gefunden.
Bitte mal direkt am CMD-Prompt prüfen, ob WinRar ein Verzeichnis "März" verarbeiten bzw ein Archiv "März.rar" anlegen kann.
Das hab ich doch vor 20 Posts schon mal erwähnt, dass international konsensfähige Verzeichnisnamen wie "2006-03" eventuell sinnvoller wären als welche mit Umlauten..*hochscroll*
Klappt es denn mit "Februar" oder dem "April"? Ich hab doch nix hier zum Testen...
Denn wenn der Batch dort ankommt (bei "WinRar....bla...", dann hat er ja schon ein Verzeichnis %LastMonth% gefunden.
Bitte mal direkt am CMD-Prompt prüfen, ob WinRar ein Verzeichnis "März" verarbeiten bzw ein Archiv "März.rar" anlegen kann.
Das hab ich doch vor 20 Posts schon mal erwähnt, dass international konsensfähige Verzeichnisnamen wie "2006-03" eventuell sinnvoller wären als welche mit Umlauten..*hochscroll*
Klappt es denn mit "Februar" oder dem "April"? Ich hab doch nix hier zum Testen...
Na, ist doch prima! *positivdenk*
dann kann doch nur hier:
C:\programme\winrar\winrar.exe a -ep1 -r c:\%LastMonth%.rar c:\%LastMonth%\*.*
was in die Grütze (oder bei Euch: in den Palatschinken) gehen.
Gib doch mal die Zeile "aufgelöst" ein am CMD-Prompt:
C:\programme\winrar\winrar.exe a -ep1 -r c:\April.rar c:\April\*.*
-bzw-
C:\programme\winrar\winrar.exe a -ep1 -r c:\März.rar c:\März\*.*
und achte auf Fehlermeldungen.
vorletzter Schritt:
Am CMD-Prompt:
Set LastMonth=März
C:\programme\winrar\winrar.exe a -ep1 -r c:\%LastMonth%.rar c:\%LastMonth%\*.*
Das werden wir ja wohl noch fixen, bevor die Montagssonne untergeht...
dann kann doch nur hier:
C:\programme\winrar\winrar.exe a -ep1 -r c:\%LastMonth%.rar c:\%LastMonth%\*.*
was in die Grütze (oder bei Euch: in den Palatschinken) gehen.
Gib doch mal die Zeile "aufgelöst" ein am CMD-Prompt:
C:\programme\winrar\winrar.exe a -ep1 -r c:\April.rar c:\April\*.*
-bzw-
C:\programme\winrar\winrar.exe a -ep1 -r c:\März.rar c:\März\*.*
und achte auf Fehlermeldungen.
vorletzter Schritt:
Am CMD-Prompt:
Set LastMonth=März
C:\programme\winrar\winrar.exe a -ep1 -r c:\%LastMonth%.rar c:\%LastMonth%\*.*
Das werden wir ja wohl noch fixen, bevor die Montagssonne untergeht...
Wärs einfacher wenn wir nicht die Monatsnamen nehmen sondern Zahlen für die Monate...
Jetzt, nach dem 30sten Ping-Pong-Post, auf einmal doch den leichteren Weg? jetzt will ich auch nicht mehr.. *beleidigtSchmoll*
Also- empfehlen würde ich diese "algorithmisch zuverlässigen" Verzeichnisnamen "YYYY-MM" oder ähnlich schon. Mag zwar nicht so ästhetisch aussehen, aber es soll ja eh nur ein Messdaten-Archivier-Batch-Schnipsel werden und dafür gibt es ja weder Dank noch Lob von Deinen Chefs und auch selten einen Pulitzerpreis.
Wenn Du das nicht ändern willst:
Dann bitte das Spielchen, was Du im Posting eben beschrieben hast, nochmal, aber erst (alles am CMD-Prompt):
CHCP
(sollte anzeigen
Aktive Codepage: 850.
-->Ändern auf
CHCP 1252
..und dann diesen Rar-Test nochmal.
Wenn es dann klappt, dann den "CHCP 1252" in das Bätschelchen einspeisen.
Lass Dir Zeit...dauert ja noch bis zur Abenddämmerung.
Und so geht wenigstens dieser Montag rum...
?? Welches alte - wir hatten mehrere heute?
Wir können auch den ganz alten Kram reaktivieren mit
IF [%MM%]==[01] set "Aktmonat=Dezember"
IF [%MM%]==[02] set "Aktmonat=Januar"
...
Aber es wird sich noch wohl keiner von uns beiden von einer Handvoll Batchzeilen in die Knie zwingen lassen, oder?
Klappt doch schon mehr bei uns, als bei Vista jemals klappen wird..rein prozentual gesehen
[Edit] *Dem Werwölfchen mal einen Baldriantee aufsetz* [/Edit]
Wir können auch den ganz alten Kram reaktivieren mit
IF [%MM%]==[01] set "Aktmonat=Dezember"
IF [%MM%]==[02] set "Aktmonat=Januar"
...
Aber es wird sich noch wohl keiner von uns beiden von einer Handvoll Batchzeilen in die Knie zwingen lassen, oder?
Klappt doch schon mehr bei uns, als bei Vista jemals klappen wird..rein prozentual gesehen
[Edit] *Dem Werwölfchen mal einen Baldriantee aufsetz* [/Edit]
Ist denn überhaupt noch etwas da zum Archivieren?
Oder schon alle Ordner gepackt und gelöscht?
Liegen noch "alte" Zielarchive auf C:\, die noch mit einer anderen Codepage gepackt wurden?
Stell bitte erste wieder eine saubere Testumgebung her und pack mal irgendwas ein/aus vom CMD-Prompt.
Nach Deinem Baldriantee, mein ich.
Oder schon alle Ordner gepackt und gelöscht?
Liegen noch "alte" Zielarchive auf C:\, die noch mit einer anderen Codepage gepackt wurden?
Stell bitte erste wieder eine saubere Testumgebung her und pack mal irgendwas ein/aus vom CMD-Prompt.
Nach Deinem Baldriantee, mein ich.
In solchen Fällen hilft nur:
- Rechner runterfahren
- eine Stunde etwas Nettes machen (Vorschlagsliste kann ich mailen)
- danach noch einmal die vorhandenen Sourcen anSCHAUen (nicht anstarten)
- das fehlende Leerzeichen ergänzen/den Tippfehler in Zeile 17 berichtigen
- Produktiv setzen
- drei Stunden was Nettes machen (erweiterte Vorschlagsliste kann ich mailen)
Im Ernst... das kann nur was banales sein - Du siehst es nur nicht, weil Du schon zu lange draufguckst.
Reiß Dich kurz los und mach in einer Stunde oder morgen weiter.
Ich werde dann auch hier sein.
- Rechner runterfahren
- eine Stunde etwas Nettes machen (Vorschlagsliste kann ich mailen)
- danach noch einmal die vorhandenen Sourcen anSCHAUen (nicht anstarten)
- das fehlende Leerzeichen ergänzen/den Tippfehler in Zeile 17 berichtigen
- Produktiv setzen
- drei Stunden was Nettes machen (erweiterte Vorschlagsliste kann ich mailen)
Im Ernst... das kann nur was banales sein - Du siehst es nur nicht, weil Du schon zu lange draufguckst.
Reiß Dich kurz los und mach in einer Stunde oder morgen weiter.
Ich werde dann auch hier sein.
Na, einen Nackenschlag geb ich Dir noch mit in den Feierabend...*fg
Schau mal ein paar Postings weiter oben:
*ganzbreitgrins*
Schönen Feierabend auch Dir
Biber
...und nächstes Mal machen wir mal einen Batch mit 30 Zeilen *feixxxxxxxxx
Schau mal ein paar Postings weiter oben:
Ist denn überhaupt noch etwas da zum Archivieren?
Oder schon alle Ordner gepackt und gelöscht?
Liegen noch "alte" Zielarchive auf C:\, die noch mit einer anderen Codepage gepackt wurden?
Stell bitte erste wieder eine saubere Testumgebung her und pack mal irgendwas ein/aus vom CMD-Prompt.
Oder schon alle Ordner gepackt und gelöscht?
Liegen noch "alte" Zielarchive auf C:\, die noch mit einer anderen Codepage gepackt wurden?
Stell bitte erste wieder eine saubere Testumgebung her und pack mal irgendwas ein/aus vom CMD-Prompt.
*ganzbreitgrins*
Schönen Feierabend auch Dir
Biber
...und nächstes Mal machen wir mal einen Batch mit 30 Zeilen *feixxxxxxxxx
Hmm, lass uns das morgen mal unter realistischen Bedingungen testen - in einer realistischen Verzeichnisstruktur.
Nicht mit Ordnern unter "C:\".
Wenn einmal aus Versehen die Variable %LastMonth% leer ist oder da (wie es Murphy's Gesetz will) "Windows" drinsteht, dann hast Du ein Problem, weiter mit mir zu chatten..*gg
Bitte erst weiter testen in einer sicheren Sandbox.
Also Laufwerk d:\BatchTest\2006\Januar, BatchTest\2006\Februar....etc
Schau mal nach draußen... den Montag haben wir doch fast geschafft - lass gut sein für heut.
Nicht mit Ordnern unter "C:\".
Wenn einmal aus Versehen die Variable %LastMonth% leer ist oder da (wie es Murphy's Gesetz will) "Windows" drinsteht, dann hast Du ein Problem, weiter mit mir zu chatten..*gg
Bitte erst weiter testen in einer sicheren Sandbox.
Also Laufwerk d:\BatchTest\2006\Januar, BatchTest\2006\Februar....etc
Schau mal nach draußen... den Montag haben wir doch fast geschafft - lass gut sein für heut.
Moin carinthianwerewolf,
na, da machen wir doch eine Variation des Themas von gestern...
Gestern war es LastMonth:
Ist zwar jetzt einfallslos und ohne sonderliche Eleganz, aber damit wir endlich mal fertig werden hier..*gg
..kopier die drei Zeilen nach dem Muster von gestern in den Batch und Dir steht zusätzlich die Variable %LastYear% zur Verfügung.
Grüße
Biber
P.S. Besteht eigentlich diese ganze Woche nur aus Montagen?
na, da machen wir doch eine Variation des Themas von gestern...
Gestern war es LastMonth:
...
echo wscript.echo monthname(datepart("m", dateAdd("m",-1, date())))>%temp%\lastmonth.vbs
For /f %%i in ('cscript //nologo %temp%\lastmonth.vbs') do set "LastMonth=%%i"
del %temp%\lastmonth.vbs
...
Heute ist es LastYear:
...
echo wscript.echo datepart("yyyy", dateAdd("y",-1, date()))>%temp%\lastyear.vbs
For /f %%i in ('cscript //nologo %temp%\lastyear.vbs') do set "LastYear=%%i"
del %temp%\lastyear.vbs
...
..kopier die drei Zeilen nach dem Muster von gestern in den Batch und Dir steht zusätzlich die Variable %LastYear% zur Verfügung.
Grüße
Biber
P.S. Besteht eigentlich diese ganze Woche nur aus Montagen?
Danke für die Rückmeldung,
...büdde.. aber es sieht folgendermaßen aus:
...bei meinen Kidz hat es auch Monate gedauert, bis ich denen "aber..", "Hääh?" und "..geht.." abgewöhnen konnte.. *seufz*Es soll nich das letze jahr UND das letzte monat gepackt werden sondern:
Nein, schon klar..
Wenn jetzt Dezember 2006 wäre, sollte der Ordner November im Ordner 2006 gepackt werden
und wenn Januar 2007 wäre, sollte der Ordner Dezember im Ordner 2006 gepackt werden.
und wenn Januar 2007 wäre, sollte der Ordner Dezember im Ordner 2006 gepackt werden.
Hört sich plausibel an...
Ich hoffe es gibt da beim Jahreswechsel keine Probleme, dass wenn Januar 2007 ist
und das dann der Dezemberordner vom Vorjahr gepackt werden sollte.
Das sehen wir nächstes Jahr...und das dann der Dezemberordner vom Vorjahr gepackt werden sollte.
Dann mach es so im Batch:
---> Immer das YYYY ermitteln, das zum Vormonat gehört.
@echo off & Setlocal
Set "MessdatenRoot=c:\Messdaten" && ~~~~~~~~~~~~ neu
for /f "delims=. tokens=2" %%i in ("%date%") do Set "MM=%%i"
If [%MM%]==[01] set "AktMonat=12"
If [%MM%]==[02] set "AktMonat=01"
If ....
...
...
echo wscript.echo datepart("yyyy", dateAdd("m",-1, date())) >%temp%\aMonthago.vbs
For /f %%i in ('cscript //nologo %temp%\aMonthAgo.vbs') do set "YYYYaMonthAgo=%%i"
del %temp%\aMonthAgo.vbs
:: ~~~~ if exist c:\Messdaten\2006\%Aktmonat%\*.* (
Set "relevantesVerz=%Messdatenroot%\%YYYYaMonthAgo%\%AktMonat%"
if Not exist %relevantesVerz%\*.* (
Echo Verzeichnis %relevantesVerz% nicht gefunden.... Abbruch..nix sichern, nix löschen.
goto :eof
)
C:\programme\winrar\winrar.exe a -ep1 -r %relevantesVerz%.rar %relevantesVerz%\*.*
IF Errorlevel 1 (
echo RAR . %Errorlevel%
Goto :eof
)
Rd %relevantesVerz% /s /q >nul
P.S.: Siehs mal positiv, wir sind fast am Ende ;)
Na, bis ich am Ende bin, da können nur ein paar Zeilen kommen...
Schönen Abend
Biber
Ja...ich sehs auch..
...die if exist/if not exist abfrage ist natürlich doppelt gemoppelt und eine davon wollte ich auch gelöscht haben...
hab ich aber anscheinend nicht* zugeb
also einfach die Zeile ÜBER der Zeile 'Set "relevantesVerz=sülzdibülz..." LÖSCHEN.
Mann, mann, wir werden noch zum Top-Beitrag im April, wenn wir weiterhin so viele Tippfehler machen. Die feixen sich schon alle einen..
Ich glaub, es wird für mich Zeit für einen Nickwechsel *gg
Grüße
Biber
...die if exist/if not exist abfrage ist natürlich doppelt gemoppelt und eine davon wollte ich auch gelöscht haben...
hab ich aber anscheinend nicht* zugeb
also einfach die Zeile ÜBER der Zeile 'Set "relevantesVerz=sülzdibülz..." LÖSCHEN.
...
Set "relevantesVerz=%Messdatenroot%\%YYYYaMonthAgo%\%AktMonat%"
if Not exist %relevantesVerz%\*.* (
Echo Verzeichnis %relevantesVerz% nicht gefunden.... Abbruch..nix sichern, nix löschen.
goto :eof
)
....
Mann, mann, wir werden noch zum Top-Beitrag im April, wenn wir weiterhin so viele Tippfehler machen. Die feixen sich schon alle einen..
Ich glaub, es wird für mich Zeit für einen Nickwechsel *gg
Grüße
Biber
Hmm..
mein letztes Posting hast Du aber schon gelesen, oder?
Egal..noch mal die (ungetestete) Pre-Final-Version im Stück:
Mein Gott, wenn ich hochrechne, wie viele Jahre wir beiden für einen 100-Zeilen-Batch brauchen würden...
Grüße
Biber
mein letztes Posting hast Du aber schon gelesen, oder?
also einfach die Zeile ÜBER der Zeile 'Set "relevantesVerz=sülzdibülz..." LÖSCHEN.
Egal..noch mal die (ungetestete) Pre-Final-Version im Stück:
::------------snipp MachMirDenVormonatsRar.bat
@echo off & Setlocal
Set "MessdatenRoot=c:\Messdaten"
for /f "delims=. tokens=2" %%i in ("%date%") do Set "MM=%%i"
If [%MM%]==[01] set "AktMonat=12"
If [%MM%]==[02] set "AktMonat=01"
If [%MM%]==[03] set "AktMonat=02"
If [%MM%]==[04] set "AktMonat=03"
If [%MM%]==[05] set "AktMonat=04"
If [%MM%]==[06] set "AktMonat=05"
If [%MM%]==[07] set "AktMonat=06"
If [%MM%]==[08] set "AktMonat=07"
If [%MM%]==[09] set "AktMonat=08"
If [%MM%]==[10] set "AktMonat=09"
If [%MM%]==[11] set "AktMonat=10"
If [%MM%]==[12] set "AktMonat=11"
Echo Aktmonat [%Aktmonat%]
Echo on
:: Echo on kann raus, wenn es läuft....
echo wscript.echo datepart("yyyy", dateAdd("m",-1, date())) >%temp%\aMonthago.vbs
For /f %%i in ('cscript //nologo %temp%\aMonthAgo.vbs') do set "YYYYaMonthAgo=%%i"
del %temp%\aMonthAgo.vbs
REM ----wech mit DIESER ZEILE !! if exist c:\Messdaten\2006\%Aktmonat%\*.* (
Set "relevantesVerz=%Messdatenroot%\%YYYYaMonthAgo%\%AktMonat%"
if Not exist %relevantesVerz%\*.* (
Echo Verzeichnis %relevantesVerz% nicht gefunden oder leer!
goto :eof
)
Echo ##DEBUG## Nun rufe ich WinRar... %relevantesVerz%
C:\programme\winrar\winrar.exe a -ep1 -r %relevantesVerz%.rar %relevantesVerz%\*.*
IF Errorlevel 1 (
echo RAR . %Errorlevel%
Goto :eof
)
Rd %relevantesVerz% /s /q >nul
::------------snapp MachMirDenVormonatsRar.bat
Mein Gott, wenn ich hochrechne, wie viele Jahre wir beiden für einen 100-Zeilen-Batch brauchen würden...
Grüße
Biber
Freut mich... wir lieben zufriedene Kunden hier in Bremen
...und das "..es funkt.." gewöhn ich Dir beim nächsten Batch ab.. "es funk-ti-o-niert.." wäre mir lieber *seufz*
Aber da kämpfe ich wohl gegen Windmühlen...
Und was die nervliche Belastung betrifft: gar nichts im Vergleich zu meiner Ex *gg
Grüße
Biber
...und das "..es funkt.." gewöhn ich Dir beim nächsten Batch ab.. "es funk-ti-o-niert.." wäre mir lieber *seufz*
Aber da kämpfe ich wohl gegen Windmühlen...
Und was die nervliche Belastung betrifft: gar nichts im Vergleich zu meiner Ex *gg
Grüße
Biber
Moin carinthianwerewolf,
die Batchdatei im zuletzt geposteten Zustand kann sicherlich keine derartigen Auswirkungen haben, da bin ich sicher.
Wahrscheinlicher ist, das einer der Testläufe auf Laufwerk C: (als die Fehlermeldungen kamen "...wird von anderem Prozess verwendet") etwas anderes gelöscht haben als geplant war.
Falls noch ein Platten-Image oder eine Sicherung von letzter Woche vorliegt, diese(s) zurückspielen.
Falls nicht, würde ich für dieses Office-Problem zuerst über Einstellungen->Software->Microsoft Office-> Ändern ->Reparieren gehen.
Grüße
Biber
die Batchdatei im zuletzt geposteten Zustand kann sicherlich keine derartigen Auswirkungen haben, da bin ich sicher.
Wahrscheinlicher ist, das einer der Testläufe auf Laufwerk C: (als die Fehlermeldungen kamen "...wird von anderem Prozess verwendet") etwas anderes gelöscht haben als geplant war.
Falls noch ein Platten-Image oder eine Sicherung von letzter Woche vorliegt, diese(s) zurückspielen.
Falls nicht, würde ich für dieses Office-Problem zuerst über Einstellungen->Software->Microsoft Office-> Ändern ->Reparieren gehen.
Grüße
Biber