将文件复制到备份位置并使用Lastwritetime重命名

问题描述 投票:0回答:1

我正在尝试编写一个脚本,将文件从原始位置复制到备份位置。复制到备份位置后,我希望重命名的文件包含名称中的lastwritetime。

例如:\\ server1 \ C $ \ Logs \ Logfile-1.txt(最后写入2017年12月20日星期三上午5:00:27)复制到\\ backupserver \ c $ \ LogBackups \ Server1Logfile20171220050027.txt

生成日志文件的程序在达到一定大小时会用-1,-2,-3等迭代它们。

我有一个csv,其中包含以下信息

OldFilePath,NewFilePath,NewFileName
\\server1\c$\Log\LogFile-*.txt,\\backupserver\c$\LogBackups\,Server1LogFile
\\server2\c$\Log\LogFile-*.txt,\\backupserver\c$\LogBackups\,Server2LogFile
\\server3\c$\Log\LogFile-*.txt,\\backupserver\c$\LogBackups\,Server3LogFile

这是我到目前为止的脚本。

import-csv \\backupserver\c$\scripts\test.csv | foreach-object {
$FilePath = $_.OldFilePath
$NewFilePath = $_.NewFilePath
$NewFileName = $_.NewFileName

copy-item -path $_.OldFilePath -Destination "$NewFilePath$NewFileName$LastWriteTime.txt"
}

我尝试了以下命令来设置$ LastWriteTime变量,到目前为止,还没能正确格式化输出。

$LastWriteTime = Get-ItemPropertyValue -path \\server1\C$\Logfile-1.txt -name LastWriteTime | 
Format-list Year,Month,Day,Hour,Minute,Second

&

$LastWriteTime = Get-ChildItem $OldFilePath | select LastWriteTime

任何指导我正确方向的帮助将不胜感激!

powershell
1个回答
1
投票

假设你有一个DateTime $ dt,你可以这样格式化:

$dt = [DateTime]::Parse((get-item D:\temp\grinder.jpg).LastWriteTime)
$fmt = "{0:N4}{0:N2}{0:N2}{0:N2}{0:N2}{0:N2}" -f $dt.Year, $dt.Month, $dt.Day, $dt.Hour, $dt.Minute, $dt.Second

这使:

20171220110535

对于

Wednesday, December 20, 2017 11:05:35 AM

由此,您应该能够在其余代码上取得进展。

© www.soinside.com 2019 - 2024. All rights reserved.