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

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

epoddubniy 12-07-2021 21:14 2962018

Powershell. Копировать файлы в новую dir, созданную с именем текущей даты
 
Здравствуйте. Помогите пожалуйста реализовать.
Хочу скопировать файлы из директории "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 2962022

Код:

$src = 'C:\1'
$dst = "C:\$(Get-Date -f 'dd.MM.yyyy')"

cpi $src $dst -rec


epoddubniy 13-07-2021 13:46 2962057

Спасибо!

epoddubniy 01-08-2021 21:05 2963373

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

Iska 01-08-2021 21:26 2963379

Ну, например:
Код:

$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 2963416

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"

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

Цитата:

Цитата epoddubniy
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 2963461

Вот так - сработало:

Код:

$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"
    }

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


Время: 07:59.

Время: 07:59.
© OSzone.net 2001-