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

ファイル名を規則にしたがって変更するソフトで、ファイルの入っているフォルダ名をファイル名の先頭につける変更を行い、さらに、そのフォルダをなくしてファイルの置いてある階層をひとつ上に上げることができるソフトがあればお教えください。また、できればその逆(ファイル名の先頭数文字の名前のフォルダを生成してそこにそのフォルダ名の部分を除いた名前のファイルが生成される)もできると助かります。ファイルの整理に便利だと思うのですが。


●質問者: arakai
●カテゴリ:コンピュータ インターネット
✍キーワード:ひとつ ソフト ファイル フォルダ 名前
○ 状態 :キャンセル
└ 回答数 : 1/1件

▽最新の回答へ

1 ● airplant

WSHで作ってみました(まだ回答がなかったようですので)。


●使い方

  1. 下のスクリプトをRenFile.vbsのように拡張子.vbsで保存する
  2. エクスプローラからディレクトリを選んでRenFile.vbsへドラッグする(いくつでもOKです。ただし、親子になっているものは不可)
  3. 下位フォルダも含めて<フォルダ名>ファイル名にリネームされて、フォルダは全部消えます。もし、XXXフォルダ?AAAフォルダ?BBBフォルダ?c.docがあってAAAをドラッグすると、XXXフォルダにAAABBBc.docができます。
  4. ファイル移動やフォルダ削除は怖いので、動作確認用にメッセージを表示しています。動作に安心したら、「'怖いので」の行を削除ください。もし、試験段階でダイアログが出ている最中に止めたいときは、Ctrl+Alt+Delでタスクマネージャからwscript.exeをプロセスの終了で終わらせてください。
Option Explicit
'フォルダ名をつけてファイルを上位へ移動する(再帰)
'フォルダは削除する
Dim strArg

For Each strArg In Wscript.Arguments
 Call MoveUpperFolder(strArg)
Next

Sub MoveUpperFolder(strFolder)

 Dim objFSO, objFolder, objFile, objSubF
 Dim vWork, sFolderName
 
 Wscript.echo strFolder & "の処理"'怖いので
 Set objFSO = Wscript.CreateObject("Scripting.FileSystemObject")
 Set objFolder = objFSO.GetFolder(strFolder)
 vWork = Split(strFolder, "\")
 sFolderName = vWork(UBound(vWork))
 
  'フォルダがあったら先ずフォルダ内ファイルを上位へ移動
 For Each objSubF In objFolder.SubFolders
 Call MoveUpperFolder(objSubF.Path)
 Next
 
  'ファイルは上位フォルダへ移動
 For Each objFile In objFolder.Files
 Wscript.echo "MoveTo:" & objFolder.ParentFolder.Path & "\" _
 & sFolderName & objFile.Name'怖いので
 objFile.Move objFolder.ParentFolder.Path _
 & "\" & sFolderName & objFile.Name
 Next
 Wscript.echo "rd:" & objFolder.Path'怖いので
 objFolder.Delete
 
 Set objSubF = Nothing
 Set objFile = Nothing
 Set objFolder = Nothing
 Set objFSO = Nothing

End Sub

なお、戻しのほうは、どこでフォルダ名と判定するのかが判定困難なのでちょっとできないかなぁ。。。


●WSHの紹介

http://www.atmarkit.co.jp/fwin2k/operation/wsh01/wsh01_01.html

関連質問


●質問をもっと探す●



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