Я пытаюсь переместить все файлы (возможно, несколько разных типов файлов) из одного корневого каталога и всех вложенных папок в корне. В каждой ветви дерева может быть несколько разных уровней подкаталогов, и мне нужно захватить каждый файл на каждом уровне, не зная заранее, сколько уровней может быть. Честно говоря, я еще ничего не пробовал. В прошлом я мог бы написать что-то короткое и приятное на Python, но я хотел бы, чтобы это происходило с помощью сценария входа / выхода из системы в PowerShell, а не делал Python обязательным условием. Я знаю намного меньше, чем я должен о PS; если кто-то может подсказать мне общее направление решения Powershell или чего-то минимально инвазивного, я с радостью проведу любое исследование, необходимое для его осуществления. Мне просто нужно подтолкнуть в правильном направлении. Любая помощь очень ценится; Я знаю, что это очень необычная просьба.
2 ответа
Для этого требуется PowerShell 3:
Get-ChildItem -Recurse -Path C:\SourceFolder -File |
% { Move-Item -WhatIf $_.FullName C:\DestFolder }
Обратите внимание на -WhatIf
. Это предотвратит фактическое выполнение команды перемещения. Вместо этого он покажет в консоли, что он будет делать. Как только вы убедитесь, что он будет делать то, что вы хотите, вы можете удалить -WhatIf
и выполнить его по-настоящему.
Просто сделайте пакетный скрипт (если вы хотите сохранить структуру подкаталогов)
Синтаксис:
move "C:\path to\source folder\" "C:\path to\destination\"
pause
Я включил паузу, чтобы вы могли проверить, был ли он перемещен или нет, удалите его, если хотите, чтобы окно автоматически закрывалось.
Пример (я запустил его в командной строке):
C:\Users\Dev>move "C:\Users\Dev\Desktop\New folder\lol" "C:\Users\Dev\Desktop\Ne
w folder\lel"
1 dir(s) moved.
Если вы не знакомы с пакетными файлами, просто введите блокнот и сохраните как что-нибудь.
Это намного проще, чем powershell, и вы можете поместить скрипт в каталог автозагрузки при каждом входе в систему.