2017-07-13 22 views
1

バッチスクリプトはうまく動作しているようですが、新しい作業を追加するように編集しています。手動で(Windowsエクスプローラをダブルクリックして)スクリプトを実行すると、上記のエラーメッセージは、スクリプト内のpushdコマンドが検出されるたびに発生します。これらは、今年のドットとスクリプトが正常に動作して以来、そこにあったpushdコマンドです。 手動で実行しているバッチスクリプトとスケジューラで起動したバッチスクリプトの違いはありますか? 手動で実行しているときにエラーメッセージを無効にするにはどうすればいいですか?CMDは現在のディレクトリとしてUNCパスをサポートしていません

答えて

0

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

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

バッチファイルが任意のディレクトリから実行されるように設計されている場合、警告は無視できます。つまり、バッチファイルのディレクトリが現在のディレクトリである必要はありません。適切にコード化されたバッチファイル、特にWindowsのタスクスケジューラによって実行されているバッチファイルは、現在のディレクトリである任意のディレクトリで実行できます。

スケジュールタスクとしてバッチファイルを実行すると、タスクスケジューラはコマンドを実行する前に、現在のディレクトリとして%SystemRoot%\System32(Windowsシステムディレクトリ)を設定します。

も参照してくださいHow can I disable the Universal Naming Convention (UNC) check for command sessions?

あなたは、現在のディレクトリとしてUNCパスでバッチファイルを実行するためのサポートを有効にすると、いくつかのコンソールアプリケーションがあるため、その環境のために設計されていないと動作して失敗する可能性がありますのでご注意ください。

スケジュールされたタスクとして実行するように設計されたバッチファイルを使用している場合は、Executing BAT files in scheduled taskの回答に記載されているすべての面を考慮して、UNCパスを使用してバッチファイルをダブルクリックすると無視できます。 Windowsのタスクスケジューラがでないよう、あなたもショートカットファイルのプロパティでにスタートでこのショートカットを経由してバッチファイルを起動するためのバッチファイルのショートカットファイル(* .LNK)を作成することができますもちろん

%SystemRoot%\System32に設定されていますデフォルト。

+0

ありがとうございました。私は、%SystemRoot%\ System32に設定されたstartでショートカットを作成しようとしましたが、まだUNCメッセージが表示されます。 – Nelson

+0

コマンド__CD__は、UNCパスでは使用できません。したがって、バッチファイルに 'cd" \\ Server \ Share \ folder1 \ folder2 "が含まれていても動作しません。コマンド拡張子をデフォルトで有効にしてコマンド__PUSHD__を使用する必要があります。それ以外の場合は、__PUSHD__は一時的にUNCパスを次の空きドライブ文字にマッピングすることをサポートしていません。詳細については、コマンドプロンプトウィンドウ 'pushd /? 'で実行してください。バッチファイルでコマンド拡張を無効にしているか、コマンドプロセスを開始している可能性があります。 'HKCU \ Software \ Microsoft \ Command Processor \ EnableExtensions'は、Windowsレジストリに値1を持つ必要があります。 – Mofi

+0

私のバッチファイルには、pushdコマンドとpauseコマンドが含まれています。 レジストリをチェックすると、コマンド拡張が有効になっています。 – Nelson

関連する問題