すべてのファイル名が異なると仮定して、Windows 7 でフォルダーをフラット化するにはどうすればよいですか?

すべてのファイル名が異なると仮定して、Windows 7 でフォルダーをフラット化するにはどうすればよいですか?

たとえば、次のようなフォルダー階層があるとします。

Folder1
   File1
   Folder2
      File2
   Folder3
      File3
      Folder4
         File4

次のような結果になるコマンドを実行したいです:

Folder1
   File1
   File2
   File3
   File4

または同様の内容です。私は Windows にあまり詳しくないので、回答にはできるだけ詳しい内容を記載していただければ幸いです。

答え1

最も簡単な方法は、共通ルート フォルダーに入り、すべてのファイルを検索することです (つまり、* を検索します)。すべてのファイルが見つかったら、すべてのファイルをマークし、Ctrl + X を押して、再び共通ルート フォルダーに移動します。次に、Ctrl + V を押して、すべてのファイルをルート フォルダーに貼り付けます。終了したら、すべてのサブディレクトリを削除します。

これをバッチジョブとして実行できるかどうかはわかりません。

答え2

最終的に、大きな階層構造 (私の場合は png) をフラット化する必要があったときに、この PowerShell アプローチを使用しました。

Get-ChildItem C:\sourcefolder -Recurse -Filter "*.png" | Copy-Item -destination C:\destinationfolder\

答え3

ウィンドウズexe: http://en.sourceforge.jp/projects/sfnet_flatfolder/

またはAHK:

fileselectfolder,MyFold,::{20d04fe0-3aea-1069-a2d8-08002b30309d}
SetWorkingDir, %MyFold%
loop, *.*,0,1
{
  parentpath := RegExReplace(A_LoopFileDir,"\\","-")
  ;StringReplace, parentpath, A_LoopFileDir, \,-,All
  newname = %parentpath%-%A_LoopFileName%
  ;msgbox %newname%
  If a_loopfiledir <>
    filemove, %a_loopfilefullpath%,%newname%
}

loop, %myfold%\*.*,2,1
  fileremovedir, %a_loopfilefullpath%,1

exitapp

または使用ディレクトリオプス

またはパワーシェル

(ls -r -include *.jpg) | % { mv -literal $_ $_.Name.Insert(0, [String]::Format("{0} - ", $_.Directory.Name))}

またはバッチ(上記のように)

または手動で検索し、上記のように切り取って貼り付ける

方法は多数あり、あなたのスキルや傾向に応じていずれかを選択し、必要に応じて改良することができます。

これが必要になるかもしれません空のディレクトリを削除する上記の操作後

答え4

あまり技術的に詳しくない人でも使えるように、コマンドライン オプションで非常にシンプルにしました。

  1. どこかに「flatten.cmd」というファイルを作成します。
  2. そのファイルをメモ帳で開く
  3. ファイルに次の内容を配置します。

    FOR /R {SourcePath} %%G IN (*.mp3) DO move "%%G" {Destination}
    
  4. 「{SourcePath}」をフラット化したいフォルダに置き換えます。この場合、「c:\Folder1」

  5. 「{Destination"}」を、ファイルを移動したいフォルダに置き換えます。この場合も「c:\Folder1」です。コードは次のようになります。

    FOR /R c:\Folder1 %%G IN (*.mp3) DO move "%%G" c:\Folder1
    
  6. コマンドライン ウィンドウを開きます。これを行う方法はいくつかありますが、次の方法が最も高速です。

    • スタートボタンをクリックします
    • すべてのプログラムをクリック
    • アクセサリをクリック
    • コマンドプロンプトをクリック
  7. コマンドラインウィンドウで、次のように入力します。

    cd {folder where you put the flatten.cmd file}
    flatten
    

これで完了です (Windows 8 以降)。これを実行して、10,000 個の音楽ファイルのフォルダーをフラット化しました。うまくいきました。

FORコマンドラインユーティリティのオプションについては、以下を参照してください。https://technet.microsoft.com/ja-jp/library/bb490909.aspx

関連情報