Textdateien mittels Batchscript automatisch in einen Ordner archivieren bzw. packen
Hallo,
ich bin gerade dabei einen Batchscript zu erstellen, das automatisch Textdatein die von einem Datentransfer erzeugt werden einließt und diese Monatsweise archiviert. Der Archivierungsprozess soll mittels 7zip erledigt werden, da dies unter der GNU-Lizens steht. Jedoch brech ich mir da mehr oder weniger die Finger bei. Wie kann ich die 7zip.exe genau ansprechen um dies durchzuführen ? Hatt evtl. jemand sowas schonmal gemacht und kann mir ne kurze starthilfe geben ? Die Textdateien liegen alle in dem Verzeichniss C:\Ferfax\Eingang und sollen mittels des Scripts monatsweise in den Ordner C:\Ferfax\Archiv archivirt werden.
Danke im vorraus
Gruß Dennis
ich bin gerade dabei einen Batchscript zu erstellen, das automatisch Textdatein die von einem Datentransfer erzeugt werden einließt und diese Monatsweise archiviert. Der Archivierungsprozess soll mittels 7zip erledigt werden, da dies unter der GNU-Lizens steht. Jedoch brech ich mir da mehr oder weniger die Finger bei. Wie kann ich die 7zip.exe genau ansprechen um dies durchzuführen ? Hatt evtl. jemand sowas schonmal gemacht und kann mir ne kurze starthilfe geben ? Die Textdateien liegen alle in dem Verzeichniss C:\Ferfax\Eingang und sollen mittels des Scripts monatsweise in den Ordner C:\Ferfax\Archiv archivirt werden.
Danke im vorraus
Gruß Dennis
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 164601
Url: https://administrator.de/contentid/164601
Ausgedruckt am: 20.11.2024 um 15:11 Uhr
13 Kommentare
Neuester Kommentar
Hi,
wie wäre es denn, wenn du deine bisher gestellten Fragen mal mit einem abschließenden erledigt bzw. gelöst-Vermerk versiehst, bevor du neue stellst?
Gruß
wie wäre es denn, wenn du deine bisher gestellten Fragen mal mit einem abschließenden erledigt bzw. gelöst-Vermerk versiehst, bevor du neue stellst?
Gruß
Hi,
für 7Zip gibt es eine Konsolenversion, die du dazu verwenden kannst. Die Hilfe mit den möglichen Parametern bekommst du mit 7za /?
Gruß
für 7Zip gibt es eine Konsolenversion, die du dazu verwenden kannst. Die Hilfe mit den möglichen Parametern bekommst du mit 7za /?
Gruß
Hallo dennisx8r!
Für das Verschieben der Dateien in passende Monatsordner kannst Du etwa so vorgehen (ungetestet):
Durch das "
Danach befinden sich die Dateien in Unterordnern von %Ziel% mit dem Namensschema "JJJJ-MM".
Zum Zippen hat Dir Kaputtnick ja bereits einen Tipp gegeben - Du brauchst dann also eigentlich nur noch eine Schleife über die Unterordner von %Ziel% nach dem Muster
Innerhalb dieser Schleife kannst Du alle im Ordner %%i befindlichen Dateien "*.%Typ%" komprimieren und nach Erfolg löschen.
Grüße
bastla
Für das Verschieben der Dateien in passende Monatsordner kannst Du etwa so vorgehen (ungetestet):
@echo off & setlocal
set "Quelle=C:\Ferfax\Eingang"
set "Ziel=C:\Ferfax\Archiv"
set "Typ=txt"
for %%i in ("%Quelle%\*.%Typ%") do (
for /f "tokens=1-3 delims=. " %%a in ("%%~ti") do (
md "%Ziel%\%%c-%%b" 2>nul
echo move "%%i" "%Ziel%\%%c-%%b\"
)
)
echo
" vor dem "move
" wird das Verschieben durch Anzeige des entsprechenden Befehls vorläufig nur simuliert, die Zielordner werden aber erstellt. Wenn alles vernünftig aussieht, kannst Du dieses "echo
" entfernen und den Batch im "Echtbetrieb" testen.Danach befinden sich die Dateien in Unterordnern von %Ziel% mit dem Namensschema "JJJJ-MM".
Zum Zippen hat Dir Kaputtnick ja bereits einen Tipp gegeben - Du brauchst dann also eigentlich nur noch eine Schleife über die Unterordner von %Ziel% nach dem Muster
for /d %i in ("%Ziel%\*") do ...
Grüße
bastla
Hallo dennisx8r!
... ansonsten kannst Du ja mit zB
Jahr und Monat schon vor der Schleife in eine Variable schreiben und müsstest dann nur noch überprüfen, ob die ausgelesenen Werte (also %%c-%%b) damit übereinstimmen:
Grüße
bastla
P.S.: Der "Niss" ist ein Ungeziefer, und sollte von "Verzeich" ferngehalten werden ...
in der Variablen %%C steht ja der Monat der Datei und in %%B das Jahr. Nur wie kann ich jetz über der for schleife eine bedingung machen, in der ich zuvor die Datei auf das Datum prüfe und diese dann in den dafür vorgesehen ordner kopiere.
Was meinst Du wohl macht die Zeileecho move "%%i" "%Ziel%\%%c-%%b\"
Am besten wäre es wenn die Daten z.b von April in das Eingangsverzeichniss laufen
Wenn der Batch einmal (vorzugsweise am Monatsende) gelaufen ist, sollte es doch ohnehin keine "alten" Dateien mehr geben ...... ansonsten kannst Du ja mit zB
set "Aktuell=%date:~-4%-%date:~-7,2%"
if %%c-%%b==%Aktuell% (
echo move "%%i" "%Ziel%\Eingang\"
) else (
echo move "%%i" "%Ziel%\%%c-%%b\"
)
bastla
P.S.: Der "Niss" ist ein Ungeziefer, und sollte von "Verzeich" ferngehalten werden ...
moin,
Gruß
- Wenn du deinen Titel so abänderst, dass da irgendwo Datum 7z beinhaltet ist, würde diesen Beitrag auch jemand finden, der die suchmaschine benutzt.
Gruß
moin,
ich weigere mich Problemscripte mit einem führenden auch nur 1 ms anzuschauen.
Wenn die dann auch - wenns Bastla schon vorgemacht hat - ungetagged sind - dann erst recht...
Kannst du das verstehen- danke
Gruß
ich weigere mich Problemscripte mit einem führenden auch nur 1 ms anzuschauen.
Wenn die dann auch - wenns Bastla schon vorgemacht hat - ungetagged sind - dann erst recht...
Kannst du das verstehen- danke
Gruß
Hallo dennisx8r!
Wenn Du die aktuellen Dateien ohnehin im Quellordner belassen willst, könnte das so gehen (völlig ungetestet)
Grüße
bastla
[Edit] Überzählige ")" entfernt [/Edit]
Wenn Du die aktuellen Dateien ohnehin im Quellordner belassen willst, könnte das so gehen (völlig ungetestet)
@echo on & setlocal
set "Quelle=C:\Ferfax\Eingang"
set "Ziel=C:\Ferfax\Archiv"
set "Typ=txt"
set "Aktuell=%date:~-4%-%date:~-7,2%"
set "Zip=C:\Programme\7-Zip\7z.exe"
for %%i in ("%Quelle%\*.%Typ%") do (
for /f "tokens=1-3 delims=. " %%a in ("%%~ti") do (
if not %%c-%%b==%Aktuell% (
md "%Ziel%\%%c-%%b" 2>nul
move "%%i" "%Ziel%\%%c-%%b\"
)
)
)
for /d %%i in ("%Ziel%\*-*") do (
"%Zip%" a "%Ziel%\%%~ni.7z" "%%i\*.txt"
)
pause
bastla
[Edit] Überzählige ")" entfernt [/Edit]
Hallo dennisx8r!
Das Testen überlasse ich (wie gehabt) Dir ...
Grüße
bastla
aber es macht ja eigentlich garkeinen sinn sie dort zu belassen
Dann wären wir ja zurück auf dem Stand von gestern ... @echo on & setlocal
set "Quelle=C:\Ferfax\Eingang"
set "Ziel=C:\Ferfax\Archiv"
set "Typ=txt"
set "Zip=C:\Programme\7-Zip\7z.exe"
for %%i in ("%Quelle%\*.%Typ%") do (
for /f "tokens=1-3 delims=. " %%a in ("%%~ti") do (
md "%Ziel%\%%c-%%b" 2>nul
move "%%i" "%Ziel%\%%c-%%b\"
)
)
for /d %%i in ("%Ziel%\*-*") do (
"%Zip%" a "%%i\%%~ni.7z" "%%i\*.txt"
)
pause
Grüße
bastla