黒龍's Blog

明日から役立つ無駄知識をあなたに(仮)

ホーム 連絡をする 同期する ( RSS 2.0 ) Login
投稿数  154  : 記事  0  : コメント  292  : トラックバック  23

ニュース

わんくま同盟に参加させていただきました。
どうぞよろしくお願いします。

自己紹介

コミュニティ

えがクロック

セキュリティなめんなよ

書庫

日記カテゴリ

2010年4月10日 #

ビル名が新大阪淀川ビルから大拓ビルに変わっているようなのでご注意ください。7Fでやってまーす。

posted @ 10:23 | Feedback (0)

2010年1月22日 #

ですよっと。ボヤボヤしてたら申し込みしそこなった…orz

ラインナップはこんな感じです~。

2010/01/23 大阪#34 募集中
  • 10:20 ~ 10:30 わんくまについて等
  • 10:30 ~ 11:20 「農作業をやってみる」by jitta Lv.1くまー
  • 11:30 ~ 12:20 「レセプトって?」by いわおさん Lv.1くまー
  • 12:20 ~ 13:20 おひるごはん
  • 13:20 ~ 13:50 ライトニングトーク 5分間の真剣勝負
    • 少佐さん
    • (募集中)
    • (募集中)
  • 14:00 ~ 14:50 「はじめてのSilverlight」by 長月葵 Lv.1くまー
  • 15:00 ~ 15:50 「アタックしてみよう。SQLインジェクションとか。」by こげつさん Lv.2くまー
  • 16:00 ~ 16:50 「Windows phoneについてぐだぐだ喋るよ」by ch3cooh Lv.1くまー
  • 17:30~ 懇親会~
posted @ 23:41 | Feedback (0)

2009年12月31日 #

今年も残すところあと少し。今年はなにかとバタバタしてコミュニティ活動にも参加できない日があったりの一年でした。不況不況といわれているものの幸いにして仕事もあったので来年もまずは仕事をこなしつつ少しずつ参加できればいいかなと思っています。

来年もよろしくお願いします。また勉強会等々でお会いしましょう。

posted @ 22:10 | Feedback (0)

2009年12月10日 #

大阪では今年最後の勉強会です。くまさばちゃんの不調(?)で有効申し込み数はまだまだ余裕がある(現在30くらい?)ので興味のある方はレッツ申し込みを。

2009/12/12 大阪#33 募集中
  • 10:20 ~ 10:30 わんくまについて等
  • 10:30 ~ 11:20 「めたぷろぐらみんぐ in C++」by uskzさん Lv.2くまー
  • 11:30 ~ 12:00 「時は師走。2010年、クラウドの先に見えるものはなぁに?」by ちゅき Lv.1くまー
  • 12:00 ~ 13:00 おひるごはん
  • 13:00 ~ 13:30 ライトニングトーク 5分間の真剣勝負
    • まめしばさん
    • roboさん
    • jz5さん
  • 13:40 ~ 14:30 「proce55ingとGainerで始めるフィジカルコンピューティング入門」by 蜜葉さん Lv.1くまー
  • 14:40 ~ 15:30 「Spec#」by by 中博俊 lv.1くま~
  • 15:40 ~ 17:30 「デバッガ片手にCLR探索」by 荒井さん Lv.3くまー
  • 18:00~ 懇親会~

申し込みはこちらからw

週末は一緒に楽しみましょう♪

posted @ 1:05 | Feedback (0)

2009年10月22日 #

今週末はわんくま同盟 大阪勉強会 #32ですよっと。

  • 10:20 ~ 10:30 わんくまについて等
  • 10:30 ~ 11:20 「C#でiPhoneアプリ開発 with MonoTouch」by 伊勢シンさん lv1くま~
  • 11:30 ~ 12:00 「Windows Azure (CTP) 触ってみた」by おださん lv1くま~
  • 12:00 ~ 13:00 おひるごはん
  • 13:00 ~ 13:30 ライトニングトーク 5分間の真剣勝負
    • れいきいとさん
    • 真司さん
    • teru_kさん
  • 13:40 ~ 14:30 「マンガでおぼえる視線誘導 おかわり」by 長月葵 lv3くま~
  • 14:40 ~ 15:30 「.NETデバッグ入門」by 中博俊 lv1くま~
  • 15:40 ~ 17:30 「グループディスカッション - IT技術者のモチベーションの維持、高め方」by モデレータ 刈歩 菜良 CTP
  • 18:00~ 懇親会~
  • 会場情報:大阪市淀川区西中島4丁目13番22号 新大阪淀川ビル7F 株式会社クロノス 研修ルーム

    アクセス情報 :
    JR「新大阪駅」徒歩約13分
    大阪市営地下鉄御堂筋線「新大阪駅」徒歩約10分
    大阪市営地下鉄御堂筋線「西中島南方駅」徒歩約5分
    阪急京都線南方駅「西中島南方駅」徒歩約8分

    今回はグループディスカッションもあっていつも以上に楽しめそうです。

    まだ空きがあるかも知れませんのでぜひご参加ください。

    posted @ 8:29 | Feedback (0)

    というわけで早速今月の31日に勉強会があります。

    ☆Windows7倶楽部☆

    Club-Windows7 ? Top

    日時
     2009/10/31(土) 13:30~18:00
    場所
     大阪市淀川区西中島4丁目13-22 新大阪淀川ビル7F 株式会社クロノス 研修ルーム
     最寄駅はJR新大阪、阪急南方、地下鉄西中島南方です
    http://www.kronos-jp.net/access.html
    参加費
     300円



    アジェンダ
    13:15-13:30 受付開始
    13:30-13:40 ご挨拶
    13:40-14:40
      「Windows 7 対応アプリケーションの開発術 ~新機能でアプリケーションを完全武装!~」(70分)
        井上章さん

        Windows 7 の新機能に関する開発トピックを、デモを交えながら詳しくご紹介いたします。
        これを機会に皆様が開発されているアプリケーションを完全武装してください!
         <アジェンダ案>
          ●Windows 7 の基本情報と開発環境
          ●互換性対応
          - ユーザー アカウント制御 (UAC)
          ●新機能対応
          - シェル&ライブラリ
          - タスクバー&ジャンプリスト
          - リボン インターフェイス
          - マルチタッチ
          - センサー API
    14:40-14:50 休憩(10分)
    14:50-15:00
       「64bit開発のポイント(仮)」中博俊(50分)

    15:00-15:20 おかし休憩(20分)
    15:20-16:50
       「セッション3(仮)」黒龍(30分)

    16:50-17:10
       「セッション4(仮)」さお(20分)

    17:10-17:20 休憩(10分)
    17:20-17:50 ディスカッション(30分)
       Windows7についての色々について、みんなで語り合いましょう!

    お菓子が個人的には楽しみ^^

    みなさまぜひご参加ください~。

    posted @ 8:29 | Feedback (0)

    2009年8月2日 #

    IE8からTracの画面見るときに互換表示クリックがめんどくさい。

    • TracのCSS修正
    • IEの設定をごにょごにょ

    すればいけるんだろうけど今日もぽちり続ける。

    posted @ 23:08 | Feedback (0)

    2009年7月23日 #

    Microsoft Releases Windows 7 and Windows Server 2008 R2: Industry partners are finalizing new products in time for the worldwide launch.

    Windows 7ってRCからアップグレードはやっぱ無理なんだろうか?入れなおす準備しなきゃだなぁ。

    2008 R2は入れたいけどマシンがない^^;いい加減リプレースが必要だなこりゃ。

    posted @ 9:21 | Feedback (1)

    2009年6月29日 #

    久々のエントリ。

    .NetからCOMを参照するときのお話し。単体のオブジェクトを使う分には参照するだけでラッパークラスが作られて楽チンに使えますよね。Marshal.ReleaseComObjectさえ忘れなければ何にも悩むことはないと思います。

    で、忘れないようにIDisposableなラッパーを作ったりしてusingでウマーな感じにしたり。

    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Runtime.InteropServices;
    
    public class ComObj<T> : IDisposable
    {
        private bool disposed = false;
        private T target;
        public T Target
        {
            get { return target; }
        }
        private ComObj(){}
        public ComObj(T target)
        {
            this.target = target;
        }
        ~ComObj()
        {
            Dispose(false);
        }
        public void Dispose()
        {
            Dispose(true);
            GC.SuppressFinalize(this);
        }
        private void Dispose(bool disposing)
        {
            if (!disposed)
            {
                if (disposing) { }
                if (target != null && Marshal.IsComObject(target))
                {
                    Marshal.ReleaseComObject(target);
                }
                target = default(T);
                disposed = true;
            }
        }
    }
    public static class ComObjUtils
    {
        public static ComObj<T> Create<T>(T obj)
        {
            return new ComObj<T>(obj);
        }
    }
    

    けどもこれってあんましウマーじゃないよなぁと常々思っておりました。vbscriptからいじるにしても結構コード量増えるんで注意しつつ使うのが落とし所かなぁと。そんなこんなで悶々してたところふと思いついたのが「透過プロキシつかってAOP的に解決できんじゃね?」ってのが発端でごそごそ書いてみました。

    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Runtime.Remoting.Proxies;
    using System.Runtime.Remoting.Messaging;
    using System.Reflection;
    using System.Runtime.InteropServices;
    using System.Collections;
    
    namespace COMProxy
    {
        public class COMProxy<T> : RealProxy
        {
            private readonly Stack objecctStack;
            public Stack ObjecctStack
            {
                get { return objecctStack; }
            } 
    
    
            private readonly T target;
            public T Target
            {
                get { return target; }
            }
            public COMProxy(T target, Type type,Stack objecctStack)
                : base(type)
            {
                this.target = target;
                this.objecctStack = objecctStack;
                this.objecctStack.Push(target);
            }
            public COMProxy(T target, Stack objecctStack)
                : base(target.GetType())
            {
                this.target = target;
                this.objecctStack = objecctStack;
                this.objecctStack.Push(target);
            }
            public delegate IMessage BeforeInvokeDelegate(IMessage msg);
            public delegate ReturnMessage AfterInvokeDelegate(ReturnMessage msg);
            public event BeforeInvokeDelegate BeforeInvoke = delegate(IMessage msg) { return msg; };
            public event AfterInvokeDelegate AfterInvoke = delegate(ReturnMessage msg) { return msg; };
    
            public override IMessage Invoke(IMessage msg)
            {
    
                msg = BeforeInvoke(msg);
    
                IMethodCallMessage methodCallMessage = msg as IMethodCallMessage;
                MethodInfo targetMethod = methodCallMessage.MethodBase as MethodInfo;
                object[] args = methodCallMessage.Args;
    
                ReturnMessage returnMessage;
                try
                {
                    object invokeResult = targetMethod.Invoke(this.target, args);
                    //COMオブジェクトを返す場合解放のためにリストに追加する
                    if (invokeResult != null && Marshal.IsComObject(invokeResult))
                    {
                        Type org = invokeResult.GetType();
                        Type type = (targetMethod.ReturnType == typeof(object)) ? typeof(MarshalByRefObject) : targetMethod.ReturnType;
                        lock (this.objecctStack.SyncRoot)
                        {
                            if (!this.objecctStack.Contains(invokeResult))
                            {
                                invokeResult = Utils.Create(invokeResult as MarshalByRefObject,type, this.objecctStack);
                            }
                        }
                    }
                    returnMessage = new ReturnMessage(invokeResult, args, args.Length, methodCallMessage.LogicalCallContext, methodCallMessage);
                }
                catch (TargetInvocationException ex)
                {
                    returnMessage = new ReturnMessage(ex.InnerException, methodCallMessage);
                }
    
                returnMessage = AfterInvoke(returnMessage);
                return returnMessage;
            }
            public new T GetTransparentProxy()
            {
                return (T)base.GetTransparentProxy();
            }
        }
        public static class Utils
        {
            public static T Create<T>(T target,Stack objectStack)
            {
                return new COMProxy<T>(target, objectStack).GetTransparentProxy();
            }
            public static T Create<T>(T target,Type type, Stack objectStack)
            {
                return new COMProxy<T>(target, type, objectStack).GetTransparentProxy();
            }
        }
    }
    

    激しく試行錯誤中でぐだぐだなコードですがやってることはシンプルにメソッド呼出し後にCOMオブジェクト戻す場合は解放に備えてリストに追加してます。てかそれしかしてない^^;

    使うほうではこんな感じ

    ApplicationClass app = Utils.Create(new ApplicationClass(), COMList);
    try
    {
        Workbooks books = app.Workbooks as Workbooks;
    
        Workbook book = books.Open(
            ofd.FileName,
            Type.Missing,
            true,
            Type.Missing,
            Type.Missing,
            Type.Missing,
            Type.Missing,
            Type.Missing,
            Type.Missing,
            Type.Missing,
            Type.Missing,
            Type.Missing,
            Type.Missing,
            Type.Missing,
            Type.Missing);
        foreach (Worksheet sheet in book.Worksheets)
        {
            string cellValue = ((sheet).Cells[2, 2] as Range).Value2.ToString();
            MessageBox.Show("Cell value is " + cellValue);
        }
    }
    finally
    {
        app.Quit();
        while (COMList.Count > 0)
        {
            object comObj = COMList.Pop();
            Marshal.ReleaseComObject(comObj);
        }
    }
    

    何となく方向性はあってそうなのでブラッシュアップして使えるようにしたいなぁ。オブジェクトが戻るときとかいやーんな感じのコードになっちゃってますがCOM使う際の手間の軽減になるかも?と思ってます。なんかぼやぼやしてるとC#4.0でいいじゃんwとか言われかねないのでぐだぐだながら放流してみました^^;

    実はもっといい方法あったりします??

    posted @ 22:35 | Feedback (2)

    2009年6月16日 #

    横持ちと縦持ち_その後3 ~  縦持ちを横持ちに置換して読み取る

    すごくいいエントリだとは思うんですが…なんか単純な二元論に落としこんじゃってるようでもったいなく感じるのは私だけでしょうか?

    1~12月の集計的なテーブル相手に読み書き比べるのはナンセンスだと思います。(どちらも横持ちにすべき)

    逆に更新ばかりがあるようなら縦にしなきゃ同時実行制御にあたりまくってどうしようもなさそうに思います。

    この辺りはバランスというか要件に応じたものをモデリングすることだと思ってます。どっちかがベストとかは違うんじゃないかなと。

    きつい言い方になると思いますが速度差縮めるための縦横変換はなんかどちらのメリットもスポイルしてる気がします。

    んーばたばたしてるのでこの辺で。

    posted @ 23:51 | Feedback (5)

    2009年6月6日 #

    えっとまずはじめに言いたいのはサロゲートvs複合キー言うな、いきなり正規化崩し言うな、第三正規形で十分って言うな。以上…じゃ全く意味不明なので思うところをつらつらと。

    まず、論理設計と物理設計をいっしょくたにしてはいけません。また論理設計段階のモデリングも調査レベルから画面等を考慮したデータの合わせこみ、はたまたチューニング段階までいろいろあるので一口に論理設計といっても抽象度は結構違います。私がこういった話題を目にした時いつも気になるのは初期のモデリング時の業務要件と実装制約が混然一体となって語られているところ。いきなりサロゲートキー入れての話もいいですが思考停止や足かせになりかねないのでちょっと考えてみましょう。

    で、よくあるサロゲートいるいらないのお話ですが私はサロゲートキー嫌いじゃないです。かといってオールサロゲートってこともありません。この辺り感覚で決められていることが多いと思うんですが単純にリレーション張るためっていうのも初学者に誤解を与えそうなのでドメイン(定義域)から考えてみたいと思います。

    テーブル定義する際に正規化は意識すると思います。繰り返し項目を排除するってやつですね。まずは正規化されていないテーブルから考えるのですが世の中いろいろとシステム化されちゃってるのであちらこちらでサロゲートキーを見かけます。

    伝票Noとか社員コードとか正規化以前を考えてもふと出てきちゃいますよね。けどこれって事象の記録には必須じゃないはずです。伝票番号がなくてもいつ誰に何を売ったかが分かれば売上の記録はできますし社員も入社日、氏名、生年月日、現住所など情報を増やしていけばユニークな識別は可能になります。

    また、性別や様々な区分にしても同様でコードなんて付けずにそのまま記録して何の問題もありません。

    正規化の手始めにで関数従属を切り出すのはいたって普通の手順ですがこの際にサロゲートを意識せず作っちゃってる例が多いと思います。○○コードとか作ってコード+属性値のみのマスターテーブルに切り出してませんか?

    これをいきなりイメージしちゃう人は思考停止しちゃってますのでまずはやめてみないといけません。実際のところコードがなくてもリレーションは張れるのですから。(いわゆる正規化の手順の話でも当たり前のように取引先コード、取引先名等のコードありきの関数従属がありますので困ったものですが…)

    そうなると「同じならリレーションいらなくね?」「コード入れたほうが容量小さくね?」「そもそもマスタいらなくね?」って言う意見はどれも正しいです。ではなぜこういったマスタがあるのかを考えてみましょう。

    まずリレーションを張るにしてもコードを入れないと参照先も自身の属性も同じになってしまいますよね。ここで不要!と結論付けるのはまだ早くてテーブルを切ることで入りうる値の範囲が限定できます。これが定義域(ドメイン)をテーブルで表現したということです。性別ならば男、女、不明というテーブルを作ることでこの範囲に限定されるわけですね。数値や文字列も同じようにテーブルを設けて制限をかけたりできますがDBの機能を使って実現(型もそうですしチェック制約などの範囲チェックも同様)するほうが多いです。単純な値(性別や区分)はDBの機能でもやれると思いますがまずは値の範囲を規定する、その実装はテーブルでもできるしDBの機能でもできる。という思考手順を踏んだほうがいいと思います。

    単純な属性値ひとつじゃない複数のケースも同様で値の組み合わせに対してとりうる組み合わせををテーブルに記録します。

    じゃなぜコードを入れるの?って話になるんですが容量的な意味合いと変更可能性が主な理由になります。男、女など意味は変わりませんが表示項目としてとらえるのであれば十分に変更の可能性があります。まずそもそも定義域としての流れなので変更可能性を考慮して表示項目は別に設けたほうがよいでしょう。

    テーブルイメージだとこんな感じですね。

    識別子 属性値
    男、女など 男性、女性など

    男とか女とかダイレクトに書いてあるとコードっぽくないですが意味わけされたのでこれでも立派にコードです。画面項目ではなく区別するために導入されているのでコードもサロゲートキーであると言えると思います。

    組み合わせ項目にしても同様ですが容量的にも無駄が多くなりますから○○IDなんて付けたりします。流石にコード体系考えて人が意識して何かの識別子をつける意味もあまりないので数値の連番を振ったりしますね。

    結局のところコード+属性値という形はきちんと正規化された形ではあるのですが丸暗記的な思考停止ときちんと意味を考えながらでは意味合いが変わってくると思います。

    実際のところチューニング意図を踏まえてどんどん正規化していけばかなりの項目が自然とサロゲート+属性値になるのは確かなんですがきちんと説明できない場合や複合キーがあまりない場合正規化度合いの低い状態で早期の思考停止になっちゃってませんか?

    正規化の最終段階での制約の除去と未正規化テーブルのビジネスルールの消失をまぜこぜにしないように。

    ちょっと長くなったので今回はこの辺で。

    posted @ 16:21 | Feedback (4)

    Windows 開発統括部 Blog : メモリ保護 ( DEP/NX Memory Protection ) 機能の IE7 と IE8 の違い

    微妙に違いがあるようです。Windows Server 2003 は IE7 は有効で IE8 は無効っていう風に読めるんですがほんとかな?

    posted @ 11:39 | Feedback (1)

    2009年3月22日 #

    よく見りゃ前回書いてないし^^;おまけにタイトル大阪便器妖怪とかでるし・・・orz

    簡単に振り返りをば。

  • 「ASP.NET 2.0 Provider Model 概要」とりこびと lv2くま~

    ASP.NETで全般的に用いられてる拡張の仕組みであるProvider Modelについての紹介。こういった思想を踏まえて作るとぽいよね~って思えました。けどやりすぎ注意なんだろうなぁ^^;

  • 「twitterのbot作るよー。」坂上ひさとさん lv1くま~

    あっさりと作れるもんだとびっくり。さこったーなんてのがあるんだなぁ。思わず眼鏡bot作ろうかと思ったのは秘密。

  • おひるごはん

    会場近くのラーメン屋さんで味噌の餃子セットをチョイス。にんにくがちょっぴり入ってたので午後からくさかった人すみません。味はまぁまぁよかったです。

  • LTは秘密~wなんだけどちょっと紹介するならGr○○vyすげー、VMWareFusionとな!?、COLORSとあとぐぐれw、ゾンビ欲しいぃ~~って感じです。

  • 「ジェネリクスを使おう!」凪瀬悠輝 lv3くま~
  • javaのジェネリックスを紹介。classにかかるものだけだったんですがコレクションの<? extends>、<? super>あたりで頭がショートしました。javaは要素の代入互換だけじゃないのかな?いまいちメリットがつかめなかったです。自己言及型のジェネリックスも継承でいけるよとか。

  • 「ソフトウェアを美味しく解析する方法」willさん lv2くま~
  • 最初はx86のインストラクチャとかの紹介で皆ポカーンフェイス(別名豆鉄砲フェイス)になってたんですがclack me出てきたあたりから皆食いつく食いつくwガシガシ解析していくさまはブラッディ・マンデイのファルコンのようでした。今はPCいじっててもオタクっぽくないいい世の中になりましたね~。

  • 「Visual Studio によるデバッグ技法」囚人 lv1くま~

    マネージコード中心にデバッグの技法をあれこれ。これは便利なので皆に伝えようと思いました。

  •  

    次回はいつもとは趣向の違うまっちゃ139さんとの合同勉強会です。

    お申し込みはこちらから

    posted @ 0:14 | Feedback (0)

    2009年2月1日 #

    無事勉強会終了しました。普段ルータ代りにしているEeePCにうっかりWindows7を入れていたんですがいつもどおりに使えたのでよかったです。SkypeやらLimeやらの文字入力がちょっと重いので切れないかドキドキしてましたが^^; 来月は戻してるかもですが。

    posted @ 22:36 | Feedback (0)

    2008年12月31日 #

    振り返ればあまりエントリ数もなくこれといった活動はできてませんでした^^;

    今年も大阪勉強会へ参加しつついろいろなことを吸収できればいいなぁと思います。

    それではあと少しで今年も終わりですが来年もよろしくお願いします。

    posted @ 19:20 | Feedback (0)

    2008年12月3日 #

    張っていきなり噴いた。これは反則w

    image

    ブログパーツ配布元

    posted @ 18:06 | Feedback (2)

    2008年11月27日 #

    某氏のブログエントリより

    ディベロッパー製品開発統括部 Blog : Visual Studio 2008 Service Pack 1(SP1)用Intellisenseの修正プログラムが公開されました

    posted @ 14:45 | Feedback (1)

    2008年11月24日 #

    ずきんさんとこより

    IT Community Impact!ストリーミング - インフラ管理者の独り言(はなずきん@酒好テム管理者)

    Internet Week 2008ってのがあるみたいです。秋葉だそうです。ストリーミングがあるようなのでコソーリ見ることにします。

    posted @ 23:23 | Feedback (2)

    2008年11月19日 #

    これだろうか。わんくまメールはスパムがかなり来てたんですが驚くくらい減ってます。

    一時的でも効果あり:スパム流通量が激減、米大手ISPが業者の接続遮断 - ITmedia エンタープライズ

    posted @ 19:27 | Feedback (2)

    いろいろと選択肢があるのですが私はstsadm.exeを使ってます。で、知ってる人には当たり前なのかも知れないのですが-backupmethodオプションを使ってとったバックアップはstsadm.exeだけじゃなくてサーバの全体管理 -> サーバ構成の管理にあるバックアップから復元できるようです。

    image

    ちなみにこんなバッチを作ってタスクスケジューラに放り込んでます。

    ディレクトリ構成はこんな感じを想定。

    <退避先>
     ├\backup(バックアップファイルが入る)
     ├\old(1世代前のバックアップファイル)
     └\log(ログ置場)

    フルバックアップ用cmd)

    rd /S /Q <退避先>\old
    md <退避先>\old
    move /Y <退避先>\backup <退避先>\old\%date:~-10,4%%date:~-5,2%%date:~-2,2%
    md <退避先>\backup
    "%CommonProgramFiles%\Microsoft Shared\Web Server Extensions\12\BIN\stsadm.exe" -o backup -directory <退避先>\backup -backupmethod full >> <退避先>\log\%date:~-10,4%%date:~-5,2%%date:~-2,2%.log

    差分バックアップ用cmd)

    "%CommonProgramFiles%\Microsoft Shared\Web Server Extensions\12\BIN\stsadm.exe" -o backup -directory <退避先>\backup -backupmethod differential >> <退避先>\log\%date:~-10,4%%date:~-5,2%%date:~-2,2%.log 

    フルバックアップと差分を適度なタイミングで組み合わせればいい感じになると思います。(このcmdだとフルバックアップは1日以上のタイミングを想定)

    posted @ 13:24 | Feedback (0)