1. ホーム
  2. cmd

[解決済み] System cannot find the path specified "というエラーメッセージが表示される原因は何ですか?

2022-03-06 12:23:15

質問

フォルダがあります run フォルダ内 system32 . を実行すると cmd でコマンドプロンプトウィンドウを開き、Total Commanderから C:\Users\admin をカレントディレクトリにして、そのフォルダに入ろうとすると、次のようなエラーメッセージが出力されます。

<ブロッククオート

指定されたパスがシステムで見つかりません。

を開くと cmd フォルダに直接 run であれば、完璧に動作します。なぜですか?

でコマンドプロンプトのウィンドウを開くと 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つだけでなく %SystemRoot%\System32 をWindows x64で使用した場合。があります。 2 このようなディレクトリがあります。

本当の %SystemRoot%\System32 ディレクトリは、64ビットアプリケーション用です。このディレクトリには、64 ビットの  cmd.exe .

しかし、そこには %SystemRoot%\SysWOW64 は、32ビットアプリケーション用です。このディレクトリは、32ビット・アプリケーションが %SystemRoot%\System32 . これには、32ビット cmd.exe .

32ビットアプリケーションは %SystemRoot%\System32 というエイリアスを使用することで、64ビットアプリケーションの %SystemRoot%\Sysnative をパスで指定します。

詳細については、マイクロソフトのドキュメントを参照してください。 ファイルシステムリダイレクト .

そこで、サブディレクトリ run のどちらかに作成されました。 %SystemRoot%\System32 は64ビットアプリケーション、32ビット cmd が実行された場合、サブディレクトリが存在しないため、このディレクトリは存在しない。 run%SystemRoot%\SysWOW64 というのは %SystemRoot%\System32 32ビット用 cmd.exe または サブディレクトリ run に作成されました。 %SystemRoot%\System32 は32ビットアプリケーション用、64ビット cmd が実行された場合、サブディレクトリが存在しないため、このディレクトリは存在しない。 run%SystemRoot%\System32 にしか存在しないので、このサブディレクトリは %SystemRoot%\SysWOW64 .

サブディレクトリがある場合、バッチファイルの先頭で次のコードを使用することができます。 run%SystemRoot%\System32 64ビットアプリケーション用

@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 .

どのように機能するのか?

環境変数がない プログラムファイル(x86) Windows x86 の場合は、1 つだけです。 %SystemRoot%\System32 のように定義されています。

しかし、そこには環境変数 プログラムファイル(x86) をWindows x64の値で指定します。そのため、Windows x64では、追加で %SystemRoot%\Sysnative . この場合、バッチファイルは現在32ビットの cmd.exe であり、この場合のみ %SystemRoot%\Sysnative を使用する必要があります。そうでなければ %SystemRoot%\System32 は、Windows x64でも使用可能で、バッチファイルを64bitの cmd.exe の場合、これは64ビットのコンソールアプリケーションを含むディレクトリ(およびサブディレクトリの run ).

%SystemRoot%\Sysnative はディレクトリではありません! これは cd から %SystemRoot%\Sysnative を使用するか if exist %SystemRoot%\Sysnative または if exist %SystemRoot%\Sysnative\ . これは32ビット実行ファイルにのみ存在する特別なエイリアスなので、このパスを使用する際には、1つまたは複数のファイルが存在するかどうかを if exist %SystemRoot%\Sysnative\cmd.exe または、より一般的な if exist %SystemRoot%\Sysnative\* .