我试图将昨天的日期值作为参数传递给我放置在files.txt中的文件名列表。文件名带有时间戳,我需要将昨天的文件复制到网络共享驱动器。我已经将$ odate作为日期传递到files.txt中的文件名中,我需要将$ odate替换为昨天的日期,并每天将文件从1个网络共享驱动器复制到另一个驱动器。
我尝试在每行的文件名中传递参数($ odate),并按照下面的代码片段进行定义
foreach($line in Get-Content .\Desktop\files.txt){
$odate = (get-date (get-date).AddDays(-1) -UFormat "%Y%m%d")
echo $line}
PB724_SSNTXN_D110A01_FPRS_ $ odate * .DAT.gz PB724_SSNTXN_D110A02_FKEN_ $ odate * .DAT.gz
我正在获取文件名列表,就像我在files.txt中输入的那样,而$ odate不会被替换为昨天的日期。
答案 0 :(得分:0)
您可以这样做:
Get-Content -Path .\Desktop\files.txt |
ForEach-Object {$odate = (Get-Date).AddDays(-1).ToString('yyyyMMdd')}{
$ExecutionContext.InvokeCommand.ExpandString($_)
}
因此,对于包含内容的文件:
PB724_SSNTXN_D110A01_FPRS_$odate.DAT.gz
PB724_SSNTXN_D110A02_FKEN_$odate.DAT.gz
您将获得输出:
PB724_SSNTXN_D110A01_FPRS_20190617.DAT.gz
PB724_SSNTXN_D110A02_FKEN_20190617.DAT.gz