人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

フォルダ名に曜日を付けたいです。

「2007-01-30」や「2013-12-24」などの日付数字がフォルダ名になっているフォルダが、たくさんあります。2,000個くらいあります。

これらのフォルダ名に、曜日を付与したいのです。

2013-10-04(金)
2013-12-24(火)

などのイメージです。どのように処理すればスムーズ&簡単でしょうか?

当方の環境はWindows7/Proです。

ファイル名やフォルダ名を一括変更する際には、「Flexible Renamer」というソフトにお世話になることが多いです。しかし、フォルダ名を読み取って、日付を認識して、曜日を付与する...というのは無理そうでした。

私的にズバリのご回答、第1号の方には、200ptを送信いたします!

コンピュータの達人のみなさま、どうかよろしくお願いいたします!

追伸:日付の形式は全て4桁-2桁-2桁、半角数字です。



●質問者: Mugicha2004
●カテゴリ:コンピュータ
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● ぽけっとしすてむ
●200ポイント ベストアンサー

少ないフォルダ数で試したのみですから、バックアップを取ったうえで試してください。

以下を「date.bat」というファイル名で保存します。

@echo off
rem dir /b/ad
for /D %%i in (*) do (
echo %%i
call date2.bat %%i
)
pause


続いて、以下を「date2.bat」というファイル名で保存します。

@echo off
set filedate=%1

set /a yy=%filedate:~0,4% * 1
set /a mm=%filedate:~5,2% * 1
set /a dd=%filedate:~8,2% * 1
if %mm% LEQ 2 (
set /a yy=%yy% - 1
set /a mm=%mm% + 12
)
set /a yobi=(%yy% + %yy% / 4 - %yy% / 100 + %yy% / 400 + (13 * %mm% + 8) / 5 + %dd%) %% 7
if %yobi% == 0 set yobiK=日
if %yobi% == 1 set yobiK=月
if %yobi% == 2 set yobiK=火
if %yobi% == 3 set yobiK=水
if %yobi% == 4 set yobiK=木
if %yobi% == 5 set yobiK=金
if %yobi% == 6 set yobiK=土
move %filedate% "%filedate%(%yobiK%)"

変更したいフォルダに「date.bat」「date2.bat」を置き、
f:id:psne:20131220131735p:image
「date.bat」を実行します。

f:id:psne:20131220132413p:image

参考:
http://www.atmarkit.co.jp/ait/articles/0405/01/news002.html
http://sctfarch.blogspot.jp/2013/04/dos.html


ぽけっとしすてむさんのコメント
この回答は、1から書いていないので、ポイントは無くても良い気がします。

Mugicha2004さんのコメント
早速のご回答、ありがとうございます。DOSのバッチですね... ムムゥ、少しハードルが高そうですが、トライしてみます。 フリーウエア等を用いて、イージーにできる方法があれば、そちらも大募集です!

Mugicha2004さんのコメント
動作OKでした。正確に付与できたようです。 200pt送信させていただきました。ありがとうございました!

2 ● freemann
●100ポイント

PowerShellで以下のプログラムを実行すればできます。

実行する場所は、目的のフォルダが置いてある場所です。

$r1 = Get-ChildItem | where{ $_.psiscontainer -eq $true} | where{ $_.Name -match "[-0-9]+"}

foreach($i in $r1)
{
$d = [datetime] $i.Name
switch ($d.dayofweek)
{
"sunday"{
$fn = $i.Name + "(日)"
}
"monday"{
$fn = $i.Name + "(月)"
}
"tuesday"{
$fn = $i.Name + "(火)"
}
"wednesday"{
$fn = $i.Name + "(水)"
}
"thursday"{
$fn = $i.Name + "(木)"
}
"friday"{
$fn = $i.Name + "(金)"
}
"saturday"{
$fn = $i.Name + "(土)"
}
}

$i | Rename-Item -NewName $fn
}

dir


Mugicha2004さんのコメント
PowerShellは経験がありませんでした。ps1ファイル?に記述して実行してみましたが、エラーで動きませんでした... 今後の参考になりそうですので、100ptを送信させていただきました。ありがとうございました!

3 ● rouge_2008
●100ポイント

フリーウェアを使う方法です。
「Flexible Renamer」には作成日時や更新日時などのファイル・フォルダの日付を元にファイル名を変更する機能があります。

【準備】
フォルダの作成日時または更新日時がフォルダ名と違う場合は、事前に「FNCVT」で作成日時または更新日時を変更しておきます。

・FNCVT
http://www.vector.co.jp/soft/win95/util/se230280.html

・作者サイト
http://www.k3.dion.ne.jp/~jed/
※作者サイトでは少し新しいバージョンが配布されています。

準備1.「対象指定方式」に「指定ディレクトリ下の変換」を選択し、「ディレクトリ参照」ボタンで対象パスを設定します。
※「対象設定」の「ディレクトリも対象」「ディレクトリのみを対象」にチェックを入れます。
※「サブディレクトリ内も対象にする」「指定ディレクトリ自身も対象」は必要でしたら適宜チェックを入れます。
※「対象ファイルワイルドカード指定」で「20*」と入力すると、日付のディレクトリに絞る事ができると思います。
※「FNCVT - 対象一覧」ウィンドウを確認しながら設定してみてください。(開いていない場合は「対象ファイル一覧の表示」にチェックを付けると表示されます。)

準備2.「日時変換」タブを表示して、「作成日時」または「更新日時」のどちらか1つを「ファイル名を基にした日時」を選択します。
※「ファイル名を基にする場合のファイル名形式」で「日付」で「YYYYMMDD」、「時間」で「なし」を選択します。(※「-(ハイフン)」を無視して日時判定するようです。)

準備3.「プレビュー」にチェックを付けたまま、「変換開始」ボタンを押します。
※「変換プレビュー」画面が起動するので、「日時変換」で作成日時または更新日時の変換予定を確認し、良ければ「変換開始」を押して実行します。


※「FNCVT」にも日時からのファイル名変更機能はありますが、フォルダを対象にする事はできないようでしたので、「Flexible Renamer」を利用します。


【フォルダ名変更 - 曜日付加】

1.「フォルダ指定」を選択して、「リネーム」タブを表示します。

2.「ターゲット」の「フォルダ」にチェックを入れます。
※「フィルタ」は空欄にするか「*」を入力します。
※「サブフォルダ以下も対象」は適宜チェックを入れます。

3.次のaまたはbのどちらかで設定します。(指定ディレクトリ以下に対象フォルダ以外のフォルダもある場合は、bで実行した方が良さそうです。)

a.「高度なリネーム」のチェックを外します。
※「連番や文字列の追加」の「文字列(日時)を末尾からn文字目に追加」を選択します。
※「位置」を「0」に指定し、「追加文字列」に「 (\a)」を入力します。

b.「高度なリネーム」のチェックを入れます。
※「ワイルドカード」または「正規表現」にチェックを入れます。
「検索」欄にワイルドカードの場合「20*」、正規表現の場合「^[\d]{4}-[\d]{2}-[\d]{2}$」を入力します。
「置換」欄に「\0 (\a)」を入力します。

4.リネーム方式(?)に「リネーム」を選択します。(※「別フォルダにコピー&リネーム」など任意で選択して大丈夫です。)

5.「オプション」を押して「タイムスタンプ」→「更新日時をタイムスタンプとして使う」または「作成日時をタイムスタンプとして使う」のどちらかを選択します。(ファイル名に合う方(※「FNCVT」で変更した方)を選択します。)

6.一覧で「新しい名前」の表示を確認し、良ければ「リネーム」(※「コピー」または「移動」)ボタンを押して実行します。


Mugicha2004さんのコメント
フォルダ自体のタイムスタンプをいじってから、Flexible...という流れは、思いつきませんでした。 今後の参考になりそうですので、100ptを送信させていただきました。長文のご回答に100ptで恐縮ですが... ありがとうございました!
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ