Excel VBA löschen von Dateien: Lange Pfade, Sonderzeichen, versteckt, etc
Hallo, ich mal wieder am LIMIT!
Ich will mit Excel VBA Dateien löschen.
Herausvorderungen:
mit folgenden Zeilen funktioniert das bis auf den ungelösten Teil:
Set WshShell = CreateObject ("WScirpt.shell ")
DateiundPfad ="C:\test\Ichmag'keine Sonderzeichen.txt"
DateiundPfad = "'" & "\\?\" & DateiundPfad & "'"
aufruf = "powershell.exe -command ""Remove-item " & DateiundPfad & " -force"
WshShell.Run aufruf, 0, True
Es liegt wohl an der Übergabe an den .Run Befehl. In der Powershell Konsole funktioniert
=> Remove-item "\\?\C:\test\Ichmag'keine Sonderzeichen.txt" -force
Was mache ich falsch?
Gruss der Torsten
Ich will mit Excel VBA Dateien löschen.
Herausvorderungen:
- lange Pfade und Dateinamen mit mehr als 255 Zeichen - gelöst
- versteckte und schreibgeschütze Dateien - gelöst
- Dateien mit Sonderzeichen - ungelöst
mit folgenden Zeilen funktioniert das bis auf den ungelösten Teil:
Set WshShell = CreateObject ("WScirpt.shell ")
DateiundPfad ="C:\test\Ichmag'keine Sonderzeichen.txt"
DateiundPfad = "'" & "\\?\" & DateiundPfad & "'"
aufruf = "powershell.exe -command ""Remove-item " & DateiundPfad & " -force"
WshShell.Run aufruf, 0, True
Es liegt wohl an der Übergabe an den .Run Befehl. In der Powershell Konsole funktioniert
=> Remove-item "\\?\C:\test\Ichmag'keine Sonderzeichen.txt" -force
Was mache ich falsch?
Gruss der Torsten
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 664979
Url: https://administrator.de/contentid/664979
Ausgedruckt am: 20.11.2024 um 05:11 Uhr
2 Kommentare
Neuester Kommentar
Warum nimmst du zum Löschen nicht direkt den kill Befehl in VBA? Der kommt hier testweise auch mit Pfaden länger als 255 zurecht.
p.s. Sichtbar schalten der Shell (letzte Zeile 0 auf 1) hilft ungemein beim debuggen .
Gruß SK
kill "\\?\c:\test\Ichmag'keine Sonderzeichen.txt"
Was mache ich falsch?
Einiges, neben Tippfehlern beim Erzeugen des Shell Objects, unausgeglichene Abschlusszeichen und die Pfadangabe nicht als -LiteralPath Parameter angegeben.Set WshShell = CreateObject("WScript.shell")
DateiundPfad = "c:\test\Ichmag'keine Sonderzeichen.txt"
DateiundPfad = Replace("\\?\" & DateiundPfad, "'", "''", 1, -1, 1)
aufruf = "powershell.exe -command ""Remove-item -LiteralPath '" & DateiundPfad & "' -force"""
WshShell.Run aufruf, 0, True
Gruß SK