У меня есть куча файлов, хранящихся в каталоге файлов, как таковой
root_folder
-- folder1
--folder1_2
--bunch of files here
-- folder2
--folder2_2
--bunch of files here
-- folder3
--folder3_2
--bunch of files here
Как видите, мои файлы в двухуровневой папке из корневой папки. Как я могу легко переместить мою связку файлов, так как каталог становится таким:
root_folder
-- folder1
--bunch of files here
-- folder2
--bunch of files here
-- folder3
--bunch of files here
Есть ли какая-нибудь бесплатная программа, которую я могу использовать? Или, может быть, я могу использовать командную строку для достижения этой цели? Большое спасибо за помощь :)
windows-7
command-line
script
file-management
file-transfer
Николас Ли
источник
источник
Ответы:
Я также привел пример Powershell:
Вы можете скопировать и вставить это в Powershell ISE. Полужирные переключатели в основном выводят пробный прогон.
Вы можете проверить вывод, чтобы убедиться, что он перемещает файлы туда, куда вы их точно хотите. Удалите ключи -whatif, чтобы скрипт работал .
источник
Решение Powershell. Используйте это в
root_folder
(убедитесь, что нет свободных файлов непосредственно подroot_folder
):gci -R | ?{!$_.PSIsContainer} | %{mv $_.fullname $_.directory.parent}
Вышеуказанный файл помещает любой найденный файл в тот же каталог, в котором находится родительский каталог файла.
Затем, чтобы удалить все пустые папки:
gci -R | ?{(gci $_) -eq $NULL} | rm
источник
Вот пакетный скрипт Windows для этого.
Этот первый сценарий будет перемещать файлы только внутри структуры каталогов, аналогичной показанной в вопросе OP.
Измените значение переменной сценария "topfolder", чтобы она содержала "базовую папку" для структуры каталогов.
Измените значение переменной сценария «subfolderprefix», чтобы оно содержало общий префикс для папок «первого уровня», которые нужно искать в «topfolder». В вопросе OP этот «префикс» был «папкой», но при необходимости его можно изменить на любую строку. Используя, например, «folder» в качестве префикса, скрипт будет искать папки следующим образом:
но другие папки в "top_folder" будут пропущены, например:
Подпапки «второго уровня», в которых будут выполняться поиск файлов, имеют общий префикс родительского имя-папки, за которым следует «_» (
folder1\folder1_xxx
). Опять же, любые другие папки будут пропущены:Вот пакетный скрипт:
Этот второй пакетный скрипт будет работать аналогичным образом, просматривая ВСЕ подпапки «первого уровня» и перемещая все файлы из всех подпапок «второго уровня» в подпапки «первого уровня». Он не будет соответствовать ни одному из префиксов ни одному из следующих имен.
Измените значение переменной сценария "topfolder", чтобы оно содержало базовую папку для структуры каталогов.
Более простая версия пакетного скрипта без проверки пустых папок и т. Д.:
И, наконец, «минимальный» сценарий без обмена сообщениями и при условии, что вы уже находитесь в нужной «базовой папке»:
И, на случай, если вы ожидаете этого, «один вкладыш» можно запустить из командной строки:
источник
В проводнике (при условии, что здесь Windows) откройте папку 1_2, выберите все файлы, щелкните правой кнопкой мыши и выберите «Переместить в папку ...», выберите «Папка 1» в диалоговом окне; затем удалите folder1_2, если это было ваше намерение.
Повторите вышеуказанное для всех подпапок, которые вы хотите очистить.
Не нужно никаких внешних программ.
источник