我的脚本需要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,重命名