CMD不支持UNC路径作为当前目录

时间:2017-07-13 04:45:35

标签: cmd path unc

我们有批处理脚本似乎运行正常但是我正在编辑其中一个以包含一些新工作和手动运行脚本(通过双击从Windows资源管理器)我每次pushd命令时都会收到上述错误消息在脚本中遇到。这些是自年份点以来脚本运行良好的推送命令。 手动运行的批处理脚本与调度程序启动的批处理脚本之间是否存在差异? 如何手动运行时禁用错误消息(如果可能)?

2 个答案:

答案 0 :(得分:1)

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

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

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

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

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

请注意,当您启用对使用UNC路径作为当前目录运行批处理文件的支持时,某些控制台应用程序可能会因为不是为该环境设计而无法运行。

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

当然,您还可以为批处理文件创建快捷方式文件(* .lnk),以便通过此快捷方式启动批处理文件,快捷方式文件属性中的开始设置为{{1默认情况下,Windows任务调度程序。

答案 1 :(得分:0)

我有一些建议-考虑在PowerShell中重写脚本。 PowerShell允许当前工作目录位于网络上。整体而言,PowerShell比CMD更通用,更强大。它也是跨平台的。考虑切换。