2016-03-29 4 views
0

免責事項:GoogleとSOの助けを借りて自分の道を掘り起こすバッチファイルの専門家ではありません。また、このバッチファイルをSourceTreeのカスタムアクションとして実行しようとしていることにも注意してください。シンプルセットがバッチファイルで動作しない

次の単純なSETコマンドは、変数に値を代入していないよう:

SET MYVAR = %1 
ECHO "%MYVAR%" 
ECHO "!MYVAR!" 
ECHO %1 

戻り""上記第ECHO。 2つ目は"!MYVAR!"ですが、最後のコマンドラインはコマンドラインパラメータの実際の値を返します。 MVARに値を割り当てるにはどうすればよいですか?

答えて

0

setは、=の両側のスペースに敏感です。変数を設定していますmyvar[Space}

+0

これは正しいとは信じられません。これは私の知識の中で最初の言葉ですが(私はそれらのほんの一握りしか知りませんが)ありがとう、トン。 :) – dotNET

+0

@ドットネット:ほとんどのUNIXシェル(Bashを含む)は同じです。これは、すべてのプロセス 'VAR = VALUE'にある環境ブロックと一貫しています。その形式は 'setenv'や' getenv'などから来ています。 – cdarke

+0

これはスクリプトであり、コンピュータ言語ではありません。それは大きな違いの1つです。不要な空白を取り除くためのプリコンパイラはありません。あなたは厄介なPythonが空白についてどのようにしているか見たことがありますか?コンパイルされた言語でもないからです。バッチファイルは実際には一度に1行ずつ実行されます。 '一時停止'を追加し、一時停止している間にその行の下に新しいコマンドを追加して(スクリプトファイルを保存します)、一時停止から再開すると、新しく追加されたコマンドが実行されます。どんな 'set/p'入力プロンプトでもプログラムを引き継ぐことができます。しかし、Bashは、.batファイルのような冗談ではないからです。 – LinuxDisciple

関連する問題