Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Массовое переименование путей с заменой более старых файлов (http://forum.oszone.net/showthread.php?t=351586)

Shulzzz 22-07-2022 08:51 2989004

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

DJ Mogarych 22-07-2022 13:16 2989029

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 2989033

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 2989035

Цитата:

Цитата Shulzzz
интересует именно перенос »

Для этого достаточно добавить ключ /move в строку с robocopy.


Время: 11:09.

Время: 11:09.
© OSzone.net 2001-