错误消息 "System cannot find the path specified" 的原因是什么?
What is the reason for the error message "System cannot find the path specified"?
我在文件夹 system32
中有文件夹 run
。当我从 Total Commander 中 运行 cmd
打开命令提示符 window 并将 C:\Users\admin
作为当前目录并想进入该文件夹时,输出以下错误消息:
System cannot find the path specified.
当我直接在文件夹 run
中打开 cmd
时,效果很好。为什么?
在 C:\Windows\System32\run
中打开时的命令提示符 window:
C:\Windows\System32\run>cd..
C:\Windows\System32>cd run
C:\Windows\System32\run>
命令提示符 window 只需 运行ning 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 步:通过键入 cd.. 进入 C:\ 主目录(2 次)
第 2 步:现在出现 C:\>
第 3 步:键入 dir Windows\System32\run
就是这样,它显示了目标文件夹中的完整文件和文件夹详细信息。
详细信息:我以Windows\System32\com
文件夹为例,您应该输入自己的文件夹名称等。Windows\System32\run
在 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
对于 32 位 cmd.exe
%SystemRoot%\System32
或 子目录 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
.
它是如何工作的?
ProgramFiles(x86) 在 Windows x86 上没有环境变量,因此实际上只有顶部定义的 %SystemRoot%\System32
。
但是定义了环境变量 ProgramFiles(x86),其值在 Windows x64 上。因此,如果 %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\*
.
检查使用此路径是否存在一个或多个文件
以下对我有用:
- 打开
Registry Editor
(按windows键,输入regedit
并点击Enter
)。
- 导航到
HKEY_CURRENT_USER\Software\Microsoft\Command Processor\AutoRun
并清除值。
- 同时勾选
HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\AutoRun
.
我在文件夹 system32
中有文件夹 run
。当我从 Total Commander 中 运行 cmd
打开命令提示符 window 并将 C:\Users\admin
作为当前目录并想进入该文件夹时,输出以下错误消息:
System cannot find the path specified.
当我直接在文件夹 run
中打开 cmd
时,效果很好。为什么?
在 C:\Windows\System32\run
中打开时的命令提示符 window:
C:\Windows\System32\run>cd..
C:\Windows\System32>cd run
C:\Windows\System32\run>
命令提示符 window 只需 运行ning 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 步:通过键入 cd.. 进入 C:\ 主目录(2 次)
第 2 步:现在出现 C:\>
第 3 步:键入 dir Windows\System32\run
就是这样,它显示了目标文件夹中的完整文件和文件夹详细信息。
详细信息:我以Windows\System32\com
文件夹为例,您应该输入自己的文件夹名称等。Windows\System32\run
在 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
对于 32 位 cmd.exe
%SystemRoot%\System32
或 子目录 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
.
它是如何工作的?
ProgramFiles(x86) 在 Windows x86 上没有环境变量,因此实际上只有顶部定义的 %SystemRoot%\System32
。
但是定义了环境变量 ProgramFiles(x86),其值在 Windows x64 上。因此,如果 %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\*
.
以下对我有用:
- 打开
Registry Editor
(按windows键,输入regedit
并点击Enter
)。 - 导航到
HKEY_CURRENT_USER\Software\Microsoft\Command Processor\AutoRun
并清除值。 - 同时勾选
HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\AutoRun
.