WSH script: aktuelles Verzeichnis eines Laufwerks?

Hallo allseits,

hat jemand eine Idee, wie ich das momentane Standardverzeichnis eines Laufwerks herausfinden kann, dessen Laufwerksbuchstabe bekannt ist?

…Armin

Hi Armin,

was ist ein Standardverzeichnis? Das aktualle Verzeichnis bekommst Du mit CurDir.

Gruß, Rainer

Hallo Rainer,

das wärs dann wohl - aber mein WSH/VBS kennt keinen „CurDir“ Befehl. Er kennt nur eine „CurrentDirectory“ Eigenschaft im Shell Objekt, dem man aber keinen Laufwerksbuchstaben mitgeben kann.

…Armin

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

hi Armin,

ich verstehe es immer noch nicht.

das wärs dann wohl - aber mein WSH/VBS kennt keinen „CurDir“
Befehl. Er kennt nur eine „CurrentDirectory“ Eigenschaft im
Shell Objekt, dem man aber keinen Laufwerksbuchstaben mitgeben
kann.

Das geht bei CurDir auch nicht.

CurDir ist der letzte Pfad, den Windows verwendet hat und hat mit dem Laufwerk nichts zu tun.

Beschreibe doch mal das Problem, das Du damit lösen möchtest.

Gruß, Rainer

Beschreibe doch mal das Problem, das Du damit lösen möchtest.

Es geht um das aktuelle verzeichnis, das in der DOS-Box jedem Laufwerk zugewiesen ist. Du kannst ja

Dir e:

ein Laufwerk anzeigen lassen, und bekommst dann irgendein verzeichnis angezeigt. Du kannst auch mit cd e:\test in dieses Verzeichnis wechseln, und bekommst danach mit „dir e:“ das Verzeichnis e:\test angezeigt - solange Du es nicht weider wechselst oder die DOS-Box zu machst,

…Armin

Hallo!

Das aktuelle Verzeichnis unter WSH/VBS ist m.E. zunächst mal das, aus dem heraus das VBS aufgerufen wurde. Eigentlich kann man auch kein Arbeitsverzeichnis festlegen . . . glaube ich.

Aber:

CurrentDirectory gibt eine Zeichenfolge zurück, die den voll gekennzeichneten Pfad zum aktuellen Arbeitsverzeichnis des aktiven Prozesses enthält.

Dim WshShell
Set WshShell = WScript.CreateObject(„WScript.Shell“)
WScript.Echo WshShell.CurrentDirectory

Ich sehe schon, ich muss das Problem noch ein wenig genauer schildern.

Ich habe ein Scriptchen geschrieben, das man mit einem Laufwerkspfad als Parameter aufruft, und das dann irgendwelchen Voodoo mit den dateien im angegebenen verzeichnis treibt:

cscript voodoo.vbs c:\temp\meinedaten

Jetzt wollte ich den übergebenen Parameter a la DOS etwas flexibler gestalten:

cscript voodoo.vbs \temp\meinedaten (aktuelles Laufwerk nehmen)
cscript voodoo.vbs temp\meinedaten (Pfad relativ zum momentanen Pfad)
cscript voodoo.vbs e: (aktuellen Pfad auf e: verwenden).

Das letzte Beispiel ist bisher nicht zu machen, weil ich kein API gefunden habe welches den aktuellen Pfad von e: zurückgibt.

…Armin

Ich glaube, die Aussage "aktueller Pfad von Laufwerk " kann man eigentlich nicht verwenden.

In einer Eingabeaufforderung (auch „DOS-Box“ genannt) wird der aktuelle Pfad zu einem Laufwerk immer Root sein (also C:\ H:\ S:). Wenn man dieses Laufwerk verwendet und das Verzeichnis wechselt, bleibt das Verzeichnis (als aktuelles Verzeichnis FÜR dieses Laufwerk) erhalten.

Wenn man z.B. nach e:\wichtige\Dateien\sind\hier\ wechselt und anschließen auf C: in das Verz. C:\unsinn\steht\hier\ wechselt, kann man, sobald man nach d: gewechselt hat, mit
XCOPY e: c:
Dateien von
e:\wichtige\Dateien\sind\hier\
nach
C:\unsinn\steht\hier\
kopieren. (So wird wichtiges zu unsinn.) Sobald man die Eingabeaufforderung schließt und eine neue Eingabeaufforderung öffnet, müssten bei
XCOPY e: c:
was anderes passieren (das austesten hätte jetzt zu lange gedauert).

Und das Wechseln des Eingabe-Focus geht so unter WSH/VBS nicht . . . man kann ja ‚nichts‘ eingeben, also auch kein Verzeichnis wechseln.

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]