PowerShell Move-Item 无法移动文件

PowerShell Move-Item failing to move files

我正在尝试自动将照片从拖放文件夹移动到托管文件夹,我正在 运行 以下脚本。

问题是,它没有移动任何文件,而且我没有看到任何警告。我启用了 -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

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