CMD unterstützt keine UNC-Pfade als Aktuelles Verzeichnisse
Haben wir batch-Skripten, die scheinen zu verlaufen, jedoch bin ich der Bearbeitung einer von Ihnen, um einige neue arbeiten und, wenn Sie manuell ausgeführt wird das script durch Doppelklick aus dem windows-explorer) bekomme ich die obige Fehlermeldung jedes mal, wenn ein pushd-Befehl in das Skript gefunden wird. Dies sind die Befehle pushd, dass es seit dem Jahr dot und die Skripte laufen gut.
Gibt es einen Unterschied zwischen dem batch-Skript manuell ausgeführt und beim Start durch einen scheduler?
Wie kann ich deaktivieren Sie die Fehlermeldung, wenn manuell ausgeführt (falls dies möglich ist)?
InformationsquelleAutor Nelson | 2017-07-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Doppelklick auf eine batch-Datei
cmd.exe
gestartet wird, ist die implizite Verwendung der option/C
zu Befehl schließen Prozess nach Beendigung der batch-Datei die Ausführung und der Einstellung Verzeichnis der batch-Datei als aktuelle Verzeichnis.Wenn das ein Doppelklick auf die batch-Datei auf eine Netzwerkfreigabe, UNC-Pfad verwendet statt der Abbildung der Netzwerk-Freigabe einen Laufwerksbuchstaben zu, und verwenden Sie das Netzwerk-Laufwerk,
cmd.exe
informiert den Benutzer, dass UNC-Pfad als Aktuelles Verzeichnis wird nicht unterstützt und setzt%SystemRoot%
(Windows -) Verzeichnis als Aktuelles Verzeichnis.Die Warnung kann ignoriert werden, wenn die batch-Datei ist so konzipiert, für ausgeführt wird, aus einem beliebigen Verzeichnis das heißt, es ist nicht erforderlich, dass das Verzeichnis der batch-Datei ist das aktuelle Verzeichnis. Gute codiert batch-Dateien, vor allem diejenigen, die ausgeführt wird, indem Sie den Windows task-scheduler ausgeführt werden können ein beliebiges Verzeichnis als das aktuelle Verzeichnis.
Auf die Ausführung einer batch-Datei als geplanter task den task-scheduler legt
%SystemRoot%\System32
(Windows-System-Verzeichnis) als aktuellen Verzeichnis, bevor Sie den Befehl ausführen, außer einem bestimmten Verzeichnis Pfad wird explizit festgelegt als start in directory in den Eigenschaften des geplanten tasks.Siehe auch Wie kann ich das deaktivieren der UNC (Universal Naming Convention) check for command-sessions?
Bitte beachten Sie, dass beim aktivieren der Unterstützung für das ausführen von batch-Dateien mit UNC-Pfad als Aktuelles Verzeichnis, einige Konsolen-Anwendungen konnte nicht mit, weil Sie nicht geplant wird, die Umwelt.
In Ihrem Fall mit batch-Datei entwickelt, die für die Ausführung der geplanten Aufgabe und nehmen daher alle Aspekte berücksichtigt, von mir aufgeführten, in Antwort auf Ausführen von BAT-Dateien geplanten task, können Sie diese Warnmeldung ignorieren Doppelklick auf die batch-Datei mit UNC-Pfad.
Natürlich können Sie auch eine Verknüpfung erstellen, die Datei (*.lnk) für die batch-Datei zum starten der batch Datei über diese Verknüpfung mit Start in in den Eigenschaften der Verknüpfung die Datei auf
%SystemRoot%\System32
als Windows-Taskplaner standardmäßig tut.Befehl CD kann nicht mit einem UNC-Pfad. Also, wenn Sie Ihre batch-Datei enthält
cd "\\Server\Share\folder1\folder2"
es funktioniert nicht. Es ist notwendig, verwenden Sie den Befehl PUSHD mit Befehlserweiterungen aktiviert sind als standardmäßig. Ansonsten PUSHD unterstützt nicht die Abbildung UNC-Pfad zeitweise zum nächsten freien Laufwerksbuchstaben. Führen Sie in einem Eingabeaufforderungsfensterpushd /?
für details. Es könnte sein, dass Sie die Befehlserweiterungen deaktiviert batch-Datei oder schon beim starten einen Befehl verarbeiten.HKCU\Software\Microsoft\Command Processor\EnableExtensions
sollte den Wert 1 in der Windows-registry.Meine batch-Datei enthält ein pushd-Befehl und ein Befehl pause. Überprüfen der Registrierung, Befehl Erweiterungen sind bereits aktiviert.
Funktioniert die batch-Datei enthalten
setlocal DisableExtensions
irgendwo über der PUSHD - Befehl? Es wäre wirklich hilfreich, um zu sehen Sie den code der batch-Datei. Ich bin Schießen in den Himmel zu versuchen, um Ihnen zu helfen, weil Sie nicht mit den erforderlichen details, um wirklich die Ursache zu suchen für das Problem.Meine bat-Datei: pushd "\\RAND-EDIDEV01\DataMasons\vpEDI\data_1\Inbound\GF\" pause-ich habe nur führen Sie es erneut aus einem CMD-Fenster und dieses mal klappte es ohne Fehler! Doppelklick auf die bat-Datei noch Fehler mit "UNC-Pfade werden nicht unterstützt". Ich fürchte, ich habe keine Erklärung warum es jetzt funktioniert. Doppel-Klick auf die Verknüpfung mit "ausführen in" auch nicht. Ich bearbeitet die Verknüpfung ersetzen \\RAND-EDIDEV01\DataMasons\vpEDI\EDI\Scripts\test_nc.Fledermaus mit E:\DataMasons\vpEDI\EDI\Scripts\test_nc.bat und es funktioniert jetzt. Ich denke, die Verknüpfung muss einen vollständigen Pfad und nicht auf einen UNC ein.
InformationsquelleAutor Mofi
Ich habe einige Ratschläge - Sie sollten umschreiben Sie Ihr Skript in der PowerShell. PowerShell erlaubt das aktuelle Arbeitsverzeichnis auf ein Netzwerk. PowerShell als ganze ist flexibler und mächtiger als die CMD ist. Es ist auch cross-Plattform. Die Umstellung.
InformationsquelleAutor Arsalan Kazmi