Jump to content

bei einem Parameter einer Funktion - File not found...


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hallo,

 

folgendes Problem. Habe ein VB-Script in dem es einen Funktion gibt die eine Ini-Datei auswerten soll. Die Ini-Datei liegt im gleichen Ordner wie das Script.

 

Wenn ich das Script über eine GPO als Startscript (Computerkonfiguration)aufrufe, errscheint die Fehlermeldung:

"(21,1) Laufzeitfehler in MS VBScript. Datei wurde nicht gefunden"

 

In Zeile 14 beginnt die Funktion, die als Paramter den Pfad der Ini-Datei bekommt.

 

Private Function IniValue(ByVal section, ByVal [b]iniFile[/b])

 

Habe im Script relative Pfadangaben und UNC-Pfadangaben benutzt. Egal es kommt immer der gleiche Fehler.

 

Rufe ich aus dem Script z.B. eine exe Datei auf die im gleichen Verzeichnis liegt, bekomme ich keinen Fehler.

 

Gruß,

Markus

 

edit:

Zeile 21 ist:

 

Set objIni = objFSO.OpenTextFile(iniFile, ForReading, vbFalse)[/Code]

Link zu diesem Kommentar

in diesem Fall habe ich die Dateien alle nach %windir%\Temp kopiert.

 

Private Function IniValue(ByVal section, ByVal iniFile)
Const ForReading = 1
Dim objFSO, objIni
Dim line, firstChar, marker, value, i, j, iniArray(3,1)
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objIni = objFSO.OpenTextFile(iniFile, ForReading, vbFalse)
marker = False
While Not objIni.AtEndOfStream
...
IniValue = iniArray
End Function

...

iniPath = systemRoot & "\Temp\Dateiname.ini"
iniValues = IniValue(Parameter1, iniPath)

Link zu diesem Kommentar

Hallo,

 

mit welchem Wert ist denn systemRoot besetzt?

 

Hast du das vorher z.B. mit ExpandEnvironmentstrings ausgelesen?

 

Wenn die ini im gleichen Verzeichnis liegt wie das Script selbst, könntest du auch getFolder"." benutzen...

 

Ich würde an deiner Stelle mal den String iniPath per msgbox ansehen. Das könnte durchaus aufschlußreich sein...

 

 

Gruß

 

Dirk

Link zu diesem Kommentar

der Pfad ist nicht das Problem. Selbst wenn ich ihn direkt reinschreibe, bekomme ich die Fehlermeldung.

 

Und ums noch verückter zu machen...

Ich habe folgende Zeilen innerhalb der Funktion hinzugefügt um, wie d.stegemann vorgeschlagen hat, den Pfad in der Variable auszulesen.

 

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objIni = objFSO.OpenTextFile(iniFile, ForReading, vbFalse)
WScript.Echo iniFile
WScript.Echo objIni.Column
WScript.Quit

 

Dies funktioniert komischerweise ohne Probleme. Ich kann sogar auf File-Object (mit .Column) zugreifen. In diesem Versuch habe ich die Funktion und damit das ganze Script mit WScript.Quit abbrechen lassen.

Entferne ich WScript.Quit bekomme ich wieder den Fehler das die Datei nicht gefunden wurde mit Verweis auf folgende Zeile im Code:

 

Set objIni = objFSO.OpenTextFile(iniFile, ForReading, vbFalse)

 

Das Problem tritt übrigens nur innerhalb der Funktion auf. Im restlichen Script funktioniert alles ohne Probleme.

 

edit:

Habe das Problem gefunden!

Zuerst war es wirklich am Pfad gelegen. Diesen habe ich dann mit GetParentFolderName geholt.

Damit gings dann. Nur hatte ich einen weiteren nicht mehr gebrauchten Aufruf der Funktion (den ich total vergessen habe), in dem der Pfad natürlich

nicht ausgebessert war.

 

Danke für den Tipp mit GetParentFolderName!

 

Gruß,

Markus

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...