移动具有相同名称但扩展名不同的文件

时间:2016-04-17 09:59:34

标签: powershell

我正在尝试使用here中的脚本将我已转换为mp4的avi文件移回原始文件夹。一切似乎都运行正常,脚本会尝试将文件移动到正确的位置(见下文),但不会移动mp4文件。

  

如果:执行目标“项目:Z:\ AVI \ MVI_4965.mp4目的地:Z:\ Pictures \ 2011 \ 04_21_11_Bergen \ MVI_4965.mp4”中的“移动文件”操作。

所有文件都位于我的Z:NAS驱动器上,我已从PS Z:\>开始修改脚本以解释此问题(见下文)。

# Create a hashtable with key = file basename and value = containing directory
$mediaFiles = @{}
Get-ChildItem -Recurse .\Pictures | ?{!$_.PsIsContainer} | ForEach-Object {
  $mediaFiles[$_.BaseName] = $_.DirectoryName
}

# Look through lost files and if the lost file exists in the hash, then move it
Get-ChildItem -Recurse .\AVI | ?{!$_.PsIsContainer} | ForEach-Object {
  if ($mediaFiles.ContainsKey($_.BaseName)) {
    Move-Item -whatif $_.FullName $mediaFiles[$_.BaseName]
  }
}

有什么想法可以阻止正在移动的文件或如何纠正?

1 个答案:

答案 0 :(得分:3)

这就是-WhatIf的重点。它只是说明了如果不实际执行它会做什么,这样你就可以先验证脚本了。从Move-Item命令中删除它。