我需要使用PowerShell将文件从一个目录移动到同一个硬盘上的另一个目录.我需要做的硬盘几乎总是在空间的限制.我的问题是当我尝试使用cmdlet时Move-Item,我收到错误消息"磁盘上没有足够的空间.".但是,在Windows资源管理器上使用Ctrl+ X和Ctrl+时V,它可以正常工作.如果我释放硬盘驱动器上的空间,我也可以使用该命令Move-Item.
所以,我想知道是否有人可以指导找到使用PowerShell"剪切"和"粘贴"文件的解决方案,而不需要磁盘上的更多空间来执行命令?
Get-ChildItem -Path "\\10.72.100.203\Pending\$ticket*" -Recurse -Force |
Move-Item -Destination "\\10.72.100.203\Completed"
Run Code Online (Sandbox Code Playgroud)
结果:
Move-Item : There is not enough space on the disk.
At C:\script\test2.ps1:66 char:76
+ ... e -Force | Move-Item -Destination "\\10.72.100.203\Completed" -Force ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : WriteError: (\\10.72.100.203...Mark 0718-3.VHD:FileInfo) [Move-Item],
+ FullyQualifiedErrorId : MoveFileInfoItemIOError,Microsoft.PowerShell.Commands.MoveItemCommand
Powershell version:
PS C:\script> $PSVersionTable
Name Value
---- -----
PSVersion 5.1.15063.502
PSEdition Desktop
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
BuildVersion 10.0.15063.502
CLRVersion 4.0.30319.42000
WSManStackVersion 3.0
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
小智 0
有很多方法可以解决此问题,但问题是您为该文件夹中的较大文件留下了多少空间。对显示最大的结果进行排序,看看是否有足够的空间来保存两个最大文件的副本。你可能已经没有空间了。您可能没有足够的空间来复制最大的文件。如果您这样做,请尝试将移动命令封装在 foreach 中的管道之后。也许直接通过管道让它尝试先移动所有文件,然后再删除它们。
...| foreach{Move-Item $_ -Destination "your destination folder"}
Run Code Online (Sandbox Code Playgroud)
如果您没有足够的空间,那么您是否有足够的内存来容纳最大的文件。如果是这样,那么您将需要在每个文件的 foreach 循环中花哨,您需要将文件名保存到变量中(如果旧文件夹路径中有子文件夹,则将路径替换为目标的相对路径)。对于每个文件,您需要将其读取为编码“字节”。然后删除原始文件(希望有备份)。现在使用编码“byte”将文件写入带有文件名的目标。
您在这里所做的就是使用内存来保存文件,同时删除原始文件以腾出空间,然后将其写回新位置。
就我个人而言,我认为我会使用另一个系统上的空间暂时将文件移动到那里保存,同时删除原始文件,然后将其移动到它应该去的地方。如果你的空间如此紧张,我会考虑将它们存储在其他地方,直到可以获得更多空间。
| 归档时间: |
|
| 查看次数: |
763 次 |
| 最近记录: |