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

Geschrieben

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]

Geschrieben

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)

Geschrieben

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

Geschrieben

Moin,

 

Dirks Hinweise sind gut. Zusätzlich: Wenn du einen Pfad zusammenbaust, solltest du die FileSystemObject-Funktion "BuildPath" benutzen, denn die kümmert sich von selbst um die richtige Anzahl an Backslashes.

 

Gruß, Nils

Geschrieben

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

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

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden
×
×
  • Neu erstellen...