たとえば、次のフォルダー階層があるとします。
Folder1
File1
Folder2
File2
Folder3
File3
Folder4
File4
次のようなコマンドを実行したい:
Folder1
File1
File2
File3
File4
または類似のもの。私はWindowsにあまり詳しくないので、答えの中で可能な限り詳細に感謝します。
たとえば、次のフォルダー階層があるとします。
Folder1
File1
Folder2
File2
Folder3
File3
Folder4
File4
次のようなコマンドを実行したい:
Folder1
File1
File2
File3
File4
または類似のもの。私はWindowsにあまり詳しくないので、答えの中で可能な限り詳細に感謝します。
回答:
絶対的な最も簡単な方法は、共通のルートフォルダーに入り、すべてのファイルを検索することです(つまり、*を検索します)。すべてのファイルが見つかったら、すべてのファイルをマークし、Ctrl + Xを押して、共通のルートフォルダーに再度移動します。Ctrl + Vを押して、すべてのファイルをルートフォルダーに貼り付けます。完了したら、すべてのサブディレクトリを削除します。
これがバッチジョブとして実行できるかどうかはわかりません。
最後にこのpowershellアプローチを使用したのは、大きな階層構造(私の場合はpng)をフラット化する必要があるときでした。
Get-ChildItem C:\sourcefolder -Recurse -Filter "*.png" | Copy-Item -destination C:\destinationfolder\
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))}
またはバッチ(上記のとおり)
または手動検索、上記のように切り取りと貼り付け
スキルと傾向に応じて多くの方法があり、これらのいずれかを選択し、必要に応じて調整できます。
上記の操作の後、空のディレクトリを削除する必要がある場合があります
時々手動でディレクトリをフラット化する必要がある場合、Total Commanderが最適です。
Total Commanderで、フラット化するディレクトリに移動します。メニューで[ コマンド ] > [ブランチビュー ]をクリックします。そして、あなたはそれがすべて平らになっているのを見ます、あなたはそれを別のフォルダに移動/コピーすることができます。
ファイル名を少し変更する必要がある場合:フラット化されたビューですべてのファイルを選択し、メニューで[ファイル] > [マルチリネームツール ]に移動します。ここで、「マスクの名前変更」を使用して、パスから実際のファイル名に情報を追加できます。プラグインタグ/ボタンを使用し、検索と置換機能と小さなファイルボタンを使用します。テキストエディタ。複雑に聞こえるかもしれませんが、実際には最も簡単な方法IMO :)
非常に技術的に傾いていない人のためのコマンドラインオプションで非常に簡単です。
ファイルに次を配置します。
FOR /R {SourcePath} %%G IN (*.mp3) DO move "%%G" {Destination}
「{SourcePath}」をフラット化するフォルダーに置き換えます。あなたの場合「c:\ Folder1」
"{Destination"}をファイルの移動先のフォルダーに置き換えます。あなたの場合も「c:\ Folder1」。コードは次のようになります。
FOR /R c:\Folder1 %%G IN (*.mp3) DO move "%%G" c:\Folder1
コマンドラインウィンドウを開きます。これはいくつかの方法で実行できますが、これは高速です。
コマンドラインウィンドウで、次のように入力します。
cd {folder where you put the flatten.cmd file}
flatten
(Windows 8以降)これで、10,000個の音楽ファイルのフォルダーをフラット化することができました。魔法のように機能します。
FORコマンドラインユーティリティのオプションは、https://technet.microsoft.com/en-us/library/bb490909.aspxで見つけることができます。
バッチスクリプトを使用して(私の頭の上の):
ルックアップするためのコマンドを
最初の行はすべてのファイルをサブディレクトリからルートに移動します。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"
こんにちは、xxcopy(www.xxcopy.com)ツール、steriods(並べ替え)のxcopyも使用できます。このツールを使用すると、フォルダー内のファイルを1つのフォルダーに「フラット化」できます。
c:> xxcopy / source-folders / flatten / SG
次のリンクをお読みください:http : //www.xxcopy.com/xxcopy16.htm
乾杯。