Лучший отвечающий
powershell copy-item

Вопрос
-
Здравствуйте
есть две папки.а папке 1 лежит файл example (2), в папке 2 лежал файлы example (1) example (2), каким образом можно копировать файл exemple (2) в папку 2,с именем example (3),но не ренеймом, если имена двух файлов совпадают ,при копировании назначить ему следующее порядковое числоспасибо за ответы
- Изменено last_kpojl 23 апреля 2015 г. 20:28
23 апреля 2015 г. 20:28
Ответы
-
[int]$i = $matches[1] - получаем число в скобках
$n = $_.basename -replace [regex]::escape($matches[0]),"($i)" - заменяем число в скобках + 1
PS 1 > "exemple (2)" -match "\((\d+)\)" True PS 2 > $matches Name Value ---- ----- 1 2 0 (2) PS 3 > $matches[1] 2 PS 4 > [int]$i = $matches[1] PS 5 > $i++ PS 6 > "exemple (2)" -replace [regex]::escape($matches[0]),"($i)" exemple (3)
- Предложено в качестве ответа Vector BCOModerator 28 апреля 2015 г. 18:00
- Помечено в качестве ответа last_kpojl 28 апреля 2015 г. 18:26
28 апреля 2015 г. 17:06Отвечающий -
$folder = "C:\Folder\" "C:\Folder1\example (2)","C:\Folder2\example (1)","C:\Folder2\example (2)" | Get-ChildItem | Copy-Item -Destination { if ($_.basename -match "\((\d+)\)") { [int]$i = $matches[1] $new = $folder + $_.basename + $_.Extension while(Test-Path $new){ $i++ $n = $_.basename -replace [regex]::escape($matches[0]),"($i)" $new = $folder + $n + $_.Extension } $new } }
- Помечено в качестве ответа last_kpojl 24 апреля 2015 г. 7:12
24 апреля 2015 г. 6:40Отвечающий -
http://www.powershelladmin.com/wiki/Powershell_regular_expressions
PS > "exemple #2" -match "#(\d+)" True PS > $matches Name Value ---- ----- 1 2 0 #2 PS > $matches[1] 2 PS > PS > "exemple #2" -match "#(?<chislo>\d+)" True PS > $matches.chislo 2 PS > "exemple #2" -match "(?<name>exemple) (?<reshetka>#)(?<chislo>\d+)" True PS > $matches Name Value ---- ----- reshetka # name exemple chislo 2 0 exemple #2 PS > $matches.name exemple PS > $matches.reshetka # PS > $matches.chislo 2
- Помечено в качестве ответа last_kpojl 29 апреля 2015 г. 14:54
29 апреля 2015 г. 13:31Отвечающий
Все ответы
-
$folder = "C:\Folder\" "C:\Folder1\example (2)","C:\Folder2\example (1)","C:\Folder2\example (2)" | Get-ChildItem | Copy-Item -Destination { if ($_.basename -match "\((\d+)\)") { [int]$i = $matches[1] $new = $folder + $_.basename + $_.Extension while(Test-Path $new){ $i++ $n = $_.basename -replace [regex]::escape($matches[0]),"($i)" $new = $folder + $n + $_.Extension } $new } }
- Помечено в качестве ответа last_kpojl 24 апреля 2015 г. 7:12
24 апреля 2015 г. 6:40Отвечающий -
не могли бы вы пояснить что значит вот эти строчки
[int]$i = $matches[1]
$n = $_.basename -replace [regex]::escape($matches[0]),"($i)"
28 апреля 2015 г. 16:57 -
[int]$i = $matches[1] - получаем число в скобках
$n = $_.basename -replace [regex]::escape($matches[0]),"($i)" - заменяем число в скобках + 1
PS 1 > "exemple (2)" -match "\((\d+)\)" True PS 2 > $matches Name Value ---- ----- 1 2 0 (2) PS 3 > $matches[1] 2 PS 4 > [int]$i = $matches[1] PS 5 > $i++ PS 6 > "exemple (2)" -replace [regex]::escape($matches[0]),"($i)" exemple (3)
- Предложено в качестве ответа Vector BCOModerator 28 апреля 2015 г. 18:00
- Помечено в качестве ответа last_kpojl 28 апреля 2015 г. 18:26
28 апреля 2015 г. 17:06Отвечающий -
ясно. не мог понять что за $matches.спасибо28 апреля 2015 г. 18:27
-
PS C:\Windows\system32> "exemple #2" -match "#\d+" $matches True Name Value ---- ----- 0 #2
почему в данном примере name[1] не равен 2, как у вас
PS 1 > "exemple (2)" -match "\((\d+)\)" True PS 2 > $matches Name Value ---- ----- 1 2 0 (2)
29 апреля 2015 г. 13:19 -
http://www.powershelladmin.com/wiki/Powershell_regular_expressions
PS > "exemple #2" -match "#(\d+)" True PS > $matches Name Value ---- ----- 1 2 0 #2 PS > $matches[1] 2 PS > PS > "exemple #2" -match "#(?<chislo>\d+)" True PS > $matches.chislo 2 PS > "exemple #2" -match "(?<name>exemple) (?<reshetka>#)(?<chislo>\d+)" True PS > $matches Name Value ---- ----- reshetka # name exemple chislo 2 0 exemple #2 PS > $matches.name exemple PS > $matches.reshetka # PS > $matches.chislo 2
- Помечено в качестве ответа last_kpojl 29 апреля 2015 г. 14:54
29 апреля 2015 г. 13:31Отвечающий