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 um Dateien zu löschen die ein bestimmtest Wort enthalten

Frage Entwicklung Batch & Shell

Mitglied: joeyschweiz

joeyschweiz (Level 1) - Jetzt verbinden

08.04.2011, aktualisiert 11.04.2011, 4417 Aufrufe, 7 Kommentare

und immer wieder hier im Forum wenn es um komische Dinge geht

Folgendes Problem.

Es werden XML Dateien per Batch von einem Portal abgerufen.

Die Verarbeitung ist soweit ok nur ab und zu erhalten wir in einem File einen ERROR Code...
wenn diese Daten aufläuft crashed die Schnittstelle.

Daher möchte ich die XML Dateien durchsuchen.


Folgender Gedanke:

Wenn "ERROR code=" vorhanden ist soll die Datei direkt gelöscht oder in ein Ordner "Error" verschoben werden.



Der Ansatz::
01.
@echo off  
02.
rem StartPfad C:\transfer 
03.
set "StartPfad=C:\transfer"  
04.
 
05.
 
06.
set "DateiMaske=*.xml"  
07.
set "SuchString= ## ERROR ## "  
08.
 
09.
 
10.
for /f "delims=" %%i in ('findstr /s /m /c:"%SuchString%" "%StartPfad%\%DateiMaske%"') do del "%%i"
(ja ich weiss der code ist auch schon hier aus dem Forum )




Kann mir jemand von den "Göttern" helfen?


Danke und super Wochenende.

[Edit Biber] Codetags. [/Edit]
Mitglied: Biber
08.04.2011 um 17:17 Uhr
Moin joeyschweiz,

keine Ahnung, wann hier die "Götter" vorbeikommen - bis es soweit ist, versuch ich dich mal hinzuhalten..

Also - in Prinzip würde deine Skizze doch genau das tun, was sie soll....

Handwerklich zu ändern wäre (bei Langeweile oder Hang zum Perfektionismus) bestenfalls
  • wahlweise die erste Zeile erweitern um ein " & Setlocal", damit deine Privat-Batch-Variablen nicht mit anderen Umgebungsvariablen kollidieren können
  • oder aber in diesem Fall auf Variablen ganz verzichten. Alle Variablen werden nur ein einziges Mal benötigt und der Variablenname ist ja fast länger als der Inhalt.

Soweit die guten Nachrichten.
Es bleibt aber die die Frage, ob der Schnipsel denn wirklich das tun sollte, was du ihm da vorgibst...

Irgendein Prozess erzeugt *.XML-Dateien - einige davon zwar mit richtigem Namen, aber mit unverarbeitbarem Inhalt, wenn ich dich richtig lese.

Dennoch führen ja diese inhaltlich falschen *.XMLs zu Fehler, weil sie angefasst werden.
Demnach werden sie ja von Namen her erwartet.... bist du sicher, dass ein Löschen/Verschieben keine anderen Fehler produziert?

Ausserdem - ich würde niemalsnich Dateien blind löschen, nur weil sie ein Wort/eine Zeile enthalten.
Vielleicht ist ja genau dieses Wort in einer Kommentarzeile oder als Prosa in einem Hilfetext oder oder oder in einer eigentlich verarbeitbaren *.xml.

--> ist der Plan wirklich ausgereift?

Und noch die dumme Frage von mir:
wieso produzierte Fehler nachbehandeln mit halbmanuellen Folgeprozessen?
Wieso nicht mit Prio 1 die Fehlererzeugung abstellen? Das muss doch etwas sein, was unter Schwestern aus "Bug" bewertet werden muss.

Es sei denn, ihr könnt die Vorher-Appz nicht richtig bedienen, dann investiere in Schulungsmassnahmen.

Grüße
Biber

P.S.
Zitat von joeyschweiz:
Die Verarbeitung ist soweit ok nur ab und zu .....
Wegen dieser IT-typischen Formulierungen liebe ich meinen Job...
Erzähl doch mal beim nächsten nachbarschaftlichen Grillen "Meine Schwiegermutti ist soweit ok nur ab und zu...".
Also wenn deine Frau danebensitzt natürlich.
Bitte warten ..
Mitglied: Skyemugen
08.04.2011 um 17:32 Uhr
Aloha,

abgesehen von Bibers berechtigtem Einwand, möchte ich dir mitteilen, dass du keine Hilfe unbedingt dafür benötigst ...

Du hast:
set "SuchString= ## ERROR ## "
du möchtest statt
 ## ERROR ## 
lieber
ERROR code=
haben ...

Für das Verschieben (sofern du dir Bibers Post durchgelesen hast und es immer noch willst) empfehle ich dir den Befehl move, den du für das del ersetzt und noch deinen Wunschpfad als Letztes hinzufügst ...

greetz André
Bitte warten ..
Mitglied: 99045
08.04.2011 um 17:33 Uhr
<OT>
Zitat von joeyschweiz:
wenn diese Daten aufkäuft crashed die Schnittstelle.

Was mich interessieren würde: Wie käufen denn Daten auf, wie macht man das?

Gruß
</OT>
Bitte warten ..
Mitglied: joeyschweiz
11.04.2011 um 09:48 Uhr
Danke soweit.


WIe ich schon geschrieben hatte, verschieben ist sicher sinnvoller.

Datei finden klappt gut. Mit "del" ist diese dann auch gelöscht. Nun möchte ich aber nicht löschen sondern verschieben.



for /f "delims=" %%i in ('findstr /s /m /c:"%SuchString%" "%StartPfad%\%DateiMaske%"') do move c:\transfer\fehler "%%i"



Hier habe ich nun das Problem. Die gefundene Datei soll nach "c:\transfer\fehler" verschoben werden.
Ich geh davon aus, dass zwischen move und Pfad ein Bezug zur Datei fehlt. Aber welcher?




Hintergrund:

Die XML mit dem "ERROR code=" werden nur bei Verbindungsfehlern generiert. Derzeit kommt das ca. 1 mal im Monat vor. Da ich auf Seiten des Servers nichts ändern kann, muss ich mit dem Arbeiten was ich von dort bekomme. Problem, die XML Dateien mit Fehlermeldung unterscheiden sich im Aufbau gegenüber den "richtigen" Daten die verarbeitet werden.

Generell sind somit die Fehlermeldungen nicht wichtig, da diese zusätzlich noch in einer LOG Datei protokolliert werden. Verschieben ist aber sicherlich die bessere Wahl.




Danke nochmals.


PS: käuft heist der Fehlerteufel von läuft, in der Regel sitzt der links auf der Schulter.


Grüäsli
Bitte warten ..
Mitglied: Biber
11.04.2011 um 10:24 Uhr
Moin joeyschweizer,

Zitat von joeyschweiz:
for /f "delims=" %%i in ('findstr /s /m /c:"%SuchString%" "%StartPfad%\%DateiMaske%"') do move c:\transfer\fehler "%%i"

Hier habe ich nun das Problem. Die gefundene Datei soll nach "c:\transfer\fehler" verschoben werden.
Ich geh davon aus, dass zwischen move und Pfad ein Bezug zur Datei fehlt. Aber welcher?

Schau doch noch mal am CMD-Prompt in die Ausgabe von "move /?"

Eigentlich sollte zuerst das zu verschiebende genannt werden (z. B. das "%%i"), danach die Zieldatei bzw das Ziel-Verzeichnis mit abschliessendem Backslash.

Grüße
Biber
Bitte warten ..
Mitglied: Skyemugen
11.04.2011 um 11:16 Uhr
Aloha ...

empfehle ich dir den Befehl move, den du für das del ersetzt und noch deinen Wunschpfad als Letztes hinzufügst ...

war doch eigentlich unmissverständlich oder?

Entspricht es nicht eigentlich fundamentaler Logik, dass man etwas von A nach B bzw. den Gegenstand A nach B verschiebt oder auch mal kopiert und nicht umgekehrt?

greetz André
Bitte warten ..
Mitglied: joeyschweiz
11.04.2011 um 12:43 Uhr
Danke habs ... sollte wohl mal länger schlafen am Montag morgen.


for /f "delims=" %%i in ('findstr /s /m /c:"%SuchString%" "%StartPfad%\%DateiMaske%"') do move "%%i" c:\transfer\fehler\





Super Woche wünsche ich.
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Entwicklung
Versteckte .(Punkt)Dateien löschen (3)

Frage von DarkJM zum Thema Entwicklung ...

Batch & Shell
gelöst Per Batch Dateien in einen Ordner - ext. Festplatte übertragen (2)

Frage von tocksick 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 (17)

Frage von liquidbase zum Thema Windows Update ...

Windows Tools
gelöst Aussendienst Datensynchronisierung (12)

Frage von lighningcrow zum Thema Windows Tools ...