平日出力されるログを月次処理で圧縮したい
\\server\log\20100101\%computername%.log
~~~~~~~~~~~~~~~~~~~~~~~
\\server\log\20100131\%computername%.log
\\server\log\20100201\%computername%.log
~~~~~~~~~~~~~~~~~~~~~~~
\\server\log\20100228\%computername%.log
上記のようなイメージで、ログが日々たまっていきます。
(土日の日付は出力されない)
このログをBATを登録しタスクマネージャを使って
毎月ZIPに圧縮し、元ファイル+フォルダは削除したいと
考えています。
どなたか参考になるURLご教授いただけないでしょうか?
宜しくお願いします。
下記はこちらで調べたURLですが、スクリプトだったのであきらめました。
http://sawano.members.icraft.jp/wp/2008/08/30/59 …
No.1
- 回答日時:
ここからVBScriptをダウンロードし、その中のMakeZIP.VBSを作成するバッチファイルと同じフォルダに解凍する。
次のバッチファイルを作成。
@echo off
rem --------------------------
rem 年と月の取得
rem --------------------------
set tdate=2010/05/01
set YEAR=%tdate:~0,4%
set MONTH=%tdate:~5,2%
set /a MONTH=1%MONTH%-100
rem --------------------------
rem 前月の取得
rem --------------------------
if %MONTH% EQU 1 (set /a YEAR=YEAR-1&&set /a MONTH=12&&goto ZIP)
if %MONTH% NEQ 1 (if %MONTH% LEQ 9 set /a MONTH=MONTH-1&&goto ZERO)
if %MONTH% EQU 10 (set MONTH=09)
if %MONTH% GEQ 11 (set /a MONTH=MONTH-1)
goto ZIP
:ZERO
set MONTH=0%MONTH%
rem --------------------------
rem ZIP
rem --------------------------
:ZIP
for /d %%i in (\\server\log\%YEAR%%MONTH%*) do cscript MakeZip.VBS %YEAR%% MONTH%.zip %%i
参考URL:http://www.vector.co.jp/soft/winnt/util/se355605 …
No.2ベストアンサー
- 回答日時:
#昨夜からいろいろと WEBサーフィン してやっと書き上げたら、識者さんからのご回答が付いているようですが、せっかく書きましたので、投稿させていただきます。
<(_ _)>
#先ずお断りしておきますが、私は「バッチ超初心者ド級素人」です。
(^凹^)
http://okwave.jp/qa/q5827049.html #3
>下記はこちらで調べたURLですが、
>スクリプトだったのであきらめました。
リンク先 を拝見いたしましたが、とてもややこしそうでしのたので、一から自分で考えてみました。
先ず「ZIPに圧縮」につきましては、「+Lhaca」を使ってみます。
1)「+Lhaca」を ダウンロード、インストール します。
http://www.forest.impress.co.jp/lib/arc/archive/ …
2)Lhaca.exe を起動します。
3)[圧縮] - [圧縮先] を「ファイルと同じ場所」に、[フォルダを作ってその中に解凍] の チェック を外し、[圧縮形式] を「ZIP」に設定し、必要に応じて他の オプション を設定します(添付画像)。
4)[+Lhaca Version0.76 設定 ~~] の ウィンドウ を閉じます。
5)以上で、コマンドライン から
"C:\Program Files\Lhaca\Lhaca.exe" "D:\hoge"
を実行すると、"D:\hoge.zip" という「圧縮(zip形式)フォルダ」(中身は "D:\hoge" と同じ)ができます。
次に、「元ファイル+フォルダは削除」につきましては、下記の段取りでいかがでしょうか?
@echo off
rem 【1】「前月次」("201003")の数字文字列を取得する。
set YYYYMM=%DATE:~-10,4%%DATE:~-5,2%
set /a LASTMONTH=YYYYMM-1
if %LASTMONTH:~-2%==00 set /a LASTMONTH+=12-100
rem 【2】「\\server\log\」直下に、作業フォルダ("2010年03月")を作成する。
set RootFolder=\\server\log\
set MoveFolder=%LASTMONTH:~0,4%年%LASTMONTH:~-1,2%月
md %RootFolder%%MoveFolder%
rem 【3】圧縮対象("201003~" で始まる フォルダ)を 作業フォルダに移動する。
pushd %RootFolder%
for /d %%f in (%LASTMONTH%*) do move %%f %MoveFolder%
rem 【4】「ZIPに圧縮し、元ファイル+フォルダは削除」
"C:\Program Files\Lhaca\Lhaca.exe" .\%MoveFolder%
rd /s /q %MoveFolder%
初心者の言い訳がてらに、少々説明を加えておきます。。。
・【1】は
http://it-is-it.net/CMD/%B5%A1%C7%BD%CA%CC/%C6%F …
からの丸写しです。
・【3】の時点で %RootFolder% に移動しようとすると「cd」や「chdir」では「CMD では UNC パスは現在のディレクトリとしてサポートされません。」という エラー が表示されて移動できませんでしたので、
http://d.hatena.ne.jp/bontaki/20060722/1153535591
を参考に「pushd ~~」としました。
・「for ~~ move ~~」で フォルダ・ファイル を移動しようとしたときに、「セキュリティ」や「共有」の設定により「アクセスできませんでした」というような エラー が出ましたが、2つとも設定すると動きました。
・【4】の「.\%MoveFolder%」の部分につきましては、「+Lhaca」の設定によっては エラー が表示されるかも知れませんが、「"」で囲むと回避できるかも知れません。
・また、「%RootFolder%%MoveFolder%」などとすると、ちゃんと動きませんでしたので、「.\」により、カレントディレクトリ を相対指定しました。
なお、操作環境・ネットワーク環境 によっては動かないかも知れませんので、飽くまでご参考までにご覧ください。
No.3
- 回答日時:
#2 DOUGLAS_ です。
書き漏らしがありましたので追加いたします。
【3】で「pushd」で、自動的にネットワークドライブ接続した後に、「popd」で元のディレクトリに戻ると共に、ネットワークドライブを解放しておかないと、マイ コンピュータ の中に ネットワーク ドライブ がそのまま残ってしまいますので、【4】の一番最後に、
popd
を追加してください。
大変、失礼いたしました。 <(_ _)>
この回答への補足
補足いただき有難うございます。
早速今日、仕込んでみましたが、下記のようになってしまいました。
ZIPの中身
------
20100401\%computername%.log
20100402\%computername%.log
20100404\%computername%.log
%computername%.log
------
理想は、ZIPを解凍すると、日付フォルダの中に入る。
20100401\%computername%.log
20100402\%computername%.log
20100403\%computername%.log
20100404\%computername%.log
こちらでBATを編集してみましたが、うまくいきませんでした。
また、お時間ありましたらご教授下さい。
No.4
- 回答日時:
#2・3 DOUGLAS_ です。
#先ずお断りしておきますが、私は「バッチ超初心者ド級素人」であるばかりか、私の環境には、いわゆる「サーバー」がありませんので、ホームネットワーク 上の別の パソコン の ネットワークアドレス
\\{パソコン名}\{ドライブ名}\log
で試行しております。
お恥ずかしい話、私は、サーバー というものを扱ったことがありませんので、この時点で『ダメ』でしたら、つまり、「サーバー」と「ホームネットワーク」では全然異なるというようなことでしたら、すべての回答を お見捨てください。
【1】私が試したこと。
1)#2 の コード の内
set RootFolder=\\server\log\
の行を
set RootFolder=\\{パソコン名}\{ドライブ名}\log\
に書き換えて、「boge.bat」という ファイル名 で、私の パソコン の デスクトップ に保存しました。
2)「\\{パソコン名}\{ドライブ名}\log\」の配下に「20100101」~「20100415」の105個の フォルダ を作り、それぞれの フォルダ の中に「%computername%.log」という テキストファイル を作りました。
3)デスクトップ の「boge.bat」を ダブルクリック しました。
4)「\\{パソコン名}\{ドライブ名}\log\」の配下にあった「20100301」~「20100331」の31個の フォルダ がなくなり、替わりに「2010年3月.zip」という「圧縮(zip 形式)フォルダ」ができました。
5)エクスプローラ で「2010年3月.zip」を ダブルクリック すると、「+Lhaca」の「解凍」の規則に従って「2010年3月.zip」を解凍した フォルダ が表示されました。
6)その中を見てみると、それぞれに「%computername%.log」という テキストファイル が存在する「20100301」~「20100331」の31個の フォルダ が入っていました。
【2】さて、どこが問題と思われるでしょうか?
たびたびレス感謝です。
#先ずお断りしておきますが、私は「バッチ超初心者ド級素人」である
大変失礼しました。DOUGLASさんの環境でうまくいくということなので
GW前に実装したかった焦りもありすがってしまいました。
なんとか実装出来るよう頑張ってみます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 数学 回答者どもがなかなか答えられないようなので、考えてみました。 ∫[0,π/2]log(sinx)/( 4 2022/08/31 16:30
- 数学 log底10真数1/75 ただし、 log底10真数2=0.3 log底10真数3=0.5とする 式 2 2022/05/30 22:51
- 数学 極限の計算をお願いします。 {log(2x+3)}/{log(3x+1)} のx→∞の極限値の求め方 3 2022/08/03 20:58
- 数学 n乗はどうなったのでしょうか 1 2023/01/31 19:26
- 数学 O(N*logN)よりN=8の時、 O(N*logN) のOはオーダー記号と推察されますから 8*l 6 2022/04/06 18:54
- 化学 化学が得意な方に質問です。この問題の正解を教えて欲しいです。 【問題1】Log Kowの記述について 1 2022/09/26 23:44
- 数学 対数関数のグラフ y=log(2)2(x+1)のグラフを書け 模範解答は「1+log(2)(x+1) 2 2023/07/08 01:51
- タブレット log撮影で撮った写真について。 こんにちはカメラ初心者です、わたしは今までほとんどの写真をlog撮 3 2023/07/04 01:42
- MySQL 参考書に従って入力したつもりでしたが、最後はエラーがでました。 1 2022/09/28 03:45
- 数学 写真の数学の質問です。 常用対数ってのがいまいちわかりません。 log(10)3が、なぜlog(10 5 2023/06/10 14:07
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA 最新のフォルダ取得
-
ファイル名と同名のフォルダを...
-
会社のネットワーク上のファイ...
-
Windows10でコマンドプロンプト...
-
パス名に2バイト文字(マルチバ...
-
windowsでテキストファイルの各...
-
エクセルマクロで指定フォルダ...
-
デスクトップの画像をhtmlに表...
-
Excel VBA 同じ名前のフォルダ...
-
Access VBA で フォルダ権限...
-
多量のファイルをフォルダに自...
-
vbsで選択ダイアログを表示した...
-
【マクロ】ファイル名の日付に...
-
Excelのハイパーリンクについて...
-
VBAで行うフォルダ・ファイル検...
-
Wallpaper Engineでおすすめの...
-
[C#]FolderBrowserDialogのタイ...
-
ThisWorkbookがあるフォルダ更...
-
VBA フォルダの複数選択ができない
-
GetAttrが原因?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Windows10でコマンドプロンプト...
-
windowsでテキストファイルの各...
-
VBA 最新のフォルダ取得
-
ファイル名と同名のフォルダを...
-
VBA フォルダ名に特定の文字を...
-
デスクトップの画像をhtmlに表...
-
Excelのハイパーリンクについて...
-
フォルダ内のPDFファイル名を変...
-
Excelで指定したフォルダに保存...
-
会社のネットワーク上のファイ...
-
【マクロ】ファイル名の日付に...
-
保存先のフォルダ名を指定した...
-
多量のファイルをフォルダに自...
-
パス名に2バイト文字(マルチバ...
-
ディレクトリ名変更してコピー...
-
Access VBA で フォルダ権限...
-
C ファイル出力で、フォルダが...
-
サーバ内のフォルダ名と各フォ...
-
フォルダにリンクを貼りたい
-
vbsで選択ダイアログを表示した...
おすすめ情報