Top-Themen

Aktuelle Themen (A bis Z)

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, 4979 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 ..
Ähnliche Inhalte
Batch & Shell
Dateien mit gleichem Namen mehrmals per Packer archivieren
gelöst Frage von DT1234Batch & Shell7 Kommentare

Ich weiß, dass ich das früher schon einmal gemacht habe. Ich weiß leider aber nicht mehr, wie lange das ...

Batch & Shell
Batchscripts
gelöst Frage von perseus21Batch & Shell6 Kommentare

Hallo, ich suche nach einer Lösung um mit CMD folgendes Problem zu lösen: Ich möchte, daß der Benutzer mittels ...

Exchange Server
Exchange - zentrales Archivieren bestimmter Ordner
Frage von DerWoWussteExchange Server20 Kommentare

Moin Kollegen, wir haben allen Nutzern in Outlook einen SPAM-Ordner eingerichtet. Nun möchten wir zentral vorgeben, dass alles in ...

Outlook & Mail
Outllok (2010) alle Ordner gleichzeitig archivieren?
gelöst Frage von 1410640014Outlook & Mail3 Kommentare

Hallo, kenn mich im Outlook leider nicht so gut aus, sondern nur auf der anderen Seite beim Exchange konfigurieren, ...

Neue Wissensbeiträge
Windows 10

Autsch: Microsoft bündelt Windows 10 mit unsicherer Passwort-Manager-App

Tipp von kgborn vor 2 TagenWindows 106 Kommentare

Unter Microsofts Windows 10 haben Endbenutzer keine Kontrolle mehr, was Microsoft an Apps auf dem Betriebssystem installiert (die Windows ...

Sicherheits-Tools

Achtung: Sicherheitslücke im FortiClient VPN-Client

Tipp von kgborn vor 2 TagenSicherheits-Tools

Ich weiß nicht, wie häufig die NextGeneration Endpoint Protection-Lösung von Fortinet in deutschen Unternehmen eingesetzt wird. An dieser Stelle ...

Internet

USA: Die FCC schaff die Netzneutralität ab

Information von Frank vor 2 TagenInternet5 Kommentare

Jetzt beschädigt US-Präsident Donald Trump auch noch das Internet. Der neu eingesetzte FCC-Chef Ajit Pai ist bekannter Gegner einer ...

DSL, VDSL

ALL-BM200VDSL2V - Neues VDSL-Modem mit Vectoring von Allnet

Information von Lochkartenstanzer vor 2 TagenDSL, VDSL2 Kommentare

Moin, Falls jemand eine Alternative zu dem draytek sucht: Gruß lks

Heiß diskutierte Inhalte
Batch & Shell
Kann man mit einer .txt Datei eine .bat Datei öffnen?
gelöst Frage von HelloWorldBatch & Shell20 Kommentare

Wie schon im Titel beschrieben würde ich gerne durch einfaches klicken auf eine Text oder Word Datei eine Batch ...

LAN, WAN, Wireless
WLAN Reichweite erhöhen mit neuer Antenne
gelöst Frage von gdconsultLAN, WAN, Wireless9 Kommentare

Hallo, ich besitze einen TL-WN722N USB-WLAN Dongle mit einer richtigen Antenne. Ich frage mich jetzt ob man die Reichweite ...

Router & Routing
Wieso kann ich den UPD 7000-9000 nicht freigeben?
Frage von Jayk0bRouter & Routing8 Kommentare

Router: Telekom W 723V Ports: UDP 7000-9000 Können nicht frei gegeben werden. Benutzgrund: Rocket League 7000 – 9000 UDP ...

Router & Routing
Fritzbox Gastnetz - exposed Host - zur Sophos IPTV
Frage von medikopterRouter & Routing8 Kommentare

Hallo zusammen, ich habe eine Frage bezüglich des Fritz box Gastzugangs an einer Sophos UTM Home. An liebsten wäre ...