2016-08-25 3 views
0

次の年のバッチファイルに変数を設定しようとしています。 e。現在の年が2016の場合、変数を2017に設定します。コマンドプロンプトから実行すると動作しますが、バッチファイルでは動作しません。

私は今、私が使用して値を得ることができることを次のように私は結果をファイルにリダイレクトしようとした

SET /a sum=%date:~6%+1 

を:

SET /a sum=%date:~6%+1 >next_year.txt 

私は、コマンドプロンプトからこれを実行する場合は、それはうまく動作します。しかし、これが.batファイルにあり、コマンドプロンプトからファイルを実行すると、next_year.txtファイルが作成されますが、値はありません。

私はここに何か愚かな行方不明だと確信していますが、私は円で回っています。

答えて

0

これはset /Aの設計(そのため、あなたがそれを変更することはできません)は次のとおりです。コマンドプロンプト(cmd)文脈では

  • set /Aは、コンソールウィンドウに(最後の)結果を出力します。たとえば、set /A X=1+23の結果をコンソールにエコーし、set /A x=1+2, y=x-12をエコーし​​ます(途中で改行しません)。
  • これに対して、バッチファイルのコンテキストでは、set /Aコマンドは何も出力しません。

set /Aコマンドラインの結果を取得するには、前述の例の最初に言及、echo %X%のように、次の行に明示的にそれをエコーする必要があります。もちろん、ファイルにリダイレクトすることができます:

> "\path\to\file.txt" echo %X% 
+0

これは、素晴らしいです! 多くのありがとう:) –

関連する問題