У меня есть файлы, которые хранятся в формате
C:\Users\xx\test powershell script\studyID\number\filenamedfolder\example.jpg
Требуемый вывод:
studyID_number_1
# последняя цифра должна быть последовательно пронумерована для каждого экземпляра jpgв «папке с именем файла».
Я использовал код, указанный в предыдущих ответах, для поиска, переименования и копирования файлов в корневой каталог.
Я использую Windows 10 и Powershell:
Major Minor Build Revision
----- ----- ----- --------
5 1 15063 1478
Get-childitem "C:\Users\xx\test powershell script\*" -include *.jpg -recurse |% {
$nextName = Join-Path -Path 'C:\Users\xx\test powershell script\*' -ChildPath $_.name
while(Test-Path -Path $nextName)
{
$nextName = Join-Path "C:\Users\xx\test powershell script" ($_.BaseName + "_$num" + $_.Extension)
$num+=1
}
$ParentOjbect =$_.Directory
$Parent =$ParentOjbect.Name
$GrandParent = $ParentOjbect.Parent
$GreatGran = $GrandParent.Parent
$Extension = $_.Extension
$countRef = [ref] 0
Copy-item $_ -Destination (Join-Path "C:\Users\xx\test powershell script" ('{0}_{1}_{2}{3}' -f $GrandParent,$GreatGran,++$countRef.Value,$Extension))
}
Я пытался использовать код для последовательного именования файлов, но мой код не называет файлы последовательно, если существует более одного jpgв «папке с именем файла».Вместо этого только один jpg копируется и переименовывается в корневую папку.
Я никогда не кодировал PowerShell и не уверен, что сделал неправильно.Я не могу найти существующий ответ.Кто-нибудь может предложить, пожалуйста, корректировку, чтобы это работало?