2017-08-21 30 views
7

PowerShellを使用して、同じハードドライブ上のあるディレクトリから別のディレクトリにファイルを移動する必要があります。私がそれを行う必要があるハードドライブは、ほとんど常にスペースの限界にあります。私の問題は、コマンドレットMove-Itemを使用しようとすると、「ディスクに十分な領域がありません」というエラーメッセージが表示されます。 WindowsエクスプローラでCtrl +VはCtrl +Xを使用している場合しかし、それが正常に動作します。私がハードドライブの空き容量を空けると、コマンドMove-Itemを使用することもできます。Move-Item:ディスクに十分なスペースがありません

PowerShellを使用してファイルを「カット」して「貼り付け」、ディスク上にこのコマンドを実行するためのスペースを必要としない解決策を見つける手引きがありますか?

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

結果:

 
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

move.exeコマンドの使用はどうですか。 'Move」は' Move-Item'コマンドレットのエイリアスであるため、PowerShellでは動作しません@lit 10.72.100.203 \ Pending \ $ ticket * "" \\ 10.72.100.203 \ Completed " – lit

+0

@lit今は彼のために失敗している。たぶん '[System.Io.FileInfo] .MoveTo()'メソッドなどを使用しています。 'Get-ChildItem -Path"を試してください\\ 10.72.100.203 \ Pending \ $ ticket * "-Recurse -Force | ForEach {$ _。MoveTo( "\\ 10.72.100.203 \ Completed \ $($ _。Name)"} ' – TheMadTechnician

+0

@TheMadTechnician - OPのシステムに何か問題がないのだろうか。 – lit

答えて

0

これについて移動する多くの方法がありますが、質問は、あなたがそのフォルダ内の大きなファイルのために残されていないどのくらいのスペースです。最初に最大の結果をソートし、最大のファイルを2つコピーできる十分なスペースがあるかどうかを確認します。あなたはそこの部屋を使い果たしているかもしれません。最大のファイルをコピーするのに十分なスペースがないかもしれません。そうしたら、パイプの後にforeachでmoveコマンドをカプセル化してみてください。たぶん、直接パイピングすると、ファイルを削除する前にすべてのファイルを最初に移動しようとしています。

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

あなたが部屋を持っていない場合、あなたが最大のファイルのための十分なRAMを持っています。そうであれば、各ファイルのforeachループでファンシーにする必要があります。ファイル名を変数に保存する必要があります(古いフォルダパスにサブフォルダがある場合、パスを相対パスで置き換えてください)。 各ファイルについて、 "バイト"をエンコードして読み込む必要があります。その後、オリジナルを削除します(バックアップがあることを願ってください)。 ファイル名の付いたファイルを "byte"エンコードで書き出します。

ここでは、メモリを使用してファイルを保持しながら、元のファイルを削除してスペースを確保し、新しい場所に書き戻します。

個人的には、別のシステム上のスペースを使用して一時的にファイルを移動し、元のファイルを削除した後にそのファイルを一時的に移動し、次に移動する場所に移動します。宇宙でそれがきついのであれば、より多くのスペースを得ることができるまで他の場所に保管することを検討します。

0

cmd.exe moveコマンドを使用してください。

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

残念ながら、このコマンドで「ディスクに十分なスペースがありません」と同じメッセージエラーが表示されます。 – FlCo

関連する問題