错误消息“系统找不到指定的路径”的原因是啥?
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%\Sysnative
或 if 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 (系统找不到指定的路径。)