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

Textdateien mittels Batchscript automatisch in einen Ordner archivieren bzw. packen

Frage Microsoft

Mitglied: dennisx8r

dennisx8r (Level 1) - Jetzt verbinden

14.04.2011, aktualisiert 18.10.2012, 4776 Aufrufe, 13 Kommentare

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
Mitglied: 99045
14.04.2011 um 15:52 Uhr
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ß
Bitte warten ..
Mitglied: dennisx8r
14.04.2011 um 16:01 Uhr
Zitat von 99045:
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ß


erledigt, sry.
Bitte warten ..
Mitglied: 99045
14.04.2011 um 16:06 Uhr
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ß
Bitte warten ..
Mitglied: bastla
14.04.2011 um 19:22 Uhr
Hallo dennisx8r!

Für das Verschieben der Dateien in passende Monatsordner kannst Du etwa so vorgehen (ungetestet):
01.
@echo off & setlocal 
02.
set "Quelle=C:\Ferfax\Eingang" 
03.
set "Ziel=C:\Ferfax\Archiv" 
04.
set "Typ=txt" 
05.
 
06.
for %%i in ("%Quelle%\*.%Typ%") do ( 
07.
    for /f "tokens=1-3 delims=. " %%a in ("%%~ti") do ( 
08.
        md "%Ziel%\%%c-%%b" 2>nul 
09.
        echo move "%%i" "%Ziel%\%%c-%%b\" 
10.
11.
)
Durch das "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 ...
Innerhalb dieser Schleife kannst Du alle im Ordner %%i befindlichen Dateien "*.%Typ%" komprimieren und nach Erfolg löschen.

Grüße
bastla
Bitte warten ..
Mitglied: dennisx8r
15.04.2011 um 09:04 Uhr
Hallo bastla,

danke erstmal. Jedoch wäre es gut wenn ich die Textdokumente zuvor auf das aktuelle Datum prüfen könnte und diese dann erst in das Verzeichniss kopiert und archiviert werden. Habe das ganze soweit auch schonmal versucht zu integreiren, jedoch komm ich irgendwie mit der %date% angabe darin nicht klar. Wie kann ich automatisch den richtigen Monat wählen, ohne das ich den script jeden monat händisch bearbeiten muss ?

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.

Am besten wäre es wenn die Daten z.b von April in das Eingangsverzeichniss laufen. Am ende des monats sprich am 1. Mai würden dann alle Datein von März rauskopiert werden und ins Archiv kopiert werden, wo sie dann gepackt werden. Nach dem Packen können sie dann aus dem Eingangsverzeichniss gelöscht werden.So sind immer die Textdokumente von einem Monat zuvor in dem verzeichniss und können, falls eine Nacharbeitung nötigt ist, nochmal eingesehen werden.

Wäre um hilfe von dir sehr dankbar.

Gruß
Bitte warten ..
Mitglied: bastla
15.04.2011 um 12:07 Uhr
Hallo dennisx8r!
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 Zeile
echo 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%"
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:
01.
if %%c-%%b==%Aktuell% ( 
02.
    echo move "%%i" "%Ziel%\Eingang\" 
03.
) else ( 
04.
    echo move "%%i" "%Ziel%\%%c-%%b\" 
05.
)
Grüße
bastla

P.S.: Der "Niss" ist ein Ungeziefer, und sollte von "Verzeich" ferngehalten werden ...
Bitte warten ..
Mitglied: 60730
15.04.2011 um 13:21 Uhr
moin,


  • 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.
Hatt evtl. jemand sowas schonmal gemacht und kann mir ne kurze starthilfe geben ?

Gruß
Bitte warten ..
Mitglied: dennisx8r
15.04.2011 um 14:51 Uhr
Hallo,


also momentan sieht das ganze etwas so aus. Jedoch bekomm ich beim Ausführen einen Syntax Fehler.

DIe Datumsüberprüfung wird am ende einfahc von IF not auf IF umgestellt, da ich momentan keine Daten mit älterem Erstellungsdatum zu hand ab..

Iwo ist hier der Wurm drin, kann mir da wer was zu sagen ?

01.
 
02.
 
03.
set "Quelle=C:\Ferfax\Eingang"  
04.
 
05.
set "Ziel=C:\Ferfax\Archiv"  
06.
 
07.
set "Typ=txt"  
08.
 
09.
set "Aktuell=%date:~-4%-%date:~-7,2%" 
10.
 
11.
set "Zip=C:\Programme\7-Zip\7z.exe" 
12.
 
13.
 
14.
for %%i in ("%Quelle%\*.%Typ%") do (  
15.
 
16.
    	   for /f "tokens=1-3 delims=. " %%a in ("%%~ti") 
17.
18.
if NOT %%c-%%b == %Aktuell% (  
19.
 
20.
    echo move "%%i" "%Ziel%\Eingang\"  
21.
 
22.
)else (  
23.
 
24.
	     for %%i in ("%Quelle%\*.%Typ%")  do ( 
25.
 
26.
        md "%Ziel%\%%c-%%b" 2>nul  
27.
 
28.
        move "%%i" "%Ziel%\%%c-%%b\"  ) 
29.
30.
 
31.
	%Zip% a C:\Ferfax\Archiv\"%%c--%%b".7z  C:\Ferfax\Archiv\*.txt  
32.
 
33.
pause 
34.
	 
35.
 
36.
 
Bitte warten ..
Mitglied: 60730
15.04.2011, aktualisiert 18.10.2012
moin,

ich weigere mich Problemscripte mit einem führenden @echo off 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ß
Bitte warten ..
Mitglied: dennisx8r
15.04.2011, aktualisiert 18.10.2012
Zitat von 60730:
moin,

ich weigere mich Problemscripte mit einem führenden @echo off 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ß

habs bearbeitet - sry.
Bitte warten ..
Mitglied: bastla
15.04.2011 um 15:09 Uhr
Hallo dennisx8r!

Wenn Du die aktuellen Dateien ohnehin im Quellordner belassen willst, könnte das so gehen (völlig ungetestet)
01.
@echo on & setlocal 
02.
set "Quelle=C:\Ferfax\Eingang" 
03.
set "Ziel=C:\Ferfax\Archiv" 
04.
set "Typ=txt" 
05.
 
06.
set "Aktuell=%date:~-4%-%date:~-7,2%" 
07.
set "Zip=C:\Programme\7-Zip\7z.exe" 
08.
for %%i in ("%Quelle%\*.%Typ%") do ( 
09.
    for /f "tokens=1-3 delims=. " %%a in ("%%~ti") do ( 
10.
        if not %%c-%%b==%Aktuell% ( 
11.
            md "%Ziel%\%%c-%%b" 2>nul 
12.
            move "%%i" "%Ziel%\%%c-%%b\" 
13.
14.
15.
16.
for /d %%i in ("%Ziel%\*-*") do ( 
17.
    "%Zip%" a "%Ziel%\%%~ni.7z" "%%i\*.txt" 
18.
19.
pause
Grüße
bastla

[Edit] Überzählige ")" entfernt [/Edit]
Bitte warten ..
Mitglied: dennisx8r
15.04.2011 um 16:32 Uhr
danke erstmal bastla

aber es macht ja eigentlich garkeinen sinn sie dort zu belassen.. genauso gut kann ich sie auch aus dem zip verzeichnis öffnen.. Habe das jetz mal versucht zu ändern, jedoch kann ich den Pfad von

01.
md "%Ziel%\%%c-%%b" 2>nul 
nicht in einer variablen speicher.. Beim ausführen der Zip Zeile läuft dann alles, jedoch wird keine 7zip Datei erstellt..

wie müsste ich das jetz anpassen wenn ich die Datein innerhalb des neu erstellten ordners mit dem namen 2011-04 packen möchte, sodass am ende lediglich die Zip Datei in dem Verzeichnis liegt ?
Bitte warten ..
Mitglied: bastla
15.04.2011 um 18:58 Uhr
Hallo dennisx8r!
aber es macht ja eigentlich garkeinen sinn sie dort zu belassen
Dann wären wir ja zurück auf dem Stand von gestern ...
01.
@echo on & setlocal 
02.
set "Quelle=C:\Ferfax\Eingang" 
03.
set "Ziel=C:\Ferfax\Archiv" 
04.
set "Typ=txt" 
05.
 
06.
set "Zip=C:\Programme\7-Zip\7z.exe" 
07.
for %%i in ("%Quelle%\*.%Typ%") do ( 
08.
    for /f "tokens=1-3 delims=. " %%a in ("%%~ti") do ( 
09.
        md "%Ziel%\%%c-%%b" 2>nul 
10.
        move "%%i" "%Ziel%\%%c-%%b\" 
11.
12.
13.
for /d %%i in ("%Ziel%\*-*") do ( 
14.
    "%Zip%" a "%%i\%%~ni.7z" "%%i\*.txt" 
15.
16.
pause
Das Testen überlasse ich (wie gehabt) Dir ...

Grüße
bastla
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (21)

Frage von Xaero1982 zum Thema Microsoft ...

Windows Update
Treiberinstallation durch Windows Update läßt sich nicht verhindern (17)

Frage von liquidbase zum Thema Windows Update ...

Windows Tools
gelöst Aussendienst Datensynchronisierung (12)

Frage von lighningcrow zum Thema Windows Tools ...

Windows Server
RODC über VPN - Verbindung weg (10)

Frage von stefan2k1 zum Thema Windows Server ...