重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

こんにちは、お世話になります。

コマンドプロンプトを用いてファイルの制御を行おうと考えているのですが、
日付に特定の数値を減算した結果を制御するファイル名として扱いたいのですが、
日付に対して演算がうまく動きませんでした。


set FNAME=%date:~0,4%%date:~5,2%%date:~6,1%

これで「20120221」を出力し、この日付数値に対して

set /A SUM=FNAME+1
「SUM=20120221+1=20120222」という感じで計算させたいのですが、
どのようにすれば計算ができるでしょうか?


最終的には、
(1)日付を出力します。
(2)(1)で出した日付に数値を加えます。
(3)(2)で計算した数値をファイル名として使用してファイルのリネームやコピーを行います。


初歩的な質問で大変申し訳ないのですが、ご教授のほどよろしくお願いします。

A 回答 (3件)

No2です。


>set FNAME=%date:~0,4%%date:~5,2%%date:~6,1% > c:\sample.log
>set /A SUM=FNAME+1 >> c:\sample.log

>と入力すると普通に日付+1と計算されるのですが、
>batファイルに記載してコマンドプロンプトに読ませると何故か何も計算されませんでした。
>(ログが空っぽ)

計算はされてますよ。表示してないのでログに書かれないだけ。

set FNAME=%date:~0,4%%date:~5,2%%date:~6,1%
set /A SUM=FNAME+1
echo %SUM% > c:\sample.log

をバッチファイルで実行してみてください。set /a がコマンド直うちで結果を表示するのは例外的な機能です。

>最終的なイメージとしては一定期間より以前のログファイルを移動したりするのに使用する予定です。

よくあるのは、「最近の5世代だけ残して古いのを消す・移動させる」とかですね。
ここでも過去に何度となく質問されてるので検索してみてください。
    • good
    • 0

お書きの通り、


set /A SUM=FNAME+1
で計算できますけど??

うまく動かないとは?うまくいかないとすると計算以外の部分がおかしいです。
何をしてどうなったんですか?具体的に書いてください。

「月末を考慮して日付として翌日になって欲しい」とかでは無いのですよね?
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。

すいません、説明不足でした。

コマンドプロンプトを立ち上げて直接

set FNAME=%date:~0,4%%date:~5,2%%date:~6,1% > c:\sample.log
set /A SUM=FNAME+1 >> c:\sample.log

と入力すると普通に日付+1と計算されるのですが、
batファイルに記載してコマンドプロンプトに読ませると何故か何も計算されませんでした。
(ログが空っぽ)

>「月末を考慮して日付として翌日になって欲しい」とかでは無いのですよね?
最終的なイメージとしては一定期間より以前のログファイルを移動したりするのに使用する予定です。

月末が重なる場合は、
20120301から二日前(20120228)のデータを移動するなどを行う予定です。

お礼日時:2012/02/23 10:16

>set FNAME=%date:~0,4%%date:~5,2%%date:~6,1%


なんか一桁ずれてるような。
+1するだけですと、月末にバグりそうな。

WSHやPowershellを使ったほうが幸せになれると思います。

参考URL:http://www.atmarkit.co.jp/fwin2k/win2ktips/419ba …
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。

>set FNAME=%date:~0,4%%date:~5,2%%date:~6,1%
>なんか一桁ずれてるような。
一応実行結果が「20120222」と出力されるのですが何か変でしょうか

>WSHやPowershellを使ったほうが幸せになれると思います。
確かに別のものを使用したほうがいいのですが、
現環境ではコマンドプロンプトを使わないと駄目という縛りがあるのです・・・。

お礼日時:2012/02/23 10:19

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!