我试图只将特定的文件类型(例如 .txt, .fehler)移动到另一个目录。我想将上次修改日期的文件分成单独的文件夹(按年份)。如果目录不在那里,它应该创建该文件夹。如果我没有过滤文件类型,以下代码可以正常工作。我需要做什么才能正确过滤? 到目前为止,这是我的代码:
$path = "H:\Downloads\tmp\source\"
$targetDir = "H:\Downloads\tmp\dst\"
Foreach($file in (Get-ChildItem $path -Include *.txt,*.fehler))
{
$year = $file.LastWriteTime.Year
$pastePath = $targetDir + $year.ToString()
if(-not (Test-Path $pastePath ) -and ($year.ToString().Length -eq 4))
{
md $pastePath
}
$source = $path + $file
Move-Item $source $pastePath -Force
}
答案 0 :(得分:0)
将您的扩展名放在引号中,
像这样:
Foreach($file in (Get-ChildItem $path -include "*.txt","*.fehler"))
答案 1 :(得分:0)
我仍然不知道为什么过滤器不起作用但这对我有用:
$path = "H:\Downloads\tmp\source\"
$targetDir = "H:\Downloads\tmp\dst\"
Foreach($file in (Get-ChildItem $path | Where-Object {$_.Extension -match ".txt" -or ".fehler" } ))
{
$year = $file.LastWriteTime.Year
$pastePath = $targetDir + $year.ToString()
if(-not (Test-Path $pastePath ) -and ($year.ToString().Length -eq 4))
{
md $pastePath
}
$source = $path + $file
Robocopy.exe $path $pastePath $file /MOV
<#Move-Item $source $pastePath -Force -Verbose#>
}