正在处理一个调用另一个批处理文件的批处理文件。
K:\Market Risk>call "K:\Market Risk\activate.bat
The system cannot find the path specified.
因此,我在批处理文件的开头设置了路径,并确保该路径在其中:
SET PATH=%PATH%;K:\Market Risk\
K:\Market Risk>echo %PATH%
C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\WINDOWS\system32;C:\WINDOWS;
C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;
C:\WINDOWS\System32\OpenSSH\;C:\Program Files (x86)\Shoreline Communications\
ShoreWare Client\;C:\Program Files\dotnet\;C:\Program Files (x86)\Microsoft SQL Server
\150\DTS\Binn\;C:\Program Files (x86)\Common Files\Oracle\Java\javapath;
C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\
WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;C:\Program Files (x86)\
Shoreline Communications\ShoreWare Client\;C:\Program Files (x86)\Common Files\Oracle\
Java\javapath;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;
C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;
C:\Program Files (x86)\Shoreline Communications\ShoreWare Client\;
C:\Users\Kyle.Dixon\AppData\Local\Microsoft\WindowsApps;C:\Users\Kyle.Dixon\AppData\Local\
Programs\Git\cmd;C:\Users\Kyle.Dixon\AppData\Local\atom\bin;C:\Users\Kyle.Dixon\Documents\
R\R-3.5.2\bin\R.exe;C:\Users\Kyle.Dixon\Documents\R\R-3.5.2\bin;C:\Users\Kyle.Dixon\
AppData\Roaming\MarketView\MarketView ExcelTools\;K:\Market Risk\
但是,我仍然遇到相同的错误:
K:\Market Risk>call "K:\Market Risk\activate.bat"
The system cannot find the path specified.
以前有人遇到过这个问题吗?
答案 0 :(得分:0)
我建议阅读What is the reason for "X is not recognized as an internal or external command, operable program or batch file"?,这应该有助于理解Windows如何管理环境变量PATH
。遗憾的是,由于没有可用的命令来安全地添加/删除系统或用户 {{1} }。缺少由Microsoft编写的用于通过应用所有必要的错误检查来安全更新PATH
的命令或可执行文件的结果是,许多编码不好的脚本经常损坏系统和用户 PATH
存储在Windows注册表中,以尝试更新它们。
我的建议是以管理员身份打开Windows 控制面板-系统-高级系统设置-环境变量,并清除两个PATH
环境变量,即用户 { {1}}(上部窗格)和系统 Path
(下部窗格),如下所示:
Path
应该始终从以下默认Windows文件夹路径开始:
Path
以前无法正确使用这些文件夹路径启动,则过去曾对其进行过一次严重更新。 (最后一个文件夹路径仅从1809版开始在Windows 10上可用。)Path
存储在Windows注册表中,在编辑系统 Path
而不是C:\WINDOWS
时显示表示安装程序可执行文件或脚本没有很好地更新系统 Path
,因为扩展版本用引用环境变量%SystemRoot%
替换了原始文件夹路径。这对于这些文件夹路径并不重要,但是对其他文件夹路径可能有害。Path
环境变量之一中,文件夹路径不应存在一次以上。SystemRoot
和系统 Path
中的所有重复项。Path
环境变量包含三遍:
Path
中已经存在的文件夹路径不应在 user Path
中再次存在,当然在中也不再存在系统 Path
。Path
中列出的文件夹路径可以带有或没有反冲。我更喜欢Path
末尾没有反斜杠的文件夹路径,因为这以后在通过批处理脚本使用命令Path
来更新Path
时会减少麻烦。
Path
应该仅包含文件夹路径,而不能包含完整的限定文件名。reg
在Path
中完全是胡说八道。
在清理完两个C:\Users\Kyle.Dixon\Documents\R\R-3.5.2\bin\R.exe
环境变量之后,系统 Path
中的文件夹路径应类似于:
对于最后一条路径,最好保留Path
且不要使用Path
,除非有C:\Program Files
和%ProgramFiles%
我不知道我的Windows计算机上没有这样的目录。出于这个原因,请参阅Microsoft关于WOW64 Implementation Details的文章。
用户 C:\Program Files\dotnet
最终应类似于:
关于在其中执行两个批处理文件的环境的文章很少。所以下面写的大多数都是纯推测性的。
我假设驱动器C:\Program Files (x86)\dotnet
不是本地硬盘上的驱动器,而是网络驱动器。因此,由于网络资源未映射到驱动器号Path
或存在网络连接问题或网络资源许可问题,因此映射到驱动器K:
的网络资源当前不可用。>
Windows仅在用户登录时才将网络资源重新映射到驱动器号,因为网络驱动器映射是Windows在Windows注册表中存储的与用户帐户相关的映射。因此,如果批处理文件是使用其他帐户按计划任务执行的,或者还针对未登录的用户执行,则驱动器K:
确实不存在。必须将执行批处理文件的计划任务配置为使用具有必要权限的帐户,以访问批处理文件访问的所有网络资源和本地目录/文件。此外,还必须使用其UNC路径访问网络资源上的文件和文件夹,而不是使用在这种环境下执行批处理文件时不存在的网络驱动器的驱动器号K:
。
另请参阅:What must be taken into account on executing a batch file as scheduled task?
但是也可能是错误消息
系统找不到指定的路径。
K:
在处理包含命令行的批处理文件时未输出
K:
但在处理批处理文件cmd.exe
时执行的命令行上。
因此,我建议从顶部的两个批处理文件call "K:\Market Risk\activate.bat"
中删除或将其更改为K:\Market Risk\activate.bat
,然后在命令提示符窗口中运行主批处理文件,请参见debugging a batch file。然后应该100%清除哪个批处理文件中的哪个命令行负责此错误消息。