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

Batch: for + dir + findstr

Frage Entwicklung Batch & Shell

Mitglied: .Sessl

.Sessl (Level 1) - Jetzt verbinden

30.10.2014, aktualisiert 22:47 Uhr, 1140 Aufrufe, 2 Kommentare

Hallo zusammen,

ich hab mal wieder ein 'ernstes' Problem, bei dem ich nicht wirklich weiter weiß und das Internet nicht so recht eine Lösung parat hat.
Folgendes habe ich vor:
- in einem Verzeichnis liegen Dateien (z.B. 20141029.100000.000; 20141029.110000.000; usw.)
- welche ich mittels DIR-Befehl pro Schleife einlesen will
- in der Exclude-Datei stehen bereits einige dieser Dateien (pro Zeile ein Eintrag)
- nun sollen mir aber nur jene als Variable zur Verfügung stehen, die eben nicht in der Exclude-Datei stehen, deshalb sage ich findstr ignoriere diese

Im weiteren Schritten werden jene aussortiert, die nicht älter als 8h alt sind. Im Script wird am Ende der FOR-Schleife die jeweilige Datei in die Exclude-Datei mittels ECHO geschrieben, damit im nächsten Lauf nur noch die nicht bereits verarbeiteten verarbeitet werden.

Ich hoffe ich konnte es einigermaßen vernünftig erklären.

Codeschnipsel:
01.
@echo off 
02.
SETLOCAL ENABLEDELAYEDEXPANSION 
03.
 
04.
set "file_path=\\server\log" 
05.
set "exclude=c:\temp.txt 
06.
 
07.
for /f %%a in ('dir /b /a-d "%file_path%" ^| findstr /v /g:%exclude%') do ( 
08.
  echo %%a 
09.
)
Dateien im Ordner:
01.
20141025.060000.000 
02.
20141026.210000.000 
03.
20141027.150000.000 
04.
20141028.030000.000 
05.
20141029.100000.000 
06.
20141029.170000.000
Exclude-Datei "temp.txt": (die "20141029.100000.000" steht öfter drin, da ja die verarbeiteten in diese Datei geschrieben werden, da aber findstr diese nicht ignoriert, wird diese
01.
20141025.060000.000 
02.
20141026.210000.000 
03.
20141027.150000.000 
04.
20141028.030000.000 
05.
20141029.100000.000   
06.
20141029.100000.000   
07.
20141029.100000.000   
08.
20141029.100000.000  
Zum Problem:
Leider funktioniert diese Schleife nur "zur Hälfte". Lass ich diese durchlaufen, müsste er mir nur die "20141029.170000.000" Datei anzeigen, da diese nicht in der temp.txt drin steht. Es wird jedoch folgendes ausgegeben:
01.
20141029.100000.000 
02.
20141029.170000.000
Würde mir bitte jemand verraten wo mein Denkfehler ist und ob diese Schleife generell funktionieren würde? Ich verzweifel schon

Euch vorab schon mal vielen Dank für jede Idee!


Gruß
Tobias
Mitglied: rubberman
LÖSUNG 30.10.2014, aktualisiert um 22:47 Uhr
Hallo Tobias.

Nur die Zeilen mit 20141029.100000.000 in deiner Exclude-Datei haben einige angehängte Leerzeichen, die offensichtlich mit verglichen werden. Ergo hast du einen Fehler bei der Erzeugung dieser Datei.

In Zeile 5 fehlt übrigens das schließende Anführungszeichen, was aber wohl nichts mit deinem Problem zu tun hat.

Grüße
rubberman
Bitte warten ..
Mitglied: .Sessl
30.10.2014 um 22:47 Uhr
Oh nein .. was ein Leerzeichen alles anrichten kann!
Dein Adlerauge hat mich gerettet, vielen Dank!

Das fehlende Anführungszeichnen in Zeile 5 fehlt glücklicherweise nur hier ..

Vielen Dank für die schnelle und sehr hilfreiche Antwort.


Gruß
Tobias
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
Batch zum bearbeiten mehrerer CSV (3)

Frage von Matzus87 zum Thema Batch & Shell ...

Batch & Shell
Batch-Variable nach Stichworten aus TXT Datei durchsuchen (3)

Frage von Markus5579 zum Thema Batch & Shell ...

Batch & Shell
Dateinamen nach Zeichnen abschneiden - Batch-Shell (9)

Frage von cberndt zum Thema Batch & Shell ...

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

Frage von Xaero1982 zum Thema Microsoft ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

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

Frage von liquidbase zum Thema Windows Update ...

DSL, VDSL
Problem mit variernder Internetgeschwindigkeit (12)

Frage von schaurian zum Thema DSL, VDSL ...