如何在Windows 10上修复“系统找不到指定路径”错误?

11

我正在使用Windows 10。

每当我运行一个Python脚本、启动cygwin终端或bash脚本时,都会遇到错误消息The system cannot find the path specified

没有有意义的错误消息可以准确定位具体原因。我怀疑这是由于PATH变量中的一个路径名指向不存在的路径导致的。如何找出哪个路径名导致了这个错误?


当您使用终端/命令行时,您是否也收到该消息? - rioV8
@rioV8,我刚刚注意到当我使用终端时也会收到这个消息。请忽略我已删除的评论。那是错误的。 - user3848207
使用来自Sysinternals的procmon工具https://learn.microsoft.com/en-us/sysinternals/downloads/procmon,并过滤文件事件。 - Simon Mourier
3个回答

25

Powershell路径测试

这是一个一行的Powershell脚本,它将测试您的PATH环境变量中的所有路径是否存在。对于每个路径,它将报告OK或MISSING。如果有任何路径被列为缺失,您应该手动从环境变量中删除它们。

@($env:path -split ";").ForEach({ if($_) {$result = 'MISSING |';if(Test-Path -path $_) { $result = '     OK |'};-join($result, ' ', $_); }})

选项 2

从提升的 CMD 提示符中运行以下命令。这将确保所有 Windows 路径和可执行文件都可用,权限正确且不损坏。运行后,如果需要,它会给出进一步的说明。

sfc /scannow

关于sfc /scannow


选项3

打开注册表编辑器(regedit.exe)。检查以下路径是否存在无效或不需要的内容。 像往常一样,在进行更改之前备份注册表。

HKEY_CURRENT_USER\Software\Microsoft\Command Processor\AutoRun
HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\AutoRun

选项四

从Microsoft网站获取小型实用程序Process Monitor。Process Monitor是用于Windows的高级监视工具,可显示实时文件系统、注册表和进程/线程活动。使用此工具,您将找到有问题的路径。

  1. 下载、提取和运行
  2. 尽可能关闭所有打开的程序。
  3. 在Process Monitor中,文件下面有一个捕获事件的复选框,用于启用/禁用。一旦你打开它,停止捕获,然后选择编辑 -> 清除显示。
  4. 现在准备重现“系统找不到指定的路径”错误。
  5. 在触发错误之前,启用“捕获事件”。在出现错误时,立即在Process Monitor中禁用“捕获事件”。
  6. 使用“筛选器”菜单查找有问题的操作。查找结果为“名称未找到”或“路径未找到”的行。犯错者可能会有一个“事件类”=“文件系统”||“注册表”。也许还有另一个结果/事件类,但我建议从这里开始。

一些筛选器可以尝试缩小罪犯的范围:

  • "结果" -> NOT -> "成功"
  • "进程名称" -> IS -> "cmd.exe"(或其他shell)

找到你要查找的内容并解决问题后,您至少需要在重新测试之前关闭和重新打开提示符,但也可能需要执行重新启动。

如果可以卸载而不仅仅是删除有问题的记录,那么这样做可以解决错误。因为一个坏掉的/过时的文件系统路径可能只是问题的一半,还需要更新注册表记录。卸载程序应该同时解决两个问题。

如果需要更改注册表,请确保首先使用regedit.exe创建备份。


谢谢您的回答!我已经尝试了这两种方法。它们看起来很有希望,但问题仍然存在。SFC结果显示“Windows资源保护找到损坏的文件并成功修复了它们。” 目前这个问题还没有给我带来任何问题,但是每隔一段时间看到这个“无法找到指定路径”的错误弹出来还是很烦人。 第一种方法告诉我问题可能不是由于无效的PATH变量引起的。还有哪些可能导致这个“无法找到指定路径”的错误? - user3848207
2
请查看更新。选项3和4。我相信其中一个选项会解决这个问题。 - factorypolaris
在这四个选项中,有三个可以作为普通用户运行!只有第二个需要管理员权限。第三个对我有效,一个Anaconda卸载程序在HKEY_CURRENT_USER\Software\Microsoft\Command Processor\AutoRun中留下了一些垃圾。 - ElderDelp
谢谢,对我来说问题是由于“选项3”引起的,原因是旧版Anaconda的安装。当我在删除旧版后安装了新版时,可能注册表键没有被修复。 - wtfzambo

0
看,有一种简单的方法可以做到这一点,只需点击以下链接,在高级设置中找到您的路径变量。

https://docs.oracle.com/en/database/oracle/r-enterprise/1.5.1/oread/creating-and-modifying-environment-variables-on-windows.html#GUID-DD6F9982-60D5-48F6-8270-A27EC53807D0

现在很不可能有超过一把 PATH 变量,所以我建议检查每个这些 PATH 变量,无论哪个是有问题的,都将其删除

或者,只需添加一个新的 PATH 变量,其中包含指向您的 Python 库文件的路径


0
你还应该尝试改变命令的顺序。将-out属性放在命令的末尾。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接