【フリーウエア】WIN XPの環境で任意のフォルダーにファイルを放り込むとそのフォルダー名+日付でファイル名を生成してくれるような便利なフリーウェアはありますでしょうか。


例えば、

フォルダー名 「はてな」
日付      2007/07/10
ファイル形式  JPG

ファイル名   はてな2007/07/10JPG


となるようなフリーウェアがあると嬉しいのですが。
こんなこと出来るのでしょうか?

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2007/07/11 00:05:42
  • 終了:2007/07/12 21:32:31

ベストアンサー

id:airplant No.4

airplant回答回数220ベストアンサー獲得回数492007/07/12 02:26:43

ポイント100pt

Windowsの標準スクリプトだと中々大変です。

何とかできました。

ファイル名称=[フォルダ名]+[実行日日付]-[連番].[元の拡張子]

1回当たりの変更ファイルはn個。

次の制限があります。

  • フォルダ名にブランクは入れないでください
  • 当日分は最大番号のファイルのみ削除可。
    途中のファイルをどうしても消したいときは、最大番号を消したファイル名に名前変更→しょぼい仕様です。もしくは、別フォルダに当日分を移動して全件をバッチで処理してから、元フォルダに入れて再度バッチに処理させればきれいになります。
    拡張コマンドプロンプトというもので最大値をもってくれば、この制限は解除できますが、やめました。運用が良く分かっていないので。
  • アルゴリズムのオーダは、 N^2なので、ファイル数が多くなればなるほど二乗で遅くなります。
  • 使い方は前と一緒です。今度は複数ファイルに対応しましたので、複数ファイルを選択してから「送る」でこのバッチに食わせてください。
Rem ファイルを[フォルダ]YYYYMMDD-#.[元ファイル拡張子]に変更するバッチ
Rem 日付の後は拡張子に関係なく連番を振る
Rem ファイル個数で連番を振っているので、一度作ったものを消すとうまく動かない!

Rem 起動方法:バッチファイル名 パス名\ファイル名 [パス名\ファイル名...]
Rem 最後のpauseはうまく動いたかの確認用。動くことが確認できたら行を削除する。
Rem 「日付」は当日の意味。

set TempAns=temp.tmp

Rem DirName←ディレクトリ名
Rem 下のforの&と変数の間にはスペース入れないこと。なお5階層まで動作。
for /F "usebackq delims=\ tokens=1-5" %%i in (`echo %~p1`) do (set d1=%%i& set d2=%%j& set d3=%%k& set d4=%%l& set d5=%%m)

if not "%d1%"=="" set DirName=%d1%
if not "%d2%"=="" set DirName=%d2%
if not "%d3%"=="" set DirName=%d3%
if not "%d4%"=="" set DirName=%d4%
if not "%d5%"=="" set DirName=%d5%

Rem yyyymmdd←当日
for /F "usebackq delims=/ tokens=1-3" %%i in (`echo %date%`) do set yyyymmdd=%%i%%j%%k

:repeat
Rem 当日入れたファイルの数を数える
dir %~d1%~p1%DirName%%yyyymmdd%-*.* > %TempAns%
for /F "usebackq tokens=3" %%i in (`find /c "%yyyymmdd%-" %TempAns%`) do set n=%%i
set /a n=%n%+1
del %TempAns%

set Target=%DirName%%yyyymmdd%-%n%%~x1
pause ren %1 %Target%
ren %1 %Target%

Rem 複数ファイルだったら繰り返す
shift
if not "%1"=="" goto repeat

http://www.google.co.jp

id:toomuchappy

airplant さま 

大感謝です。ありがとうございました。

2007/07/12 21:10:29

その他の回答(3件)

id:kumankuman No.1

kumankuman回答回数1107ベストアンサー獲得回数162007/07/11 00:24:11

id:toomuchappy

ファイルはJPGに限らずPDFなどいろいろです。

あるのかなぁ~。

2007/07/11 00:27:54
id:memo77 No.2

memo77回答回数238ベストアンサー獲得回数202007/07/11 00:45:10

ポイント23pt

リアルタイムに監視したいということでしょうか?

それであれば「フォルダ監視」とリネームソフトを組み合わせればできますね。

http://www10.plala.or.jp/tukaeru/foldersmanual/

これで監視して、リネームソフトにファイルを渡すように設定できます。


フォルダ名をファイル名につけてくれたり日付をつけてくれたりするのはいろいろあるので

http://www.vector.co.jp/vpack/filearea/win/util/file/name/

ここからご自由に。


またリネーム用としては出てきませんが、Vixという画像閲覧ソフトのリネームは強力です。

id:toomuchappy

ありがとうございます。

これから内容を調べてみます。

2007/07/11 10:15:49
id:airplant No.3

airplant回答回数220ベストアンサー獲得回数492007/07/11 03:12:37

ポイント100pt

スクリプト(バッチファイル)でできます。


下記の仮定にてサンプルを作りました。

日付=当日。

ファイル名称=[フォルダ名]+[/を外した日付].[元の拡張子]

1回当たりの変更ファイルは1つ。

ファイル日付で作ることもできます。スクリプトの一部をNoに変更してください。

今のままだとファイル日付にしても当日日付にしても、ファイル名が同じになってしまうのが出てきますが、それはいいのでしょうか?

1日1個ならいいかも知れませんね。何個も一気にやるのであれば、時刻もつけるかファイル名の一部を残すなどに仕様を変えて、繰り返し処理にすれば動きます。

Rem ファイルを[フォルダ]YYYYMMDD.[元ファイル拡張子]に変更するバッチ
Rem 起動方法:バッチファイル名 パス名\ファイル名
Rem 最後のpauseはうまく動いたかの確認用。動くことが確認できたら行を削除する。

Rem 「日付」が当日の意味なら下記をNoに変更する。ファイル日付の意味ならYesのまま。
set Filedate=Yes

if not %Filedate%==Yes goto today
for /F "usebackq delims=/ tokens=1-3" %%i in (`echo %~t1`) do set yyyymmdd=%%i%%j%%k
rem 時間を削除
for /F "usebackq tokens=1" %%i in (`echo %yyyymmdd%`) do set yyyymmdd=%%i
goto getdir
:today
for /F "usebackq delims=/ tokens=1-3" %%i in (`echo %date%`) do set yyyymmdd=%%i%%j%%k

:getdir
Rem 下のforの&と変数の間にはスペース入れないこと。なお5階層までのみ動作。
for /F "usebackq delims=\ tokens=1-5" %%i in (`echo %~p1`) do (set d1=%%i& set d2=%%j& set d3=%%k& set d4=%%l& set d5=%%m)

if not "%d1%"=="" set DirName=%d1%
if not "%d2%"=="" set DirName=%d2%
if not "%d3%"=="" set DirName=%d3%
if not "%d4%"=="" set DirName=%d4%
if not "%d5%"=="" set DirName=%d5%

set Target=%DirName%%yyyymmdd%%~x1
pause ren %1 %Target%
ren %1 %Target%
pause

利用方法

  1. 上記をxxx.batに落として、適当なフォルダに置く。
  2. そのままxxx.batへファイルをドラッグすると動く。
  3. お勧めは、ショートカットをsendtoフォルダへコピーして、送るで使うことです。
    sendtoフォルダは隠し属性になっているので、エクスプローラで隠し属性を外してから、ショートカットを放り込んでください。
    ここにあります→C:\Documents and Settings\user名\SendTo

http://ja.wikipedia.org/wiki/%E3%83%90%E3%83%83%E3%83%81%E3%83%9...

id:toomuchappy

ありがとうございます。

スゴイですね。これだからHatenaはやめられませんね。素晴らしい!!

これから内容を確認してみます。感激です。

一つ質問がございます。

一日何本もあるので 

Hatena20070711A 又は Hatena20070711-1 

Hatena20070711B 又は Hatena20070711-2 

とかに出来るのでしょうか。

2007/07/11 11:18:08
id:airplant No.4

airplant回答回数220ベストアンサー獲得回数492007/07/12 02:26:43ここでベストアンサー

ポイント100pt

Windowsの標準スクリプトだと中々大変です。

何とかできました。

ファイル名称=[フォルダ名]+[実行日日付]-[連番].[元の拡張子]

1回当たりの変更ファイルはn個。

次の制限があります。

  • フォルダ名にブランクは入れないでください
  • 当日分は最大番号のファイルのみ削除可。
    途中のファイルをどうしても消したいときは、最大番号を消したファイル名に名前変更→しょぼい仕様です。もしくは、別フォルダに当日分を移動して全件をバッチで処理してから、元フォルダに入れて再度バッチに処理させればきれいになります。
    拡張コマンドプロンプトというもので最大値をもってくれば、この制限は解除できますが、やめました。運用が良く分かっていないので。
  • アルゴリズムのオーダは、 N^2なので、ファイル数が多くなればなるほど二乗で遅くなります。
  • 使い方は前と一緒です。今度は複数ファイルに対応しましたので、複数ファイルを選択してから「送る」でこのバッチに食わせてください。
Rem ファイルを[フォルダ]YYYYMMDD-#.[元ファイル拡張子]に変更するバッチ
Rem 日付の後は拡張子に関係なく連番を振る
Rem ファイル個数で連番を振っているので、一度作ったものを消すとうまく動かない!

Rem 起動方法:バッチファイル名 パス名\ファイル名 [パス名\ファイル名...]
Rem 最後のpauseはうまく動いたかの確認用。動くことが確認できたら行を削除する。
Rem 「日付」は当日の意味。

set TempAns=temp.tmp

Rem DirName←ディレクトリ名
Rem 下のforの&と変数の間にはスペース入れないこと。なお5階層まで動作。
for /F "usebackq delims=\ tokens=1-5" %%i in (`echo %~p1`) do (set d1=%%i& set d2=%%j& set d3=%%k& set d4=%%l& set d5=%%m)

if not "%d1%"=="" set DirName=%d1%
if not "%d2%"=="" set DirName=%d2%
if not "%d3%"=="" set DirName=%d3%
if not "%d4%"=="" set DirName=%d4%
if not "%d5%"=="" set DirName=%d5%

Rem yyyymmdd←当日
for /F "usebackq delims=/ tokens=1-3" %%i in (`echo %date%`) do set yyyymmdd=%%i%%j%%k

:repeat
Rem 当日入れたファイルの数を数える
dir %~d1%~p1%DirName%%yyyymmdd%-*.* > %TempAns%
for /F "usebackq tokens=3" %%i in (`find /c "%yyyymmdd%-" %TempAns%`) do set n=%%i
set /a n=%n%+1
del %TempAns%

set Target=%DirName%%yyyymmdd%-%n%%~x1
pause ren %1 %Target%
ren %1 %Target%

Rem 複数ファイルだったら繰り返す
shift
if not "%1"=="" goto repeat

http://www.google.co.jp

id:toomuchappy

airplant さま 

大感謝です。ありがとうございました。

2007/07/12 21:10:29

コメントはまだありません

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません