web-dev-qa-db-ja.com

バッチファイルは、昇格されたときにスペースを含むパスを渡すことはできません

パスを渡す必要があり、昇格が必要な操作が含まれるバッチファイルを作成しようとしています(mklinkを使用しています)。

問題を再現する方法は次のとおりです。

  1. pauseだけを含む.batファイルを作成します
  2. そのバッチファイルへのショートカットを作成します。
  3. 2つのフォルダを作成します。C:\ThisWillWorkおよびC:\This Will Fail
  4. 各フォルダをショートカットにドラッグしてみてください。両方とも機能するはずです。
  5. ショートカット設定を変更し、管理者権限が必要であることを詳細オプションオプションで確認します。
  6. 各フォルダをもう一度ドラッグしてみてください、C:\ThisWillWorkは同じように動作しますが、C:\This Will Failはコマンドプロンプトを点滅させ、すぐに閉じます。

これは、Windows 764ビットで実行されています。

目標を達成するために何ができますか?昇格せずにmklinkを使用できるようにする方法はありますか? Windowsバッチファイルの使用から別のもの(PowerShellなど)に切り替える必要がありますか?フォルダーを削除して、ドロップしたフォルダーへのディレクトリシンボリックリンクとして再作成するスクリプトを作成するには、他に何を使用できますか?

2

次のようにショートカットを作成してみてください

%Windir%\System32\cmd.exe /C C:\BIN\batchfile.bat 

それでも問題が解決しない場合は、次のことを試してください。

この問題を解決するには、[コマンドプロンプトのプロパティ]ダイアログボックスまたは[メモ帳のプロパティ]ダイアログボックスで[開始]の値を変更します。

これを行うには、次の手順に従います。
[スタート]ボタンをクリックし、[すべてのプログラム]をポイントして、[アクセサリ]をポイントします。
コマンドプロンプトまたはメモ帳を右クリックし、[プロパティ]をクリックします。
[開始]ボックスで、値を%HOMEDRIVE %% HOMEPATH%から%WINDIR%などのシステム全体の値に変更します。
[OK]をクリックします。

詳細については、 http://support.Microsoft.com/kb/832434 を参照してください。

元の方法で何が起こっているかをもっと確認したい場合は、管理者としてコマンドプロンプトを開き、次のように入力します。

%windir%\System32\cmd.exe /C "C:\bin\batchfile.bat" "C:\THIS WILL FAIL" 

これにより、一部のコマンドライン解析が失敗するため、バッチファイルをロードせずにエラーが発生します。

3
sgmoore