nohouse303
Goto Top

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:

  • 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

Content-Key: 664979

Url: https://administrator.de/contentid/664979

Ausgedruckt am: 29.03.2024 um 02:03 Uhr

Mitglied: 147669
Lösung 147669 22.03.2021 aktualisiert um 12:06:50 Uhr
Goto Top
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.
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
p.s. Sichtbar schalten der Shell (letzte Zeile 0 auf 1) hilft ungemein beim debuggen face-wink.

Gruß SK
Mitglied: Nohouse303
Nohouse303 22.03.2021 um 15:00:32 Uhr
Goto Top
Klappt perfekt! Vielen Dank.

Kill ist auch sehr sexy. Leider löscht er bei mir nicht die versteckten Datein.
vielen Dank

Gruss Torsten