Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Löschen von Zeilen in CMD-Dateien?

Löschen von Zeilen in CMD-Dateien?
31.10.2020 11:24:43
Zeilen
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
Anzeige

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Löschen von Zeilen in CMD-Dateien?
31.10.2020 13:00:17
Zeilen
Hallo Sergej,
was ist eine CMD-Datei?
Und beim Pfad meintest du sicher "D:\Daten\Projekte\Settings\" und nicht D:\Daten\Projkete\Settings\"
Servus
AW: Löschen von Zeilen in CMD-Dateien?
31.10.2020 13:11:42
Zeilen
Zitat: was ist eine CMD-Datei?
eine Textdatei, die Befehlszeilen für den Commandinterpreter cmd.exe enthält. Auch Batch Dateien genannt.
Anzeige
AW: Löschen von Zeilen in CMD-Dateien?
31.10.2020 13:18:54
Zeilen
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
Anzeige
AW: Löschen von Zeilen in CMD-Dateien?
31.10.2020 13:28:43
Zeilen
nein, verwenden tue ich die nicht. aber es ist quasi der Nachfolger von .bat Und es sind nur Textdateien.
AW: Mercie vielmals! owt
31.10.2020 13:29:38
Herbert_Grom
,,,
AW: Löschen von Zeilen in CMD-Dateien?
01.11.2020 10:07:27
Zeilen
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

Anzeige
AW: Löschen von Zeilen in CMD-Dateien?
01.11.2020 10:36:31
Zeilen
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
Anzeige
AW: Löschen von Zeilen in CMD-Dateien?
01.11.2020 10:52:04
Zeilen
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:&bsol;Daten&bsol;Projekte&bsol;Settings&bsol;" 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

Anzeige
AW: Löschen von Zeilen in CMD-Dateien?
01.11.2020 11:17:06
Zeilen
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
AW: Löschen von Zeilen in CMD-Dateien?
01.11.2020 11:27:53
Zeilen
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:&bsol;Daten&bsol;Projekte&bsol;Settings&bsol;" 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

Anzeige
AW: Löschen von Zeilen in CMD-Dateien?
01.11.2020 15:42:53
Zeilen
Hallo Karl-Heinz,
großartig. Vielen herzlichen Dank!
Beste Grüße,
Sergej
;

Forumthreads zu verwandten Themen

Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Zeilen in CMD-Dateien löschen und ersetzen


Schritt-für-Schritt-Anleitung

Um Zeilen in CMD-Dateien zu löschen, kannst Du VBA in Excel verwenden. Hier ist eine einfache Schritt-für-Schritt-Anleitung:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge ein neues Modul hinzu: Klicke im Projektfenster mit der rechten Maustaste auf "VBAProject (DeineArbeitsmappe)" und wähle "Einfügen" > "Modul".
  3. Kopiere den folgenden Code in das Modul:
Option Explicit

Const sSuch As String = "BA-SAR04"
Const sPath As String = "D:\Daten\Projekte\Settings\"

Sub CheckFileStart()
    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, sData As String
    Dim sArrZL() As String, i As Long

    On Error Resume Next

    For Each oFile In oPath.Files
        If Err = 0 Then
            With oFile
                If .Name Like "*.cmd" Then
                    Open .Path For Input As #1
                    sData = Input(LOF(1), #1)
                    Close #1

                    If InStr(sData, sSuch) > 0 Then
                        Open .Path For Output As #1
                        sArrZL = Split(sData, vbCrLf)
                        For i = 0 To UBound(sArrZL)
                            If InStr(sArrZL(i), sSuch) = 0 Then
                                Print #1, sArrZL(i)
                            End If
                        Next i
                        Close #1
                        iAnz = iAnz + 1
                    End If
                End If
            End With
        End If
    Next oFile
End Sub
  1. Schließe den VBA-Editor und kehre zu Excel zurück.
  2. Führe das Makro aus: Gehe zu Entwicklertools > Makros, wähle CheckFileStart und klicke auf Ausführen.

Mit diesem VBA-Script kannst Du alle Zeilen in Deinen CMD-Dateien löschen, die den String "BA-SAR04" enthalten.


Häufige Fehler und Lösungen

  • Fehler: "Es wurde keine entsprechende Datei gefunden!"

    • Lösung: Überprüfe den angegebenen Pfad in der Konstante sPath. Stelle sicher, dass der Pfad korrekt ist und dass sich dort CMD-Dateien befinden.
  • Fehler: Das Makro läuft nicht.

    • Lösung: Stelle sicher, dass die Makros in Excel aktiviert sind. Gehe zu Datei > Optionen > Trust Center > Einstellungen für das Trust Center > Makroeinstellungen und aktiviere die Makros.

Alternative Methoden

Wenn Du keine VBA verwenden möchtest, kannst Du auch mit der Windows Eingabeaufforderung (CMD) arbeiten, um spezifische Zeilen in CMD-Dateien zu löschen. Hier ist ein Beispiel:

findstr /v "BA-SAR04" "D:\Daten\Projekte\Settings\*.cmd" > "D:\Daten\Projekte\Settings\temp.cmd"
move /Y "D:\Daten\Projekte\Settings\temp.cmd" "D:\Daten\Projekte\Settings\dateiname.cmd"

Diese Befehle durchsuchen alle CMD-Dateien im angegebenen Verzeichnis und speichern die Dateien ohne die Zeilen mit "BA-SAR04" in einer temporären Datei.


Praktische Beispiele

Hier sind einige Beispiele, wie Du das Löschen und Ersetzen in CMD-Dateien umsetzen kannst:

  1. Zeilen löschen:

    • Verwende den obigen VBA-Code, um alle Zeilen zu löschen, die den String "BA-SAR04" enthalten.
  2. Zeilen ersetzen:

    • Um eine Zeile nach "CH-ETT01" zu kopieren und zu ersetzen, kannst Du folgenden VBA-Code verwenden:
Const sSuch As String = "CH-ETT01"
Const sErsetz As String = "DE-WUP08"
...
' (der Rest des Codes wie oben)

Hierbei wird die Zeile "CH-ETT01" durch "DE-WUP08" ersetzt.


Tipps für Profis

  • Sichere Deine Daten: Mach immer eine Sicherung Deiner CMD-Dateien, bevor Du sie bearbeitest.
  • Testumgebung: Teste den VBA-Code in einer kleinen Testumgebung, bevor Du ihn auf alle Dateien anwendest.
  • Erweiterte Suche: Du kannst die Suchbegriffe in den VBA-Codes anpassen, um mehrere Strings gleichzeitig zu löschen oder zu ersetzen.

FAQ: Häufige Fragen

1. Was sind CMD-Dateien?
CMD-Dateien sind Textdateien, die Befehlszeilen für den Windows Command Interpreter (CMD) enthalten. Sie werden auch als Batch-Dateien bezeichnet.

2. Wie kann ich eine CMD-Datei löschen?
Um eine CMD-Datei mit CMD zu löschen, verwende den Befehl del. Beispiel:

del "D:\Daten\Projkete\Settings\dateiname.cmd"

3. Kann ich mehrere CMD-Dateien gleichzeitig löschen?
Ja, Du kannst die Wildcard * verwenden, um mehrere Dateien zu löschen. Beispiel:

del "D:\Daten\Projkete\Settings\*.cmd"

4. Wie kann ich sicherstellen, dass keine wichtigen Daten verloren gehen?
Erstelle immer Sicherungskopien der Dateien, bevor Du sie bearbeitest oder löschst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige