
batファイルで以下のような処理をしたいのですが上手くいきません。
どなたかご存知でしたらご教授いただきたく・・・
---------------------------------------------------------------------
(1)フラグファイル名によってフォルダを自動生成する
例)
(1)*_25.txtというファイルがあったら、当月25日のフォルダを作成する
→c:\temp\20110425
(2) *_31.txtと言うファイルがあったら、前月末日のフォルダを作成する
→c:\temp\20110331
(2)上記(1)で作成したフォルダの下にファイルの接頭子によってサブディレクトリを作成する
例)
01_*.txtというファイルがあったら
→c:\temp\20110331\01 と作成したい
※上記をsetコマンドを用いて作成してみたのですが、
(1)-(2)の場合にどうしても上手く動きません。
以下、作成してみた駄文:
set zyy=%date:~0,4%
set zmm=%date:~5,2%
rem set zmm=01
set zdd=%date:~8,2%
rem Dフォルダにあるフラグファイルでフォルダを作成
if exist d:\temp\test01\*_05.txt set zfld=%zyy%%zmm%05
if exist d:\temp\test01\*_10.txt set zfld=%zyy%%zmm%10
if exist d:\temp\test01\*_15.txt set zfld=%zyy%%zmm%15
if exist d:\temp\test01\*_20.txt set zfld=%zyy%%zmm%20
if exist d:\temp\test01\*_25.txt set zfld=%zyy%%zmm%25
if exist d:\temp\test01\*_31.txt set/a zmm2=%zmm%-1
if exist d:\temp\test01\*_31.txt ( if %zmm2% equ 0 set zyy2=%zyy% )
if exist d:\temp\test01\*_31.txt ( if %zmm2% equ 0 set/a zyy2=%zyy2%-1 )
if exist d:\temp\test01\*_31.txt ( if %zmm2% equ 0 set zfld=%zyy2%1231 )
if exist d:\temp\test01\*_31.txt ( if %zmm2% equ 1 set zfld=%zyy%0131 )
上記のような感じで、12ヶ月分記述(閏年対応はしない)
その後、以下の構文を発行するとエラーとなってしまいます。
remファイル接頭子によって、サブディレクトリ作成
if exist d:\temp\test01\01*.txt md d:\temp\test01\%zfld%\01
※ここで『サブディレクトリまたはファイル\01は既に存在します』とエラーになります。
(恐らく、set/aを使っているがため?)
大変お手数ですが、誰かお助け下さい。
以上よろしくお願い致します
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
> ( if %zmm2% equ 0 set zfld=%zyy2%1231 )
> ( if %zmm2% equ 1 set zfld=%zyy%0131 )
変数 zfld に「…1231【空白】」「…0131【空白】」という文字列が代入されるからではないですか。閉じカッコの前の空白を除去して試してみてください。
回答ありがとうございます。
なんとか(1)-(2)は突破しました。
ただ『20110331』と言うフォルダまでは作成されるのですが、
その下にサブディレクトリが作成できませんでした。
で、あれこれ試した結果、
『20110331』というような日付のディレクトリまでは作成できるので、
まずCDをかまして日付フォルダに移動してから、
サブディレクトリ作成を試みたところ上手く(2)まで動くようになりました。
大変ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
xcopyで特定のファイルのみをコ...
-
.htaccess で読み込む .htpassw...
-
FTPのバッチファイルで日付を引...
-
バッチファイル 現在のフォルダ...
-
バッチファイル 指定行の切り出し
-
コマンドプロンプトで相対パス...
-
NULLの置き換えについて
-
リダイレクト >> を複数のファ...
-
echoの出力の最後のスペースを...
-
ダウンロードするとメモ帳に表...
-
ファイル名ソートにハイフン
-
【VBA】テキストファイルから特...
-
バッチファイルで改行の出力
-
linuxのjoinコマンドがうまくい...
-
echo "abc" >> test.txt で、先...
-
cmakeの使い方がわからずハマっ...
-
コマンドプロンプトで標準エラ...
-
シェルスクリプトで複数ファイ...
-
bashで、gotoのようなラベルに...
-
バッチファイルで特定の文字列...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
xcopyで特定のファイルのみをコ...
-
echoの出力の最後のスペースを...
-
コマンドプロンプトで相対パス...
-
echo "abc" >> test.txt で、先...
-
【VBA】テキストファイルから特...
-
リダイレクト >> を複数のファ...
-
コマンドにてテキストファイル...
-
コマンドプロンプトで標準エラ...
-
コマンド実行結果を環境変数に...
-
バッチファイル 現在のフォルダ...
-
バッチファイル 指定行の切り出し
-
bashで、gotoのようなラベルに...
-
NULLの置き換えについて
-
UNIX ファイル存在チェックの方法
-
ワードのテキストボックスの中...
-
.txtって、縦書きにはならない...
-
複数テキストファイル連結につ...
-
バッチコマンドの「set」で入力...
-
ダウンロードするとメモ帳に表...
-
バッチファイルのfor文を使って...
おすすめ情報