
Например, предположим, что у меня есть следующая иерархия папок:
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
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
или использоватьСправочник Опус
илиPowershell
(ls -r -include *.jpg) | % { mv -literal $_ $_.Name.Insert(0, [String]::Format("{0} - ", $_.Directory.Name))}
илиПартия(как уже упоминалось выше)
или ручной поиск, копирование и вставка, как указано выше
Существует множество способов, в зависимости от ваших навыков и наклонностей вы можете выбрать любой из них и усовершенствовать его в соответствии со своими потребностями.
Вам может понадобиться этоУдалить пустые каталогипосле вышеуказанной операции
решение4
Довольно просто, с опцией командной строки для тех, кто не слишком подкован в технических вопросах.
- Создайте где-нибудь файл с названием «flatten.cmd»
- Откройте этот файл в Блокноте.
В файл поместите следующее:
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.