我尝试自动将照片从drop文件夹移动到托管文件夹,并且我正在运行以下脚本。
问题是,它没有移动任何文件,而且我没有看到任何警告。我启用了-force
选项,但它仍然没有移动任何内容。 Powershell设置为允许远程执行。
# Preq: Copy all files to $ImportPath`n
$ImportPath = "D:\Photo_Imports"
$JPGDest = "D:\Photos\ALL_PHOTOS\JPG"
$RAWDest = "D:\Photos\ALL_PHOTOS\RAW"
$MOVDest = "D:\Photos\ALL_PHOTOS\Movies"
Write-Host "About to run the script, hold on!" `n
Write-Host "File summary"
Get-Childitem $ImportPath -Recurse | where { -not $_.PSIsContainer } | group Extension -NoElement | sort count -desc
# If $Path exists, get a list of all children (files/folders) and move each one to the $Dest folders
if(Test-Path $ImportPath)
{
try
{
Get-ChildItem -Path $ImportPath -Include *.JPG -Verbose | Move-Item -Destination $JPGDest -Force
Get-ChildItem -Path $ImportPath -Include *.CR2 -Verbose | Move-Item -Destination $RAWDest -Force
Get-ChildItem -Path $ImportPath -Include *.MOV -Verbose | Move-Item -Destination $MOVDest -Force
}
catch
{
"Something broke, try manually"
}
}
Write-Host `n
Write-Host " FINISHED ! " `n
答案 0 :(得分:0)
如上所述in the documentation, -Include 参数仅在指定了 -Recurse 时才有效。
所以你需要添加 -Recurse 参数,如下所示:
Get-ChildItem -Path $ImportPath -Include *.JPG -Recurse -Verbose | Move-Item -Destination $JPGDest -Force
Get-ChildItem -Path $ImportPath -Include *.CR2 -Recurse -Verbose | Move-Item -Destination $RAWDest -Force
Get-ChildItem -Path $ImportPath -Include *.MOV -Recurse -Verbose | Move-Item -Destination $MOVDest -Force
或者,如果您不想进行递归文件搜索,请不要使用 -Recurse 并将 -Include 替换为 - 过滤,如下:
Get-ChildItem -Path $ImportPath -Filter "*.JPG" -Verbose | Move-Item -Destination $JPGDest -Force
Get-ChildItem -Path $ImportPath -Filter "*.CR2" -Verbose | Move-Item -Destination $RAWDest -Force
Get-ChildItem -Path $ImportPath -Filter "*.MOV" -Verbose | Move-Item -Destination $MOVDest -Force
对于非递归搜索,您也可以这样做:
Get-ChildItem -Path $ImportPath\*.JPG -Verbose
Get-ChildItem -Path $ImportPath\*.CR2 -Verbose
Get-ChildItem -Path $ImportPath\*.MOV -Verbose