Войти

Показать полную графическую версию : [решено] Массовое переименование путей с заменой более старых файлов


Shulzzz
22-07-2022, 08:51
Добрый день, на локальном разделе имеется множество папок вида "H:\0000055\0000055\documents\куски разных папок", возникли они после восстановления и распаковки удаленных архивов с бэкапами папки documents, подскажите пожалуйста, как теперь найти все папки содержащие в себе папку documents и из них всех эту папку documents перенести в корень того же раздела, при этом должны оставаться только свежие копии файлов в этой папке и ее подпапках

DJ Mogarych
22-07-2022, 13:16
Powershell:

$disk = "H:"
$folder = "documents"

if (!(test-path "$disk\$folder")) {mkdir "$disk\$folder"}

(dir "$disk\*" -Recurse |? {$_.psiscontainer -and $_.fullname -match "\\$folder$"}).FullName |% {
robocopy "$_" "$disk\$folder" /e /xo
}


Здесь не перенос, а копирование, во избежание необратимых действий.

Shulzzz
22-07-2022, 14:01
DJ Mogarych, Спасибо, не смог дождаться ответа, решил сам вот таким способом, интересует именно перенос, т.к. инфы 1.5 тб, и все это копировать займет достаточно много времени и места
@echo off
chcp 1251
SetLocal EnableExtensions

::Путь к папке, в которой ищем подкаталог с нужным именем
set dirPath=H:\
:: имя искомого подкаталога, родительский каталог которого переносим
set "dirtoDel=documents"

echo "%dirtoDel%"

for /r "%dirPath%" %%F in (.) do if "%%~nxF"=="%dirtoDel%" ROBOCOPY "%%~dpF%dirtoDel%" "H:\%dirtoDel%" /E /ZB /DCOPY:T /TIMFIX /SL /XJ /R:4 /W:15
pause

DJ Mogarych
22-07-2022, 14:44
интересует именно перенос »
Для этого достаточно добавить ключ /move в строку с robocopy.




© OSzone.net 2001-2012