thomas1972
Goto Top

VBS Script lieferfert seit ein paar Tagen Fehler Code 800A0046 Erlaubnis Verweigert

Hallo,

ich lasse mit folgendem Script (VBS) alle CSV Dateien in einem Verzeichnis jeweils das Komma durch Semikolon ersetzen.

Ordner = "C:\Temp\"  
Typ = "csv" 'in Kleinbuchstaben  

Set fso = CreateObject("Scripting.FileSystemObject")  
For Each Datei In fso.GetFolder(Ordner).Files
    If LCase(fso.GetExtensionName(Datei.Name)) = Typ Then
        T = Datei.OpenAsTextStream.ReadAll
        fso.CreateTextFile(Datei.Path).Write Mid(Replace(T, ",", ";"), InStr(T, vbNewline) + 2)  
    End If
Next

letztmalig wurde dieses am 03.12 ausgeführt.
Heute liefert das Script an der Zeile 7 den Fehler Code 800A0046 Erlaubnis Verweigert.

Öffne ich die Dateien mit einem Texteditor / Sucher/ Ersetze kann ich ohne einen Fehler die Datei speichern.

Was kann / ist hier der Fehler , warum verweigert mir Windows mit dem Scrit den Zugriff.
Auch Test mit anderen Ordnern brachte keine Lösung.

Grüße aus München

Content-Key: 291412

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

Printed on: April 20, 2024 at 02:04 o'clock

Member: emeriks
emeriks Dec 20, 2015 at 19:39:27 (UTC)
Goto Top
Hi,
wie wird denn das Script ausgeführt? Scheduled Task? Falls ja, unter welchem Benutzer?
Macht es einen Unterschied, ob man es als Scheduled Task ausführt oder manuell z.B. über Explorer oder CMD gestartet?
Macht es einen Unterschied, wenn man das Script "als Administrator" ausführt?

E.
Member: thomas1972
thomas1972 Dec 20, 2015 updated at 19:51:05 (UTC)
Goto Top
Es wird per weiterem Aufruf aus einer BAT Datei gestartet ( CMD),
aber auch der Aufruf manuell aus dem entsprechenden Verzeichnis schlägt fehl.
Auch als Ausführen als Administrator gibt es Probleme.

Gäbe es sonst die Möglichkeit innerhalb von Dateien Inhalte Suchen und ersetzen zu lassen?

Wundert mich alles, da seit Sep. 2009. das Script jeden Tag ausgeführt wird.

Danke für die Antwort
Member: thomas1972
thomas1972 Dec 20, 2015 at 21:55:09 (UTC)
Goto Top
Konnte den Fehler auf alle Ordern, welche Temp im Namen haben eingrenzen, sobald ich auf andere Ordner zurück greife geht dieses.
was kann hier die Ursache sein?
Member: rubberman
rubberman Dec 21, 2015 at 11:08:44 (UTC)
Goto Top
Hallo thomas1972,

eventuell solltest du mal versuchen explizit zum Lesen und Schreiben zu öffnen und ordnungsgemäß zu schließen. Ungetestet:
Ordner = "C:\Temp\"  
Typ = "csv" 'in Kleinbuchstaben  

Set fso = CreateObject("Scripting.FileSystemObject")  
For Each Datei In fso.GetFolder(Ordner).Files
    If LCase(fso.GetExtensionName(Datei.Name)) = Typ Then
        With Datei.OpenAsTextStream(1)
            T = .ReadAll
            .Close
        End With
        With Datei.OpenAsTextStream(2)
            .Write Mid(Replace(T, ",", ";"), InStr(T, vbNewline) + 2)  
            .Close
        End With
    End If
Next


Grüße
rubberman
Mitglied: 114757
114757 Dec 21, 2015 updated at 11:14:45 (UTC)
Goto Top
Oder auch die Powershell in der CMD benutzen:
powershell -ExecutionPolicy ByPass -Command "gci 'c:\temp\*.csv' | %%{(gc $_.FullName) -replace ',',';' | set-content $_.FullName}"  
Gruß jodel32