PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [batch]UNC-Pfade beim Aufruf


RodG
06.11.2006, 09:51
guten morgen lieber coding-board-gemeinde!

ich möchte aus Access/VBA heraus ein Share mit einer administrativen Freigabe erstellen (net use...)
dafür habe ich mir folgende Zeile überlegt:

Shell "cmd /c ping -n 1 -w 10 xx.xx.xx.xx | find /i ""Antwort"" && (cmd /c explorer.exe \\" & xx.xx.xx.xx & "\c$) || (cmd /c U:\test.vbs)"

wenn der Ping erfolgreich ist, soll das share aufgebaut werden, ansonsten soll eine Meldung kommen (was andres als ne vbs-datei fällt mir net ein)
meine Datenbnak liegt jedoch auf nem Netzlaufwerk und die cmd.exe kommt mit unc-pfaden nicht klar
ich bekomme dann immer die Meldung

"\\vetsrv08\mitarbeiter$\praktikant.max"
CMD.EXE wurde mit dem oben angebenen Pfad als aktuellem Verzeichnis gestartet.
UNC-Pfade werden nicht unterstützt.
Stattdessen wird das Windows-Verzeichnis als aktuelles Verzeichnis gesetzt.

gibt es ne möglichkeit, von diesem verzeichn is heraus die cmd.exe aufzurufen und sie zum funktionieren zu überzeugen?

vielen dank im voraus

Gruß
RodG


Mr.Homm
06.11.2006, 11:55
So weit ich weiß, kann cmd.exe nicht UNC-Pfade als aktuelles Arbeitsverzeichnis annehmen. Eine Batch-Datei über einen UNC-Pfad aufzurufen ist aber möglich. Z.B. C:\> \\foo\bar\batch.cmd würde batch.cmd ausführen, dass auf Rechner foo in der Freigabe bar liegt. Bei der Ausführung wäre das aktuelle Arbeitsverzeichnis aber C:\. Wenn du aber mit "...von diesem verzeichn is heraus die cmd.exe aufzurufen..." meinst, dass \\foo\bar\ das aktuelle Arbeitsverzeichnis sein soll, dann ginge das nur darüber, dass du \\foo\bar\ vorher ein Laufwerksbuchstaben zuweist und dann dort die Batchdatei ausführst
C:\> net use x: \\foo\bar
C:\> X:
X:\> batch.cmd
Wie du das in Access/VBA verpackst, kann ich dir nicht beantworten.

RodG
06.11.2006, 13:43
ok, das problem hab ich erstmal umgangen...

jetzt habe ich aber mit folgener zeile ein kurioses problem:

ping -n 1 -w 10 xx.xx.xx.xx | find /i "Antwort" && (explorer.exe \\xx.xx.xx.xx\C$) || (U:\test.vbs)

wenn ich die zeile direkt in der konsole ausführe, dann macht er es korrekt, aus einer .cmd heraus führt er den letzten teil immer aus, den ersten nur, wenn er den rechner erreicht. sieht jmd den fehler bzw kann mir nen tipp geben?
kann mir nur vorstellen, dass er in der .cmd die || als zwei pipes betrachtet. :/

Mr.Homm
06.11.2006, 14:26
ok, das problem hab ich erstmal umgangen...

jetzt habe ich aber mit folgener zeile ein kurioses problem:

ping -n 1 -w 10 xx.xx.xx.xx | find /i "Antwort" && (explorer.exe \\xx.xx.xx.xx\C$) || (U:\test.vbs)
wenn ich die zeile direkt in der konsole ausführe, dann macht er es korrekt, aus einer .cmd heraus führt er den letzten teil immer aus, den ersten nur, wenn er den rechner erreicht. sieht jmd den fehler bzw kann mir nen tipp geben?
kann mir nur vorstellen, dass er in der .cmd die || als zwei pipes betrachtet. :/

Es liegt am explorer.exe, der innerhalb der CMD anscheinend immer FALSE zurückliefert. Mit dir anstelle von explorer wird die Fehlerbehandlung nur dann aufgerufen, wenn der Host nicht existiert.