2016-12-20 11 views
0

cmd.exe "D:a.bat"を実行しようとしていますが、何も取得していません。 バッチファイルをダブルクリックして実行すると動作します。コマンドラインでcmd.exeを使用して出力をファイルに保存できますか?

バッチファイル内のコードは次のとおりです。

echo teztttttt >> a.txt 

誰かがcmd.exeのは、予想される結果を生成されていない使用してコマンドを実行している理由を私は理解するのに役立ちます。

+3

どのようなエラーが発生しますか?また、 'D:a.bat'とは何ですか?あなたは 'D:\ a.bat'を意味しないのですか? –

+0

cmd.exeのパラメータとして.batファイルを実行する必要はありません。 – Compo

答えて

5

通常、バッチスクリプトを実行するためにcmd.exeを呼び出す必要はありません。あるバッチスクリプトが別のバッチスクリプトを呼び出す典型的な方法は、call "D:a.bat" >> a.txtを使用することです。

しかし、私はあなたがcmd.exeを介してあなたのスクリプトを実行する正当な理由があると仮定します。

コマンドプロンプトからドキュメント()を読み、コマンドに接頭辞/Cを付ける必要があることがわかります。

cmd.exe /c "D:a.bat" 

ないコードの問題、あなたは示されていますが、あなたは慎重に助けを読めば、あなたはCMD.EXEは引用符を処理する方法といくつかの面白いビジネスがあるでしょう。

スペースやポイズン文字のためにスクリプトを引用する必要があり、その後に引用符を含む引き数がある場合、cmd.exeは最初と最後の引用符を削除するため、必要なものを取得できません。例えば

cmd.exe /c "my script.bat" "this&that" 

を試みる(最も可能性の高い失敗)します

  • myは、最初のプログラム名、script.bat" "thisが第一である

    my script.bat" "this&that 
    

    を実行します引数

  • &コマンド連結演算子(それは引用またはエスケープされていない)
  • thatは問題がエスケープ引用符の余分なセットにコマンドライン全体を囲んで固定されている

第2のコマンドである。

cmd.exe /c ^""my script.bat" "this&that"^" 

最初に外側の引用符がエスケープされるため、&は適切に引用されます。 cmd.exeが外側の引用符を取り除くと、正しいコマンド文字列が残されます。

関連する問題