アプリ版:「スタンプのみでお礼する」機能のリリースについて

\\test\配下には、毎月の実績ファイルが下記のように格納されています。
WinXPで、バッチファイルを使用して当月の実績ファイルをコピーしようとしています。

※月がmm表示とm表示で混在しています

●ディレクトリ
\\test\

●ファイル
2010年1月.xlsx
2010年2月.xlsx
・・・
2010年12月.xlsx

今回、mm表記の月名に対応して、下記のようなコマンドを書いてみました。
2010年12月分については想定通りコピーできました。

ただ、mm表記とm表記が混在する場合の書き方が分かりません。
ご教授願えますでしょうか。

※やり方として思いつくのは下記ですが、実装ができません。
 (1)下記でファイルが取得できない場合に、yyyy年m月ファイルを取得する、という判断を入れる
 (2)mm月の十の位が0だったら一の位のみ使ってyyyy年m月ファイルを取得する

---------+---------+---------+
●書いてみたコマンド

REM ファイル名にyyyy年mm月をセットしてファイル取得
copy \\test\毎月の実績(%yyyy%年%mm%月).xlsx

REM クライアントの本日日付をorgdateという引数にセット
REM 形式は"yyyy/mm/dd"
set orgdate=%date%

REM orgdateから年(yyyy)を抜き出してorgyearにセット
set orgyear=%yyyy/mm/dd:~0,4%

REM orgdateから月(mm)を抜き出してorgmonthにセット
set orgmonth=%yyyy/mm/dd:~5,2%

REM ファイル名にyyyy年mm月をセットしてファイル取得
copy \\test\毎月実績(%yyyy%年%mm%月).xlsx

A 回答 (1件)

環境変数の一部取り出しの方法をご存じなのに、あと何がわからないのでしょう?


全体でこんな感じですかね。

set orgdate=%date%
set orgyear=%orgdate:~0,4%
set orgmonth=%orgdate:~5,2%
if %orgmonth:~0,1% == 0 orgmonth=%orgmonth:~1,1%
copy \\test\毎月実績%orgyear%年%orgmonth%月.xlsx ~~
    • good
    • 0
この回答へのお礼

ありがとうございました。
ifの書き方、変数に再帰的に値を渡すことができるという点、非常に勉強になりました。
notnotさんの教えてくださった方法を参考に、下記のとおりとしました。

※元々乗っけていたものには、変数名に誤りがありました。

---------+---------+---------+

REM クライアントの本日日付をorgdateという引数にセット
REM 形式は"yyyy/mm/dd"
set orgdate=%date%

REM orgdateから年(yyyy)を抜き出してorgyearにセット
set orgyear=%orgdate:~0,4%

REM orgdateから月(mm)を抜き出してorgmonth_preにセット
set orgmonth=%orgdate:~5,2%

REM monthの十の位が0の場合、orgmonthは再帰的にorgmonthの一桁目のみをセット
if %orgmonth:~0,1%==0 set orgmonth=%orgmonth:~1,1%

REM ファイル名にyyyy年mm月をセットしてファイル取得
copy \\test\毎月実績%orgyear%年%orgmonth%月.xlsx

お礼日時:2010/12/04 14:36

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