Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Löschen von Zeilen in CMD-Dateien?

Betrifft: Löschen von Zeilen in CMD-Dateien? von: Sergej
Geschrieben am: 31.10.2020 11:24:43

Hallo Leute,

wie kann ich bitte per VBA in einem Pfad D:\Daten\Projkete\Settings\ inklusive Unterverzeichnissen in allen Dateien mit der Dateiendung .cmd die Zeilen löschen in den als Wort / String dies "BA-SAR04" vorkommt?

Beste Grüße,
Sergej

Betrifft: AW: Löschen von Zeilen in CMD-Dateien?
von: Herbert_Grom
Geschrieben am: 31.10.2020 13:00:17

Hallo Sergej,

was ist eine CMD-Datei?

Und beim Pfad meintest du sicher "D:\Daten\Projekte\Settings\" und nicht D:\Daten\Projkete\Settings\"

Servus

Betrifft: AW: Löschen von Zeilen in CMD-Dateien?
von: ralf_b
Geschrieben am: 31.10.2020 13:11:42

Zitat: was ist eine CMD-Datei?

eine Textdatei, die Befehlszeilen für den Commandinterpreter cmd.exe enthält. Auch Batch Dateien genannt.

Betrifft: AW: Löschen von Zeilen in CMD-Dateien?
von: Herbert_Grom
Geschrieben am: 31.10.2020 13:18:54

Hallo Ralf,

danke für deine Info. Batchdateien (*.bat) kenne ich natürlich, schon seit fast 30 Jahren. Aber "CMD"-Dateien habe ich noch nie gehört! Dass der Commandointerpreter ein eigenes Dateiformat hat war mir wirklich nicht bekannt. Hast du das Format schon mal verwendet? Und wenn ja, wie und wofür?

Servus

Betrifft: AW: Löschen von Zeilen in CMD-Dateien?
von: ralf_b
Geschrieben am: 31.10.2020 13:28:43

nein, verwenden tue ich die nicht. aber es ist quasi der Nachfolger von .bat Und es sind nur Textdateien.

Betrifft: AW: Mercie vielmals! owt
von: Herbert_Grom
Geschrieben am: 31.10.2020 13:29:38

,,,

Betrifft: AW: Löschen von Zeilen in CMD-Dateien?
von: volti
Geschrieben am: 01.11.2020 10:07:27

Hallo Sergej,

teste mal, ob nachfolgender Code Dein Anliegen schon korrekt umsetzt:

Code:
[Cc][+][-]

Option Explicit Const sSuch As String = "BA-SAR04" 'Const sPath = "D:\Daten\Projekte\Settings\" Const sPath As String = "C:\ControlApp\" Sub CheckFileStart() 'Durchforsten von gefilterten Dateien aus Ordner und Unterordner Dim iAnz As Long, sArr() As String, MsgTxt As String CheckFile iAnz, sArr, CreateObject("scripting.filesystemobject").GetFolder(sPath) If iAnz = 0 Then MsgTxt = "Es wurde keine entsprechende Datei gefunden!" Else MsgTxt = "Es wurde(n) " & iAnz & " Datei(en) gefunden und bearbeitet!" End If MsgBox MsgTxt, vbInformation, "Dateibearbeitung" End Sub Sub CheckFile(iAnz As Long, sArr, oPath As Object) Dim oFile As Object, oDir As Object, Obj As Variant Dim sFilename As String, sData As String, sArrZL() As String Dim iff As Integer, i As Long On Error Resume Next For Each oFile In oPath.Files 'Ordner durchsuchen If err = 0 Then With oFile err = 0 If .Name Like "*.cmd" Then 'Datei ausfiltern iff = FreeFile() Open .Path For Input As iff 'Datei öffnen sData = Input(LOF(iff), #iff) 'und Daten einlesen Close iff 'Datei schließen If InStr(sData, sSuch) > 0 Then 'Datei enthält das Suchwort, jetzt die Zeile rausnehmen Open .Path For Output As iff sArrZL = Split(sData, vbCrLf) 'Daten aufsplitten For i = 0 To UBound(sArrZL) If InStr(sArrZL(i), sSuch) = 0 Then Print #iff, sArrZL(i) End If Next i Close iff 'Datei schließen iAnz = iAnz + 1 End If End If End With End If Next For Each oDir In oPath.Subfolders 'Unterordner durchsuchen Obj = FileDateTime(oDir) CheckFile iAnz, sArr, oDir Next End Sub

_________________________
viele Grüße aus Freigericht 😊
Karl-Heinz


Betrifft: AW: Löschen von Zeilen in CMD-Dateien?
von: Sergej
Geschrieben am: 01.11.2020 10:36:31

Einen wunderschönen guten Morgen Karl-Heinz,

wie immer funktioniert es perfekt. Vielen herzlichen Dank!

Ich hätte noch eine Frage. ;-)
Ist es bitte möglich durch eine zweite VBA-Routine die CMD-Datei an der bestimmter Stelle zu erweitern?
Es soll in allen CMD-Dateien nach "CH-ETT01" (akkn mehrfach in der Datei vorkommen) gesucht werden. Wenn die Zeile gefunden wird, dann soll diese Zeile nach unten kopiert werden und in der kopierter Zeile der Eintrag "CH-ETT01" durch "DE-WUP08" ersetzt werden.

Beste Grüße,
Sergej

Betrifft: AW: Löschen von Zeilen in CMD-Dateien?
von: volti
Geschrieben am: 01.11.2020 10:52:04

Hallo Sergej,

teste mal, ob's klappt:

Code:
[Cc][+][-]

Option Explicit Const sSuch As String = "CH-ETT01" Const sErsetz As String = "DE-WUP08" Const sPath As String = "D:\Daten\Projekte\Settings\" Sub CheckFileStart() 'Durchforsten von gefilterten Dateien aus Ordner und Unterordner Dim iAnz As Long, sArr() As String, MsgTxt As String CheckFile iAnz, sArr, CreateObject("scripting.filesystemobject").GetFolder(sPath) If iAnz = 0 Then MsgTxt = "Es wurde keine entsprechende Datei gefunden!" Else MsgTxt = "Es wurde(n) " & iAnz & " Datei(en) gefunden und bearbeitet!" End If MsgBox MsgTxt, vbInformation, "Dateibearbeitung" End Sub Sub CheckFile(iAnz As Long, sArr, oPath As Object) Dim oFile As Object, oDir As Object, Obj As Variant Dim sFilename As String, sData As String, sArrZL() As String Dim iff As Integer, i As Long, sErweiterung As String On Error Resume Next For Each oFile In oPath.Files 'Ordner durchsuchen If err = 0 Then With oFile err = 0 If .Name Like "*.cmd" Then 'Datei ausfiltern sErweiterung = "" iff = FreeFile() Open .Path For Input As iff 'Datei öffnen sData = Input(LOF(iff), #iff) 'und Daten einlesen Close iff 'Datei schließen If InStr(sData, sSuch) > 0 Then 'Datei enthält das Suchwort, jetzt die Zeile rausnehmen Open .Path For Output As iff sArrZL = Split(sData, vbCrLf) 'Daten aufsplitten For i = 0 To UBound(sArrZL) If InStr(sArrZL(i), sSuch) > 0 Then sErweiterung = sErweiterung _ & Replace(sArrZL(i), sSuch, sErsetz) & vbCrLf End If Print #iff, sArrZL(i) 'Daten in Datei schreiben Next i If sErweiterung <> "" Then sErweiterung = Left$(sErweiterung, Len(sErweiterung) - 1) Print #iff, sErweiterung 'Kopierte Texte unten dran End If Close iff 'Datei schließen iAnz = iAnz + 1 End If End If End With End If Next For Each oDir In oPath.Subfolders 'Unterordner durchsuchen Obj = FileDateTime(oDir) CheckFile iAnz, sArr, oDir Next End Sub

_________________________
viele Grüße aus Freigericht 😊
Karl-Heinz


Betrifft: AW: Löschen von Zeilen in CMD-Dateien?
von: Sergej
Geschrieben am: 01.11.2020 11:17:06

Hallo Karl-Heinz,

ich habe es getestet, die Zeile ist kopiert und ersetzt. Nur die kopierte Zeile ist am Ende der Datei und nicht unterhalb "CH-ETT01" von kopiert worden.


Beste Grüße,
Sergej

Betrifft: AW: Löschen von Zeilen in CMD-Dateien?
von: volti
Geschrieben am: 01.11.2020 11:27:53

Na das lässt sich doch fix ändern:

Code:
[Cc][+][-]

Option Explicit Const sSuch As String = "CH-ETT01" Const sErsetz As String = "DE-WUP08" Const sPath As String = "D:\Daten\Projekte\Settings\" Sub CheckFileStart() 'Durchforsten von gefilterten Dateien aus Ordner und Unterordner Dim iAnz As Long, sArr() As String, MsgTxt As String CheckFile iAnz, sArr, CreateObject("scripting.filesystemobject").GetFolder(sPath) If iAnz = 0 Then MsgTxt = "Es wurde keine entsprechende Datei gefunden!" Else MsgTxt = "Es wurde(n) " & iAnz & " Datei(en) gefunden und bearbeitet!" End If MsgBox MsgTxt, vbInformation, "Dateibearbeitung" End Sub Sub CheckFile(iAnz As Long, sArr, oPath As Object) Dim oFile As Object, oDir As Object, Obj As Variant Dim sFilename As String, sData As String, sArrZL() As String Dim iff As Integer, i As Long On Error Resume Next For Each oFile In oPath.Files 'Ordner durchsuchen If err = 0 Then With oFile err = 0 If .Name Like "*.cmd" Then 'Datei ausfiltern iff = FreeFile() Open .Path For Input As iff 'Datei öffnen sData = Input(LOF(iff), #iff) 'und Daten einlesen Close iff 'Datei schließen If InStr(sData, sSuch) > 0 Then 'Datei enthält das Suchwort, jetzt die Zeile rausnehmen Open .Path For Output As iff sArrZL = Split(sData, vbCrLf) 'Daten aufsplitten For i = 0 To UBound(sArrZL) Print #iff, sArrZL(i) 'Daten in Datei schreiben If InStr(sArrZL(i), sSuch) > 0 Then Print #iff, Replace(sArrZL(i), sSuch, sErsetz) End If Next i Close iff 'Datei schließen iAnz = iAnz + 1 End If End If End With End If Next For Each oDir In oPath.Subfolders 'Unterordner durchsuchen Obj = FileDateTime(oDir) CheckFile iAnz, sArr, oDir Next End Sub

_________________________
viele Grüße aus Freigericht 😊
Karl-Heinz


Betrifft: AW: Löschen von Zeilen in CMD-Dateien?
von: Sergej
Geschrieben am: 01.11.2020 15:42:53

Hallo Karl-Heinz,

großartig. Vielen herzlichen Dank!

Beste Grüße,
Sergej

Beiträge aus dem Excel-Forum zum Thema "Löschen von Zeilen in CMD-Dateien?"