Powershell通配符排除文件名的结尾

时间:2012-10-29 16:17:08

标签: powershell-v2.0

我有一个文件夹,其中包含以下格式的文件,由第三方程序生成。

Database_Server1_tempdb_29_10_2012_00_22_00.pdf Database_Server1_tempdb_28_10_2012_00_21_14.pdf Database_Server1_tempdb_27_10_2012_00_10_00.pdf 等等 等

我想在7天前使用文件dd_mm_yyyy中的dateformat复制其中一个文件并忽略时间戳nn_nn_nn.pdf

因此,如果我作弊并使文件格式化,请使用以前的脚本进行测试 Database_Server1_tempdb_22_10_2012.pdf

以下代码可以正常使用。

$ pastdays = -7

$ pastdate = [datetime] :: Now.AddDays($ pastdays)

$ filename -match“Database_Server1_tempdb_”+ $ pastdate.Day +“”+ $ pastdate.Month +“”+ $ pastdate.Year +“。pdf”

Copy-Item -Path“V:\ Capacity Manager Size reports \ $($ filename)”“\ Server2 \ report_Archive”

任何人都有帮助使它工作,所以我不需要作弊,它只是忽略了dd_mm_yy之后的任何东西来进行匹配。

由于

1 个答案:

答案 0 :(得分:0)

你做错了。您正在尝试猜测名称,而只是从文件夹中获取所有文件并选择匹配的文件,如下所示:

$pastdays = -7
$pastdate = [datetime]::Now.AddDays($pastdays)
$files = Get-ChildItem "V:\Capacity Manager Size reports\"
$filename = ($files | Where-Object {$_.Name -like "Database_Server1_tempdb_" + $pastdate.Day  + "_" + $pastdate.Month + "_" + $pastdate.Year+ "*.pdf"})
Copy-Item -Path $filename.FullName "\Server2\report_Archive"