这对我来说不起作用,为什么?这里正确的分隔符是什么?
这个想法来自于这个问题: 如何让 get-childitem 过滤多种文件类型?
$Jetzt = Get-Date
$Alterung = "14"
$Cache = "D:\SCANS\"
$Aenderung = $Jetzt.AddDays(-$Alterung)
$Files = Get-Childitem $Cache -Force -Include ('*.docx', '*.pdf') | Where {$_.LastWriteTime -le "$Aenderung"}
""
"Alle Dateien aelter als $Alterung_DIR Tage werden geloescht."
""
foreach ($File in $Files)
{
if ($File -ne $NULL)
{
"Am $Jetzt GELOESCHT--> $File"
Remove-Item $File.FullName -Force -recurse | out-NULL
}
else
{
"Keine Datei geloescht!"
}
}
""
"Skriptende"
输出为:
Alle Dateien aelter als 14 Tage werden geloescht.
Keine Datei geloescht!
Skriptende
答案1
这里需要修复一些问题。
- 参数
-Include
要求您也使用-Path
参数。从Get-Help Get-ChildItem -full
,
“此参数的值限定了 Path 参数。请输入路径元素或模式,例如‘*.txt’。允许使用通配符。”
$Cache
应以星号结尾。更多来自Get-Help Get-ChildItem -full
,
“仅当命令包含 Recurse 参数或路径指向目录内容时,Include 参数才有效,例如 C:\Windows*,其中通配符指定 C:\Windows 目录的内容。”
- 这些扩展名不包含任何空格或特殊字符,因此不需要用括号或单引号括起来。
您的更改应该是,
$Files = Get-Childitem -Path $Cache -Force -Include *.docx, *.pdf
$Cache = "D:\SCANS\*"
if ($File -ne $NULL)
不相关,但用替代也可能更好if (!$File)
。