1. ホーム
  2. cmd

[解決済み] CMDがカレントディレクトリとしてUNCパスをサポートしない

2022-03-11 06:51:03

質問

バッチスクリプトは正常に実行されているようですが、新しい作業を追加するためにスクリプトを編集しているところ、スクリプト内のpushdコマンドをダブルクリックして手動で実行すると、毎回上記のエラーメッセージが表示されます。これらのpushdコマンドは、dot年から存在するもので、スクリプトは問題なく実行されています。 バッチスクリプトを手動で実行した場合と、スケジューラーで起動した場合の違いはありますか? 手動で実行したときのエラーメッセージを無効にするにはどうしたらよいでしょうか(可能であれば)。

解決方法を教えてください。

Windowsのファイルエクスプローラー explorer.exe 開始 cmd.exe というオプションが暗黙のうちに使用されています。 /C バッチファイルの実行終了後、コマンドプロセスを終了させ、バッチファイルをダブルクリックすると、バッチファイルのディレクトリがカレントディレクトリに設定されるようにしました。

ダブルクリックしたバッチファイルがネットワーク共有上にあり、UNCパスを使用する場合、ネットワーク共有をドライブレターにマッピングしてネットワークドライブを使用する代わりに、UNCパスを使用するようにしました。 cmd.exe カレントディレクトリとしてのUNCパスがサポートされていないことをユーザーに通知し、そのために %SystemRoot% (Windowsディレクトリ)をカレントディレクトリとする。

この警告は、バッチファイルがどのディレクトリからでも実行できるように設計されている場合、つまり、バッチファイルのディレクトリがカレントディレクトリであることを必要としない場合は無視することができます。特に、Windowsタスクスケジューラで実行されるバッチファイルは、どのディレクトリをカレントディレクトリにしても実行できるようにコーディングされています。

こちらもご覧ください。 コマンドセッションのUNC(Universal Naming Convention)チェックを無効にするにはどうすればよいですか?

レジストリの値によって、Windows のコマンドプロセッサの cmd.exe は、コマンドプロンプトウィンドウで実行すると、カレントディレクトリにUNCパスを受け付けます。

%SystemRoot%\System32\reg.exe ADD "HKEY_CURRENT_USER\Software\Microsoft\Command Processor" /v DisableUNCCheck /t REG_DWORD /d 1 /f

UNCパスをカレントディレクトリとするバッチファイルの実行をサポートする場合、一部のコンソールアプリケーションはその環境向けに設計されていないため、実行に失敗する可能性があることに注意してください。

タスクスケジューラは %SystemRoot%\System32 (ただし、バッチファイルをスケジュール・タスクとして実行する際に、特定のディレクトリを で開始します。 ディレクトリを作成します。

あなたのケースでは、バッチファイルがスケジュールされたタスクとして実行されるように設計されており、したがって、質問の回答で私がリストアップしたすべての側面を考慮に入れています。 スケジュールされたタスクとしてバッチファイルを実行する際に考慮すべきことは何ですか? UNCパスでバッチファイルをダブルクリックすると、この警告メッセージが表示されますが、無視して構いません。

もちろん、バッチファイルのショートカットファイル(*.lnk)を作成し、このショートカットを使用してバッチファイルを起動することもできます。 で開始 を、ショートカットファイルのプロパティに設定します。 %SystemRoot%\System32 Windowsのタスクスケジューラがデフォルトで行っているように。