CopyToBitcasa version 1.0.7.1

download

(以下の全部をまとめた分) 某スレに上げたやつ(bitcasaリンク)
copytobitcasa.1.0.7.1
copytobitcasa.1.0.7.0
copytobitcasa.1.0.6.2
copytobitcasa.1.0.6.1
copytobitcasa.1.0.6.0
copytobitcasa.1.0.5.4

(目的)

bitcasaへの転送時、転送が完全に終了するのを待ってから次のファイルをコピーする

(動作)

キャッシュフォルダの下にあるoutgoingフォルダに転送待ちのブロックのリストが 入るようなので、そこを監視して空になり次第、次のファイルをコピーする。

(更新履歴)

(準備)

  1. exeフォルダ下のx64フォルダ、又はwin32xpフォルダの中身を好きな場所にコピーしてください。
    x64フォルダのexeは64bitコンパイル(windows 7用) win32xpフォルダのexeは32bitコンパイル(windows XP以降用)しています。
  2. copytobitcasa.iniを開いて、キャッシュフォルダの位置とoutgoingフォルダの 直下のuuidっぽい名前のフォルダをあなたの環境に合わせて編集してください。
  3. copytobitcasa.exeをコマンドラインから呼び出して実行です。

    copytobitcasa (src) (dest) [options]

(簡単な使い方1)

copytobitcasa d:\video\*.mp4 i:\video\

d:\video\ 直下にある拡張子がmp4のファイルを、bitcasaドライブ i:\video\ フォルダに 順次コピーします。

(簡単な使い方2)

copytobitcasa d:\tsfiles\*.ts i:\ts\ /r

d:\tsfiles\ フォルダの中を再帰的に走査して、*.tsのファイルを d:\tsfiles\ からみた フォルダ構造を保ったまま i:\ts\ フォルダ以下にコピーします。

例えば

d:\tsfiles\nanoha\as1.ts
d:\tsfiles\nanoha\as2.ts
d:\tsfiles\madoka\madoka1.ts

をコピーすると

i:\ts\nanoha\as1.ts
i:\ts\nanoha\as2.ts
i:\ts\madoka\madoka1.ts

となります。

(簡単な使い方3)

copytobitcasa d:\tsfiles\*.ts i:\ts\ /r /d

d:\tsfiles\ フォルダの中を再帰的に走査して、*.tsのファイルをフォルダ構造を無視して i:\ts\ フォルダの直下にコピーします。

例えば

d:\tsfiles\201201\anime1.ts
d:\tsfiles\201202\anime2.ts
d:\tsfiles\201203\anime3.ts

をコピーすると

i:\ts\anime1.ts
i:\ts\anime2.ts
i:\ts\anime3.ts

となります。

(簡単な使い方4)

 copytobitcasa d:\tsfiles\*.ts i:\ts\ /date 201201-201202

d:\tsfiles\ フォルダの直下にある*.tsファイルのうち、更新日時が 2012/01/01 0:00:00 から 2012/02/01 0:00:00 であるファイルを i:\ts\ フォルダの直下にコピーします。

(簡単な使い方5)

 copytobitcasa d:\log\*.txt i:\log\ /move

d:\log\ フォルダの直下にある*.txtファイルを、i:\log\ フォルダの直下にコピーした後 元ファイルを削除します。
ファイルの転送の完了を逐次待つので、小さいファイルの場合通常より転送が遅くなります。

bitcasaは正式版になりましたが有料βの心意気が必要な状態です。
もしincompleteファイルが発生した場合、ファイルを復元することは不可能となります。
十分理解してこのオプションを使用してください。

(簡単な使い方6)

copytobitcasa \\?\d:\verylongpath\*.txt \\?\i:\log\

d:\verylongpath\ フォルダの直下にある*.txtファイルを、i:\log\ フォルダの直下にコピーします。
この指定方法(\?\をsrc,dest共に先頭に付加)を使用した場合は、MAX_PATHをこえるくらいの長さの ファイル名がある場合の不具合を回避できます。
ただし、このような長いパス名はエクスプローラを含むいくつかのソフトで 面倒なことが起こる場合があるので注意してください。

(簡単な使い方7)

copytobitcasa d:\withsemicolon\test;test.txt i:\log\ /scan

d:\withsemicolon\test;test.txt ファイルを、i:\log\ フォルダにコピーします。
/scanオプションを指定すると、ターゲットフォルダの対象ファイルの更新日時サイズの チェックにFindFirstFile()ではなくGetFileInformationByHandle()を使用します。

なぜかBitcasaドライブにおいて";"(セミコロン)が含まれているファイル名を直接指定して FindFirstFile()を行うと失敗するというバグがあるので、このバグを回避するのに 使用してください。 (windowsUI 1.1.3.25でこのバグは解消された模様です)

ただし、GetFileInformationByHandle()のためにCreateFile()をすると、各ファイルで 通信が発生するので、大量にファイルが含まれているBitcasaフォルダでこのオプションを 指定した初回はスキャンが非常に遅くなります。
一度読んだフォルダはデータがキャッシュされている限りFindFirstFile()と同等の 速度でスキャンできるようです。

(コマンドラインオプションの説明)

/t : テストモード
     このスイッチを指定すると、ファイルのリストアップのみを行いコピーはしません。
     オプションで指定した条件があっているかのテストに使ってください。

/ini (inifilename)
     デフォルトはcopytobitcasa.iniですが(実行ファイル名.ini)outgoingフォルダを
     記述したiniファイルを(inifilename)で指定できます。

/r : 再帰走査モード
     ソースに指定されたフォルダ直下のみではなく、その下のフォルダを再帰的に走査します。

/d : ディレクトリ構造を無視
     デフォルトではコピー元のフォルダ構造を保ってコピーしますが、ターゲットフォルダの
     直下にフォルダを作らずそのままコピーします。

/override   : 必ず上書き
/differ     : サイズか更新日時が異なる場合に上書き
/update     : コピー元の更新日時の方が新しい場合に上書き
/nooverride : 同じファイルがある場合はコピーしない
     デフォルトではコピー先に同名ファイルがある場合、サイズか更新日時が異なる場合にのみ
     上書きし、その他の場合はスキップします(/differ)
     この動作を変更したい場合に指定してください。

/size (min)-(max)
    コピー元のファイル名が一致するファイルのうち、指定したサイズのファイルのみを
    コピーします。
    (min)(max)はどちらかを省略できます。
    100- 100byte以上
    -10M 10MiB(=10485760byte)以下です。

/date (start)-(end)
    コピー元のファイル名が一致するファイルのうち、指定した更新日時のファイルのみを
    コピーします。
    (start)(end)はどちらかを省略できます。
    日付の指定は 20010101123050000 のようにyyyymmddHHMMSSsss 形式で数字の連続でも
    2001/01/01.12:30:50.000 のように区切りを入れて指定してもどちらでもかまいません。
    区切りは数字と空白以外の文字ならどれでもかまいません。
    年は1601年以降である必要があるので4桁でなければなりません。
    それ以降の月日時分秒とサブミリ秒は任意に省略でき、0もしくは1と見なされます。
    月日などが1桁の場合、区切り文字がある場合は 2012/1/1のように指定できますが
    20120101 の形式の場合は0を入れて桁数を合わせてください。

/move
    移動モード
    ファイルをコピーした後、元ファイルを削除します。
    各ファイルのコピーを始める前に書き込み排他でファイルを開き、失敗した場合は中止します。
    1ファイルコピー終了するとDeleteFile()を行います。ファイルは直ちにアクセスできなくなりますが、
  実際に消えるのは全体の実行が終わってからのようです。
    何らかの要因で不完全ファイルとなってしまった場合、ファイルを復元することが
    できなくなりますので、十分注意して使用してください。

/scan
    GetFileInformationByHandle()を使用する
  Bitcasaドライブ内で";"(セミコロン)を含むファイル名を直接指定したFindFirstFile()
    なぜか失敗するバグを回避します。
    この方法でBitcasaドライブをスキャンすると、通信が発生して遅くなります。

/wait
    待ち合わせのパラメータを指定(詳しくはwait.txt参照)
    何も指定していない場合、デフォルト値として
    /wait=0,15000,10000,25000,0,2000,100M,500M,0.001,1.0,5.0,1.0
    が指定されているのと同じになります。
    デフォルト値から変更しないパラメータは省略できますが、,(コンマ)は省略できません。
    空白なしで=に続けて,(コンマ)区切りで非負の数値を指定できます。
    7,8フィールド目のバイト指定はsizeオプションと同様に単位指定が可能です。

(その他の注意)

(32bit版の注意)

(らいせんす)

NYSL:煮るなり焼くなり好きにしろライセンス でお願いします。お好きにどうぞ。