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
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
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
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
Um Zeilen in CMD-Dateien zu löschen, kannst Du VBA in Excel verwenden. Hier ist eine einfache Schritt-für-Schritt-Anleitung:
ALT + F11, um den VBA-Editor zu öffnen.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
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.
Fehler: "Es wurde keine entsprechende Datei gefunden!"
sPath. Stelle sicher, dass der Pfad korrekt ist und dass sich dort CMD-Dateien befinden.Fehler: Das Makro läuft nicht.
Datei > Optionen > Trust Center > Einstellungen für das Trust Center > Makroeinstellungen und aktiviere die Makros.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.
Hier sind einige Beispiele, wie Du das Löschen und Ersetzen in CMD-Dateien umsetzen kannst:
Zeilen löschen:
Zeilen ersetzen:
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.
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.
Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden
Suche nach den besten AntwortenEntdecke unsere meistgeklickten Beiträge in der Google Suche
Top 100 Threads jetzt ansehen