Имя пользователя:
Пароль:
 

Показать сообщение отдельно

(*.*)


Сообщения: 36574
Благодарности: 6706

Профиль | Сайт | Отправить PM | Цитировать


ownsmir, вы путатесь в показаниях. Сначала речь шла про переименование файлов, теперь про переименование папок.

В общем, как-то так на примере двух папок (не рекурсивно) и переименования файлов

Код: Выделить весь код
$source = "C:\test\source"
$target= "C:\test\target"

dir $source | %{
$file = $_.Name
If (Test-Path $target\$file) {
    $i = 0
    While (Test-Path $target\$file) {
        $i += 1
        $file = $file+$i
		}
	}
 Else {
    New-Item -ItemType File -Path $target\$file -Force -Whatif
	}
Copy-Item -Path $_.FullName -Destination $target\$file -Force -Whatif
}
Для каждого файла в источнике проверяем, есть ли файл с таким именем в целевой папке.
- Если есть, добавляем к расширению файла 1 и снова проверяем наличие уже такого файла. И так до тех пор, пока не избавимся от совпадения.
- Если такого файла нет, создаем его
В конце перезаписываем созданный файл из источника.

До и после скрипта
До
Код: Выделить весь код
[PS <159> C:\…\Scripts] dir $source; dir $target


    Directory: C:\test\source

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a---          30.10.2020    13:14              8 01.txt
-a---          30.10.2020    13:15              8 02.txt
-a---          30.10.2020    13:15              8 03.txt

    Directory: C:\test\target

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a---          30.10.2020    13:09              5 01.txt
-a---          30.10.2020    13:17              5 02.txt
Операция с whatif
Код: Выделить весь код
[PS <160> C:\…\Scripts] .\copy-rename.ps1
What if: Performing the operation "Copy File" on target "Item: C:\test\source\01.txt Destination: C:\test\target\01.txt1".
What if: Performing the operation "Copy File" on target "Item: C:\test\source\02.txt Destination: C:\test\target\02.txt1".
What if: Performing the operation "Create File" on target "Destination: C:\test\target\03.txt".
What if: Performing the operation "Copy File" on target "Item: C:\test\source\03.txt Destination: C:\test\target\03.txt".
После (операция без whatif)
Код: Выделить весь код
[PS <162> C:\…\Scripts] dir $source; dir $target


    Directory: C:\test\source

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a---          30.10.2020    13:14              8 01.txt
-a---          30.10.2020    13:15              8 02.txt
-a---          30.10.2020    13:15              8 03.txt

    Directory: C:\test\target

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a---          30.10.2020    13:09              5 01.txt
-a---          30.10.2020    13:14              8 01.txt1
-a---          30.10.2020    13:17              5 02.txt
-a---          30.10.2020    13:15              8 02.txt1
-a---          30.10.2020    13:15              8 03.txt

-------
Канал Windows 11, etc | Чат @winsiders

Это сообщение посчитали полезным следующие участники:

Отправлено: 13:22, 30-10-2020 | #4