移动项目 :磁盘上没有足够的空间



我需要使用PowerShell将文件从一个目录移动到同一硬盘驱动器上的另一个目录。我需要这样做的硬盘驱动器几乎总是在空间的限制上。我的问题是当我尝试使用 cmdletMove-Item时,我收到错误消息"磁盘上没有足够的空间。但是,在Windows资源管理器上使用Ctrl +XCtrl+V时,它可以正常工作。如果我释放硬盘驱动器上的空间,我也可以使用命令Move-Item.

所以,我想知道是否有人可以指导找到一种解决方案,使用 PowerShell "剪切"和"粘贴"文件,该文件不需要磁盘上的更多空间来执行命令?

Get-ChildItem -Path "\10.72.100.203Pending$ticket*" -Recurse -Force |
Move-Item -Destination "\10.72.100.203Completed"

结果:

移动项目 :磁盘上没有足够的空间。 在 C:\script\test2.ps1:66 字符:76 + ...e -力 |移动项目 -目标"\\10.72.100.203\已完成" -强制... +                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 类别信息 : 写入错误: (\\10.72.100.203...Mark 0718-3.VHD:文件信息( [移动项目], + FullQualifiedErrorId : MoveFileInfoItemIOError,Microsoft.PowerShell.Command.MoveItemCommand
Powershell version: PS C:\script> $PSVersionTable 名称值 ----                           ----- PSVersion 5.1.15063.502 PSEdition 桌面 PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...} 内部版本10.0.15063.502 CLRVersion 4.0.30319.42000 WSManStackVersion 3.0 PSRemotingProtocol版本2.3 序列化版本 1.1.0.1

有很多方法可以解决这个问题,但问题是您有多少空间可以容纳该文件夹中的较大文件。 首先对显示最大结果的结果进行排序,然后查看是否有足够的空间来复制两个最大的文件。 你可能那里的空间用完了。 您可能没有足够的空间来复制最大的文件。 如果这样做,请尝试将 move 命令封装在管道之后。 也许直接管道是让它尝试在删除文件之前先移动所有文件。

...| foreach{Move-Item $_ -Destination "your destination folder"}

如果您没有空间,那么您是否有足够的内存来存储最大的文件。 如果是这样,那么您将需要在每个文件的 foreach 循环中花哨,您需要将文件名保存到变量中(如果旧文件夹路径中有子文件夹,则将路径替换为目标的相对路径(。 对于每个文件,您需要将其作为编码"字节"读取。 然后删除原始文件(希望您有备份(。 现在使用编码"字节"将文件写入具有文件名的目标。

您在这里所做的是使用内存来保存文件,同时删除原始文件以腾出空间,然后将其写回新位置。

就个人而言,我想我会使用另一个系统上的空间暂时将文件移动到那里以保留原始文件,然后将其移动到应该去的地方。 如果你的空间那么紧,我会考虑将它们存储在其他地方,直到获得更多空间。

只需使用 cmd.exemove命令即可。

& cmd.exe /C MOVE \10.72.100.203Pending$ticket*" "\10.72.100.203Completed"

最新更新