PDA

Показать полную графическую версию : [решено] Powershell. Копировать файлы в новую dir, созданную с именем текущей даты


epoddubniy
12-07-2021, 21:14
Здравствуйте. Помогите пожалуйста реализовать.
Хочу скопировать файлы из директории "E:\share\test\1" в "E:\share\test\(значение текущей даты)"

$data = get-date -format "dd.MM.yyy"
copy-item E:\share\test\1 "E:\share\test" + "\" + $data

alpap
12-07-2021, 21:54
$src = 'C:\1'
$dst = "C:\$(Get-Date -f 'dd.MM.yyyy')"

cpi $src $dst -rec

epoddubniy
13-07-2021, 13:46
Спасибо!

epoddubniy
01-08-2021, 21:05
alpap, подскажите пожалуйста, как правильно написать код, если нужно скопировать файлы
из "E:\share\test\1" в "E:\share\test\2" и каждому скопированному файлу к имени файла добавить текущую дату?

Iska
01-08-2021, 21:26
Ну, например:
$sSourceFolder = 'E:\share\test\1'
$sDestFolder = 'E:\share\test\2'

$sCurrDate = Get-Date -Format 'yyyy.MM.dd'

Get-ChildItem -Path "$sSourceFolder\*" -File -Recurse |`
ForEach-Object -Process {
Write-Host "$($_.FullName)`t→`t$sDestFolder\$($sCurrDate)_$($_.Name)"
Copy-Item -Path $_.FullName -Destination "$sDestFolder\$($sCurrDate)_$($_.Name)"
}

epoddubniy
02-08-2021, 09:43
Iska, скажите пожалуйста, а если код - такой:
$Data=Get-Date -Format "MM.dd.yyyy"
Get-ChildItem "E:\share\test\1" -Recurse | where-object {$_.creationtime -lt (get-date).date.adddays(1) -and $_.creationtime -ge (get-date).date.adddays(0)} | copy-item -Destination "E:\share\test\2\(имя файла)_$Data.adi"

что и где нужно поменять, чтобы получить работающий код? (и, по возможности, без сохранения пути в переменную)

Iska, скажите пожалуйста, а если код - такой:
Код:
$Data=Get-Date -Format "MM.dd.yyyy"
Get-ChildItem "E:\share\test\1" -Recurse | where-object {$_.creationtime -lt (get-date).date.adddays(1) -and $_.creationtime -ge (get-date).date.adddays(0)} | copy-item -Destination "E:\share\test\2\(имя файла)_$Data.adi"
что и где нужно поменять, чтобы получить работающий код? (и, по возможности, без сохранения пути в переменную) »
чтобы дата была в конце файла.

Попробовал, вот такой вариант Вашего кода:
$Data=Get-Date -Format "MM.dd.yyyy"
Get-ChildItem "E:\share\test\1" -Recurse | where-object {$_.creationtime -lt (get-date).date.adddays(1) -and $_.creationtime -ge (get-date).date.adddays(0)} | `ForEach-Object -Process {
Write-Host "$($_.FullName)`t→`E:\share\test\2\$($Data)_$($_.Name)"
Copy-Item -Path $_.FullName -Destination "E:\share\test\2\$($_.Name)_$Data.adi"
}


все получилось как надо, кроме вот этого (жирным шрифтом выделил):
Archive.adi_08.02.2021.adi

Файл Archive.adi попал в отбор, скопировался, но в середине имени - расширение файла

epoddubniy
02-08-2021, 16:18
Вот так - сработало:

$Data=Get-Date -Format "dd.MM.yyyy"
Get-ChildItem "E:\share\test\1" -Recurse | where-object {$_.creationtime -lt (get-date).date.adddays(1) -and $_.creationtime -ge (get-date).date.adddays(0)} | `ForEach-Object -Process {
Write-Host "$($_.FullName)`t→`E:\share\test\2\$($Data)_$($_.BaseName)"
Copy-Item -Path $_.FullName -Destination "E:\share\test\2\$($_.BaseName)_$Data.adi"
}

Всем еще раз Спасибо!




© OSzone.net 2001-2012