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

Vergleich Liste von Dateiname mit String - wenn nicht gleich, füge den Inhalt der Datei 1 der Datei 2 zu

Frage Entwicklung Batch & Shell

Mitglied: Jim-Knopf

Jim-Knopf (Level 1) - Jetzt verbinden

30.07.2009, aktualisiert 18:16 Uhr, 3845 Aufrufe, 6 Kommentare

Ich bin neu hier und habe heute einige Stunden anhand der diversen Profi-Tipps versucht mein Anliegen zu lösen. Leider ohne Erfolg - daher folgend meine Problemstellung:

Ausgangslage:
In einem Verzeichnis liegen 0, 1 oder 2 Dateien mit der Endung ZIP.
Die Dateinamen haben die Bezeichnung TIF_20090730.ZIP
bzw. die Datei vom Vortag TIF_20090729.ZIP
Es gibt Konstellationen bei der nur die Datei TIF_20090730.zip vorhanden ist oder nur die Datei TIF_20090729.ZIP, beide oder gar keine.

Ziel:
Wenn am Tag Date (20090730) nur TIF_20090730.ZIP vorhanden ist, ist alles OK (Batch beenden)
Wenn am Tag Date (20090730) TIF_20090729.ZIP & TIF_20090730.ZIP vorhanden ist, soll der Inhalt der Datei TIF_20090729.ZIP in die Datei TIF_20090730.ZIP übernommen und die Datei TIF_200907229.ZIP gelöscht werden.
Wenn am Tag Date (20090730) nur TIF_20090729.ZIP vorhanden ist, soll diese auf TIF_20090730.ZIP umbenannt werden.
Wenn keine ZIP-Datei vorhanden ist, ist auch alles OK (Batch beenden)

Wir haben versucht mit dem comand "for" eine Schleife zu schreiben, die alle ZIP-Dateien auf das Datum prüft und dann je nach Resultat die nötigen Schritte ausführt. Bereits der Abgleich hat nicht geklappt.

Für jede Hilfestellung (auch Teilösungen des Problems) bin ich sehr froh!

Gruss
Jim Knopf
Mitglied: bastla
30.07.2009 um 18:55 Uhr
Auch Dir, Jim-Knopf, ein mindestens genauso freundliches Hallo und Willkommen im Forum!

Schematisch könnte das etwa so aussehen:
01.
@echo off & setlocal 
02.
pushd "Z:\ZIP-Dateien" 
03.
set "Pre=TIF_" 
04.
 
05.
set "Heute=%date:~-4%%date:~-7,2%%date:~-10,2% 
06.
set "ZIPHeute=%Pre%%Heute%.zip" 
07.
 
08.
if not exist "%ZIPHeute%" ( 
09.
    for /f "delims=" %%i in ('dir /b /a-d "%Pre%*.zip" 2^>nul') do echo ren "%%i" "%ZIPHeute%" 
10.
    popd 
11.
    goto :eof 
12.
13.
 
14.
for /f "delims=" %%i in ('dir /b /a-d "%Pre%*.zip" 2^>nul^|findstr /i /v /c:"%ZIPHeute%"') do ( 
15.
    echo "%%i" entpacken 
16.
    echo entpackte Dateien zu "%ZIPHeute%" hinzufuegen 
17.
18.
popd
Vorausgesetzt wird dabei, dass es tatsächlich nur 0 bis 2 Dateien entsprechend dem vorgegebenen Benennungsschema geben kann, und dass von zweien eine "TIF_Tagesdatum.zip" heißt.

Das Hinzufügen der gestrigen zur heutigen Datei wird nur durch Textausgaben simuliert, da mir der genaue Sinn der Aktion bzw die zur Verfügung stehenden Mittel (ZIP-Programm) nicht bekannt sind ...

Grüße
bastla

[Edit] Noch etwas umformuliert ... [/Edit]
Bitte warten ..
Mitglied: Jim-Knopf
31.07.2009 um 08:48 Uhr
Hallo bastla

Super herzlichen Dank!
Ich bin grad' dran das ganze mal zu verstehen... ... wie macht ihr das bloss!!!
Hab' mich aber mit den ZIP vertan:

Es handelt sich um ganz normale Textfiles (das mit dem Zippen kommt erst später und hab' ich schon umgesetzt). Könnte man den Inhalt mit type in eine Variable oder so übernehmen und dann der anderen Datei zuweisen bzw. eben renamen?

NB: Grund für die ganze Aktion:
Die Tagesverarbeitung ist um 22 Uhr fertig und die Daten werden abgeholt. Theoretisch kann nun einer kommen und nach 22 Uhr nochmals eine Datei erzeugen. Das wird vermutlich in 100 Jahre nie vorkommen aber - wir haben's ja mit der IT zu tun - wird es garantiert geschehen, wenn wir den Fall nicht abfangen. Da wir mit Datumstempel arbeiten würde dann vom gleichen Tag zwei Mal ein File mit gleichem Namen erstellt. Natürlich könnte man nun bei der Erzeugung einen Zeitstempel verwenden. Da aber ein externer Partner nur mit Statischen Filenamen umgehen kann, versuchen wir diese etwas aufwändige Lösung umzusetzen.

Danke und Gruss
Jim
Bitte warten ..
Mitglied: bastla
31.07.2009 um 09:41 Uhr
Hallo Jim-Knopf!

Ein bloßes Anfügen der alten an die neue Datei ließe sich mit einem
01.
type "%%i">>"%ZIPHeute%"
als Ersatz für die Zeilen 15 und 16 machen.

Grüße
bastla
Bitte warten ..
Mitglied: Jim-Knopf
31.07.2009 um 11:05 Uhr
Hallo Bastla

Herzlichen Dank.
Ich hab das Skript kurz auf meine Umgebung angepasst und getestet. Funktioniert alles einwandfrei. Kleiner Schönheitsfehler: der Rename wird auch versucht, wenn keine Dateien vorhanden sind. Stört aber nicht.

Der Batch funktioniert aufgrund der Schlaufe auch, wenn mehrere ältere Dateien rumliegen (sofern die heutige Datei da ist).

@echo off & setlocal
pushd "C:\temp\data\"
set "Pre=xxx_"

set "Heute=%date:~-4%%date:~-7,2%%date:~-10,2%

set "txtHeute=%Pre%%Heute%.txt"

if not exist "%txtHeute%" (
for /f "delims=" %%i in ('dir /b /a-d "%Pre%*.txt" 2^>nul') do ren "%%i" "%txtHeute%"
echo ren "%%i" "%txtHeute%"
popd
goto :eof
)

for /f "delims=" %%i in ('dir /b /a-d "%Pre%*.txt" 2^>nul^|findstr /i /v /c:"%txtHeute%"') do (
type "%%i">>"%txtHeute%"
del "%%i"
)
popd

Macht richtig spass hier. Dir natürlich einen ganz speziellen Dank

Gruss
Jim
Bitte warten ..
Mitglied: bastla
31.07.2009 um 11:14 Uhr
Hallo Jim-Knopf!
Kleiner Schönheitsfehler: der Rename wird auch versucht, wenn keine Dateien vorhanden sind.
Dürfte es eigentlich nicht geben (es wird ja vorher mit "dir" das Vorhandensein einer Datei "xxx_*.txt" geprüft), aber um den Fehler wenigstens zu "verstecken", kannst Du den "ren"-Befehl so schreiben
ren "%%i" "%txtHeute%" 2>nul
- damit wird die Fehlermeldung unterdrückt.

Grüße
bastla
Bitte warten ..
Mitglied: Jim-Knopf
31.07.2009 um 12:29 Uhr
Perfekt! Super Lösung.
Danke.
Jim
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Powershell Script um Inhalt von Dateien zu vergleichen
Frage von zamsi7Batch & Shell14 Kommentare

Hallo an alle, hoffe ich bin hier richtig Ich würde ein Powershell script benötigen, welche mir hilft Dateien in ...

Batch & Shell
Variablen oder Dateien nach Inhalt Vergleichen Powershell
Frage von Dpole86Batch & Shell7 Kommentare

Hallo Zusammen Nehmen wir an ich habe 2 Dateien und lade diese in jeweils in eine Variable. $var1 NBAPS100 ...

Batch & Shell
Dateien automatisch anhand von 2 komplizierten Dateinamen-Strings verschieben
gelöst Frage von clevermBatch & Shell3 Kommentare

Hallo, ich bräuchte eine Batch oder Batch-Powershell Kombination, die mir 1.000ende Dateien täglich anhand des Dateinamens verschiebt (einsortiert): Ich ...

Batch & Shell
Vergleiche Strings in CMD
gelöst Frage von it4baerBatch & Shell4 Kommentare

Hallo, ich möchte gerne Strings in CMD vergleichen (also Windows Eingebaaufforderung) genau gesagt übergebe ich 1. eine Parameter meinBatch.cmd ...

Neue Wissensbeiträge
Erkennung und -Abwehr

Necur-Botnet soll Erpressungstrojaner Scarab massenhaft verbreiten

Information von BassFishFox vor 2 StundenErkennung und -Abwehr

12,5 Millionen Spam-Mails aus einem Bot-Netz mit 6 Millionen Computern? Eigentlich eine schwache Leistung. Die Erpresser setzen dabei auf ...

Microsoft

Nadeldrucker-Problem unter Windows - Microsoft liefert Updates

Information von BassFishFox vor 3 StundenMicrosoft

Hat ja nicht lange gedauert. Nachdem die November-Updates für Windows 7, 8.1 und 10 zahlreiche Nadeldrucker lahmgelegt hatten, stellt ...

Linux

Limux-Ende in München: Wie ein Linux Projekt unter Ausschluss der Öffentlichkeit zerstört wurde

Information von Frank vor 10 StundenLinux14 Kommentare

Mein persönlicher Kommentar zum Thema "Limux-Ende". Die SPD-Politikerin Anne Hübner hat die Richtung von München ganz klar definiert: "Wir ...

Batch & Shell

Open Object Rexx: Eine mittlerweile fast vergessene Skriptsprache aus dem Mainframebereich

Information von Penny.Cilin vor 1 TagBatch & Shell9 Kommentare

Ich kann mich noch sehr gut an diese Skriptsprache erinnern und nutze diese auch heute ab und an noch. ...

Heiß diskutierte Inhalte
Linux
Limux-Ende in München: Wie ein Linux Projekt unter Ausschluss der Öffentlichkeit zerstört wurde
Information von FrankLinux14 Kommentare

Mein persönlicher Kommentar zum Thema "Limux-Ende". Die SPD-Politikerin Anne Hübner hat die Richtung von München ganz klar definiert: "Wir ...

Router & Routing
Zwei Netzwerke erstellen
Frage von bunteblumeRouter & Routing14 Kommentare

Hallo Zusammen, Ich möchte gerne ein backup von einem bestimmten Folder welcher auf dem Server regelmässig synchronisiert wird auf ...

Off Topic
Fachkräftemangel in Deutschland? - Talentschmiede schreibt alle 2 Tage die gleichen Stellen aus
Frage von Penny.CilinOff Topic12 Kommentare

Hallo, haben wir in Deutschland Fachkräftemangel? Die Talentschmiede schreibt gefühlt alle zwei Tage dieselben Stellen aus. Und das schon ...

Windows Server
Kann man im KMS nachschauen , wieviele Clients den Key in Anspruch genommen haben
gelöst Frage von rainergugusWindows Server12 Kommentare

Hallo, wir haben einen KMS Windows 10 Key. Dieser ist ja W7 kompatibel. Aber unser Windows 7 Pool registriert ...