2016-06-23 21 views
7

私は、実行の最後のカップルまで、とても楽しく働いていたバッチファイルを持っています。次のように 問題のコードは次のとおりです。内部または外部コマンド、操作可能なプログラムまたはバッチファイルとして認識されません:「\プログラムC」"For"と "backback quotesを使用しない" usebackq

set uncommittedchanges=1 
for /f "tokens=* usebackq" %%a in (`"C:\Program Files\Git\cmd\git" -C "\my\git\repository" status`) do (
    if "%%a" == "nothing to commit, working directory clean" (
     set uncommittedchanges=0 
    ) 
) 

は私が取得していますエラーが

です。

最後に動作して以来、私はこれらの行に何も変更を加えていないと思います。

誰かが間違っている点を見つけたり、誤って変更した設定を使用してusebackqに影響を与える可能性がありますか?

+0

新しいcmdは管理者モードになっていますか? – Mekap

+0

はい、管理者としてcmd.exeを実行しました。 – BeanFrog

+2

8.3の短いエイリアスを使用すると、問題を回避することができます: '' C:\ PROGRA〜1 \ Git \ cmd \ git "-C" \ my \ git \ repository "status' –

答えて

3

これは、子のcmd.exeインスタンスを呼び出す際のバグです。
回避策を使用して、最初のトークンがエスケープされていないスペースを使用しないようにする必要があります。

最も簡単な方法は、プログラムトークンを2番目の場所に移動するときにCALLを使用することです。そこには問題なく動作します。

for /f "tokens=* usebackq" %%a in (`CALL "C:\Program Files\Git\cmd\git" -C "\my\git\repository" status`) do (

Windows start command not able to execute batch file