错误消息“系统找不到指定的路径”的原因是啥?

Posted

技术标签:

【中文标题】错误消息“系统找不到指定的路径”的原因是啥?【英文标题】:What is the reason for the error message "System cannot find the path specified"?错误消息“系统找不到指定的路径”的原因是什么? 【发布时间】:2016-02-11 19:40:41 【问题描述】:

我在文件夹 system32 中有文件夹 run。当我从 Total Commander 中运行 cmd 打开一个以 C:\Users\admin 作为当前目录的命令提示符窗口并想要进入该文件夹时,输出以下错误消息:

系统找不到指定的路径。

当我直接在文件夹run 中打开cmd 时,它运行良好。为什么?

C:\Windows\System32\run 中打开的命令提示符窗口:

C:\Windows\System32\run>cd..

C:\Windows\System32>cd run

C:\Windows\System32\run>

简单运行cmd的命令提示符窗口:

Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. Všetky práva vyhradené.

C:\Users\admin>cd..

C:\Users>cd..

C:\>cd windows

C:\Windows>cd system32

C:\Windows\System32>cd run
Systém nemôže nájst’ zadanú cestu.

【问题讨论】:

【参考方案1】:

以下内容对我有用:

    打开Registry Editor(按windows键,输入regedit并点击Enter)。 导航到HKEY_CURRENT_USER\Software\Microsoft\Command Processor\AutoRun 并清除值。 还要检查HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\AutoRun

【讨论】:

这让我免于痛苦:) 该死...这是很棒的观察...一百万谢谢!【参考方案2】:

在 Windows x64 上不仅有 1 个%SystemRoot%\System32。有 2 个这样的目录。

真正的%SystemRoot%\System32 目录是用于64 位应用程序的。此目录包含一个 64 位的cmd.exe

但也有用于 32 位应用程序的 %SystemRoot%\SysWOW64。如果 32 位应用程序访问 %SystemRoot%\System32,则使用此目录。它包含一个 32 位的cmd.exe

32 位应用程序可以通过在路径中使用别名 %SystemRoot%\Sysnative 访问 64 位应用程序的 %SystemRoot%\System32

有关更多详细信息,请参阅有关 File System Redirector 的 Microsoft 文档。

因此,子目录run 是在%SystemRoot%\System32 中为 64 位应用程序创建的,而 32 位 cmd 运行时该目录不存在,因为在 %SystemRoot%\SysWOW64 中没有子目录 run%SystemRoot%\System32 用于 32 位 cmd.exe 子目录 run 是在 %SystemRoot%\System32 中创建的 32 位应用程序和 64 位 cmd 运行此目录不存在是因为%SystemRoot%\System32 中没有子目录run,因为该子目录仅存在于%SystemRoot%\SysWOW64 中。

如果 64 位应用程序的子目录 run 位于 %SystemRoot%\System32 中,则可以在批处理文件的顶部使用以下代码:

@echo off
set "SystemPath=%SystemRoot%\System32"
if not "%ProgramFiles(x86)%" == "" if exist %SystemRoot%\Sysnative\* set "SystemPath=%SystemRoot%\Sysnative"

System32\run 目录中的每个控制台应用程序都必须在批处理文件中使用%SystemPath% 执行,例如%SystemPath%\run\YourApp.exe

它是如何工作的?

在 Windows x86 上没有环境变量 ProgramFiles(x86),因此实际上只有顶部定义的一个 %SystemRoot%\System32

但是在 Windows x64 上定义了环境变量 ProgramFiles(x86) 的值。因此,如果%SystemRoot%\Sysnative 中有文件,则会在 Windows x64 上额外检查。在这种情况下,批处理文件当前由 32 位 cmd.exe 处理,只有在这种情况下才需要使用 %SystemRoot%\Sysnative。否则,%SystemRoot%\System32 也可以在 Windows x64 上使用,因为当批处理文件由 64 位 cmd.exe 处理时,这是包含 64 位控制台应用程序的目录(以及子目录 run)。

注意:%SystemRoot%\Sysnative 不是目录! cd%SystemRoot%\Sysnative 或使用 if exist %SystemRoot%\Sysnativeif exist %SystemRoot%\Sysnative\ 是不可能的。它是一个仅存在于 32 位可执行文件的特殊别名,因此有必要使用 if exist %SystemRoot%\Sysnative\cmd.exe 或更通用的 if exist %SystemRoot%\Sysnative\* 检查使用此路径是否存在一个或多个文件。

【讨论】:

【参考方案3】:

你只需要:

第 1 步:输入 cd..(2 次)进入 C:\ 的主目录

第 2 步:现在出现 C:\>

第三步:输入dir Windows\System32\run

就是这样,它显示了目标文件夹内的完整文件和文件夹详细信息。

详情:我以Windows\System32\com文件夹为例,您应该输入自己的文件夹名称等Windows\System32\run

【讨论】:

以上是关于错误消息“系统找不到指定的路径”的原因是啥?的主要内容,如果未能解决你的问题,请参考以下文章

eclipse 打开Android SDK Manager 是报这个错误 [SDK Manager] 系统找不到指定的路径。 不知道啥原因

系统找不到指定的路径

pom.xml错误xxxx argetclassesMETA-INFMANIFEST.MF (系统找不到指定的路径。)

Flutter:系统找不到指定的路径

cordova运行android给出错误“系统找不到指定的路径。”

PySpark - 系统找不到指定的路径