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


19

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

Folder1
   File1
   Folder2
      File2
   Folder3
      File3
      Folder4
         File4

次のようなコマンドを実行したい:

Folder1
   File1
   File2
   File3
   File4

または類似のもの。私はWindowsにあまり詳しくないので、答えの中で可能な限り詳細に感謝します。


これを行うための既存のプログラム、またはこれを行うコード(どのプログラミング言語)をお探しですか?
マットボール

@MattBall:これを行う最も簡単な方法を探しています。理想的には、これは端末を開いて何らかのコマンドを入力することです。繰り返しますが、私はWindowsの経験があまりないので、もっと良い方法があるかどうかを教えてください。ありがとう。

回答:


32

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

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


1
このシンプルさが気に入っていますが、40kファイルで試してみたところ、エクスプローラープロセスがクラッシュしました。
UpTheCreek

総司令官の答えは私には簡単に思えます。
Ev0oD

13

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

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

平坦化にはMove-Itemの方が適しているでしょうか?
geisterfurz007停止この混乱の

4

Windows 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

またはDirectory Opusを使用します

またはPowershell

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

またはバッチ(上記のとおり)

または手動検索、上記のように切り取りと貼り付け

スキルと傾向に応じて多くの方法があり、これらのいずれかを選択し、必要に応じて調整できます。

上記の操作の後、空のディレクトリを削除する必要がある場合があります


1
powershellコマンドは短く、正常に動作しています
マキシムYefremov

3

時々手動でディレクトリをフラット化する必要がある場合、Total Commanderが最適です。

Total Commanderで、フラット化するディレクトリに移動します。メニューで[ コマンド ] > [ブランチビュー ]をクリックします。そして、あなたはそれがすべて平らになっているのを見ます、あなたはそれを別のフォルダに移動/コピーすることができます。

ファイル名を少し変更する必要がある場合:フラット化されたビューですべてのファイルを選択し、メニューで[ファイル] > [マルチリネームツール ]に移動します。ここで、「マスクの名前変更」を使用して、パスから実際のファイル名に情報を追加できます。プラグインタグ/ボタンを使用し、検索と置換機能と小さなファイルボタンを使用します。テキストエディタ。複雑に聞こえるかもしれませんが、実際には最も簡単な方法IMO :)


Windows Commanderとは何ですか?Total Commanderのことですか?
UpTheCreek

正確に:)それを10年間使用して、名前は当時のWindows Commanderでした。編集済み
teejay

ありがとう。やってみた。ただし、40kの小さなファイルでは機能しません:(10分間多くのCPUを消費し、「ファイルを作成できませんでした」エラーが繰り返し発生しました。
UpTheCreek

CPU使用率と暗黙の遅さは残念ですが理解できます:)エラーは別のものです..悪い命名、総司令官のバグ、またはTCがこの多くのファイルを処理できない可能性があります。私は、最初のファイルの数が少ないの名前を変更しようとか、TCの新しいバージョンの使用するであろう
teejay

@teejay、私はあなたの提案の詳細のために釣りをしなければなりませんでしたが、私はついにそれを作ることができました。expander2プラグインを使用して、パスの一部を抽出し、ファイル名のプレフィックスにしました。次の人のためにいくつかの詳細を追加したいかもしれません。Tx。
-killogre

3

非常に技術的に傾いていない人のためのコマンドラインオプションで非常に簡単です。

  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/en-us/library/bb490909.aspxで見つけることができます


1

バッチスクリプトを使用して(私の頭の上の):

ルックアップするためのコマンドを

最初の行はすべてのファイルをサブディレクトリからルートに移動します。2行目はサブフォルダを削除します

for /f %f in ('dir "c:\folder\*" /s/b/a-d') do if not %~ff"=="c:\folder" move "%f" "c:\folder"
for /f %f in ('dir "c:\folder\*" /s/b/ad') do if not "%~ff"=="c:\folder" rd /s/q "%f" 

だから、ターミナルを開いてこれらのコマンドを入力し、「フォルダ」を適切なパスに置き換える必要がありますか?ありがとう。

スクリプトでそれを書きたくない場合は、はい。大藤.....
プリートサンガ

これを一般化し、コンテキストメニューアクションにアタッチできますか?ファイルを右クリックし、[ファイルをフラット化]をクリックして、ファイル内のすべてのファイルをフォルダーのレベルに移動できるようにしたいです。後にフォルダを削除するのもいいでしょう。
MAW74656

はい、フォルダ名として%1を使用してバッチファイルに入れることができます。stackoverflow.com/questions/6162415/...
プリートサンガ


1

こんにちは、xxcopy(www.xxcopy.com)ツール、steriods(並べ替え)のxcopyも使用できます。このツールを使用すると、フォルダー内のファイルを1つのフォルダーに「フラット化」できます。

c:> xxcopy / source-folders / flatten / SG

次のリンクをお読みください:http : //www.xxcopy.com/xxcopy16.htm

乾杯。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.