バッチファイルをダブルクリックすると、Windowsコマンドインタープリタcmd.exe
が暗黙的にオプション/C
を使用して実行され、コンソールウィンドウが自動的に閉じられ、構文エラーが原因で実行または終了後にバッチ処理が終了するとコマンドプロセスが終了します。この動作は、期待どおりに動作しないバッチファイルのデバッグには適していません。バッチファイルをデバッグする方がコマンドプロンプトウィンドウが開いているので、暗黙的にオプション/K
を使用してコンソールウィンドウを開いたままにし、バッチファイル(/B
を含まない)を実行した後にコマンド処理を続行させると、cmd.exe
バッチファイルの実行中に出力されるすべてのエラーメッセージを表示します。
バッチファイルをダブルクリックすると、通常、バッチファイルのディレクトリにバッチファイルが実行されます。そのため、現在のディレクトリはバッチファイルのディレクトリです。
しかし
バッチファイルは
UNC path、Windowsコマンドインタープリタ出力
通常カレントディレクトリがバッチファイルから最初のコマンドラインを実行する前に
%SystemRoot%
に設定されているメッセージを表示して、Windowsエクスプローラで開いたネットワーク共有に格納されている場合。この動作は、特別なWindowsレジストリ値を使用してオフにすることができます。
、バッチファイルは、それを右クリックして実行し、管理者としてコンテキストメニューオプション実行]を使用している場合、Windowsのコマンド処理は次のようにWindowsのシステムディレクトリでバッチファイルを実行し、その結果、現在のディレクトリとして%SystemRoot%\System32
で開始されますカレントディレクトリ。
したがって、現在のディレクトリとは独立して動作するように、このバッチファイルを作成することをお勧めします。 2つのビットマップファイルをバッチファイルと同じディレクトリにコピーし、%~dp0
を使用して、バッチファイルの実行時の現在のディレクトリとは独立したバッチファイルのディレクトリを参照することをお勧めします。 %~dp0
は、バッチファイルの名前である引数0のドライブとパスを参照します。バッチファイルの引数の参照の詳細については、コマンドプロンプトウィンドウでcall /?
を実行してください。
コマンドXCOPYは自動的に対象の文字列がターゲットフォルダ名ではなくファイル名であることをxcopy
ことが明確になってバックスラッシュで終わる場合1つの以上のファイルをコピーするに全体フォルダツリーを作成します。
ので、使用するコマンドは次のとおりです。
%SystemRoot%\System32\xcopy.exe "%~dp0qwerty.bmp" "%SystemRoot%\System32\hello\" /Q /Y >nul
%SystemRoot%\System32\xcopy.exe "%~dp0qwerty2.bmp" "%SystemRoot%\System32\wlppr\" /Q /Y >nul
%~dp0
で参照バッチファイルのフォルダパスは、常にバックスラッシュで終わります。したがって、両方のソースファイル名文字列にバックスラッシュを追加する必要はありません。
このコマンドのヘルプについては、コマンドプロンプトウィンドウxcopy /?
で実行してください。
実際に発行されたコマンドを表示するには 'echo on'を有効にできますか? –
スクリプトを実行**保護されたsystem32ディレクトリへの書き込みアクセス権を持つために管理者**として。私はあなたが管理者の特権に言及したと知っていますが、とにかく私たちをユーモアします – Compo
システムディレクトリに書き込むので、スクリプトをadminとして実行する必要があります。しかし、これを行うと作業ディレクトリはsystem32になり、ファイルを見つけることができなくなります。 – Squashman