线程输出move-item verbose到file

时间:2017-08-11 12:42:39

标签: multithreading powershell output

我的脚本需要2个问题的帮助:

我有一个脚本可以将所有子文件夹位置的所有图片(如果有的话)移动到“PRO”文件夹下的新子文件夹。 问题1: 我已经在move-item上启用了-verbose命令,希望将其输出到log.txt文件中,但是由于线程它给了我错误“文件已经被另一个进程使用了​​”。

问题2: 要么我在移动项目上打开-Force命令,并且当有相同名称的文件时我冒着丢失图片的风险,或者我找到了一些方法来重命名它们....

我有什么安慰:

我想要移动的扩展程序:

$movefiles_foto = @("*.tif", "*.tiff","*.gif","*.jpeg","*.jpg","*.jif","*.jfif", "*.jp2","*.jpx", "*.j2k", "*.j2c","*.fpx","*.pcd","*.png","*.JPEG")

移动的scriptblock:

$movefilesfoto = {
Param($extension,$loc)
$archive = "FOTO"
Get-ChildItem -Path $loc -Recurse -File -Filter $extension -Exclude $archive | ForEach-Object {
if ($_.FullName.IndexOf('\PRO\') -gt 0) {
    $Destination = Join-Path -Path $_.FullName.Substring(0,$_.FullName.IndexOf('\PRO\') + 5) -ChildPath 'FOTO';
   if (-not (Test-Path -LiteralPath $Destination -PathType Container)) {
    New-Item -Type Directory -Path $Destination | Out-Null
}        
    $_ | Move-Item -Destination $Destination -Verbose;

} else {throw ("\PRO\ path not found in '$($_.FullName)'");}}}

启动工作部分:

write-host "move foto"
foreach ($foto_file in $movefiles_foto) 
{   
Start-Job -ScriptBlock $movefilesfoto -ArgumentList $foto_file, $location      
}
Get-Job | Wait-Job | Receive-Job | Out-File -FilePath $location\log.txt

如果这个问题一次出现太多问题,我的意见不明确,但希望避免不得不提出可能与之相关的3个单独问题。

提前感谢任何输入

更新

详细输出到文件解决了,所以划伤问题1! 声称它将文件从同一文件夹移动到同一文件夹的详细信息消失了,似乎无法再现。因此,问题2,重命名

0 个答案:

没有答案