Windows 文件资源管理器explorer.exe
starts cmd.exe
隐式使用该选项/C
完成批处理文件执行后关闭命令进程,并在双击批处理文件时将批处理文件目录设置为当前目录。
如果双击的批处理文件位于网络共享上并且使用 UNC 路径,而不是将网络共享映射到驱动器号并使用网络驱动器,cmd.exe
通知用户不支持 UNC 路径作为当前目录并设置%SystemRoot%
(Windows 目录)作为当前目录。
如果批处理文件设计为从任何目录执行,则可以忽略该警告,这意味着它不要求批处理文件的目录是当前目录。良好编码的批处理文件,尤其是由 Windows 任务计划程序执行的批处理文件,可以在任何目录为当前目录的情况下执行。
也可以看看:如何禁用命令会话的通用命名约定 (UNC) 检查? https://www.itprotoday.com/compute-engines/how-can-i-disable-universal-naming-convention-unc-check-command-sessions
可以使用 Windows 命令处理器的注册表值进行配置cmd.exe
通过在命令提示符窗口中运行来接受当前目录的 UNC 路径:
%SystemRoot%\System32\reg.exe ADD "HKEY_CURRENT_USER\Software\Microsoft\Command Processor" /v DisableUNCCheck /t REG_DWORD /d 1 /f
请注意,当您启用对以 UNC 路径作为当前目录运行批处理文件的支持时,某些控制台应用程序可能会因未针对该环境而设计而无法运行。
任务调度程序设置%SystemRoot%\System32
(Windows 系统目录)作为执行计划任务运行批处理文件的命令之前的当前目录,除非特定目录路径明确设置为start in计划任务属性中的目录。
在您的情况下,批处理文件设计为按计划任务执行,因此考虑了我在回答问题时列出的所有方面作为计划任务执行批处理文件时必须考虑什么? https://stackoverflow.com/a/41821620/3074564,您可以在双击使用 UNC 路径的批处理文件时忽略此警告消息。
当然,您也可以为批处理文件创建一个快捷方式文件(*.lnk),以便通过此快捷方式启动批处理文件:Start in在快捷方式文件的属性中设置为%SystemRoot%\System32
正如 Windows 任务计划程序默认执行的那样。