2017-07-13 626 views
1

我们有批处理脚本似乎运行良好,但是我正在编辑其中一个包含一些新工作以及手动运行脚本时(通过双击从Windows资源管理器)我得到每次遇到脚本中的pushd命令时,都会出现上述错误消息。这些都是推出的命令,自那年以来一直存在,脚本运行良好。 手动运行和调度程序启动的批处理脚本之间有区别吗? 如何在手动运行时禁用错误消息(如果可以的话)?CMD不支持将UNC路径作为当前目录

回答

0

在双击批处理文件cmd.exe时,隐式使用选项/C启动,在完成批处理文件执行并将批处理文件的目录设置为当前目录后关闭命令进程。

如果双击的批处理文件位于网络共享上,并且使用UNC路径而不是将网络共享映射到驱动器号并使用网络驱动器,则cmd.exe通知用户UNC路径为当前目录不受支持,并且将当前目录设置为%SystemRoot%(Windows目录)。

如果批处理文件设计用于从任何目录执行,这意味着它不要求批处理文件的目录是当前目录,则可以忽略该警告。良好的编码批处理文件,尤其是那些由Windows任务调度器执行的文件,可以使用任何目录作为当前目录执行。

在作为计划任务运行批处理文件时,任务计划程序在执行命令之前将%SystemRoot%\System32(Windows系统目录)设置为当前目录,但特定目录路径显式设置为计划任务属性中的目录中的开始目录。

又见How can I disable the Universal Naming Convention (UNC) check for command sessions?

请注意,当您启用运行与UNC路径作为当前目录下的批处理文件的支持,一些控制台应用程序可能会失败,因为没有被设计用于环境的运行。

对于批处理文件设计为按计划任务执行并因此考虑到我在Executing BAT files in scheduled task的回答中列出的所有方面,可以使用UNC路径双击批处理文件来忽略此警告消息。

当然,你也可以创建批处理文件的快捷方式文件(* .LNK)在快捷方式文件的属性开始通过这个快捷方式与启动批处理文件为Windows任务调度程序将被设置为%SystemRoot%\System32默认。

+0

非常感谢您的帮助。我试图创建一个启动快捷方式设置为%SystemRoot%\ System32,但我仍然得到UNC消息。 – Nelson

+0

命令__CD__不能与UNC路径一起使用。所以如果你的批处理文件包含'cd“\\ Server \ Share \ folder1 \ folder2”'它不起作用。默认情况下,需要使用命令__PUSHD__,并启用命令扩展。否则__PUSHD__不支持将UNC路径临时映射到下一个空闲盘符。有关详细信息,请在命令提示符窗口'pushd /?'中运行。这可能是因为您在批处理文件中禁用了命令扩展,或者已经启动命令进程。 HKCU \ Software \ Microsoft \ Command Processor \ EnableExtensions'应在Windows注册表中具有值1。 – Mofi

+0

我的批处理文件包含一个pushd命令和一个暂停命令。 检查注册表,命令扩展已经启用。 – Nelson

相关问题