我已经按顺序列出了100多个文件夹。
文件夹1 资料夹2 资料夹3 等等
在每个文件夹中都包含顺序排列的图像
001.jpg 002.jpg 003.jpg 等等
最终,我试图将这100多个文件夹组合到一个大文件夹中,并根据它们的顺序排列其中的所有图像,并将每个图像从000000001-99999999重命名。
我是编码的完整初学者。我尝试使用批量重命名实用工具,但无法将多个文件夹中的所有图像组合到一个文件夹中。
感谢您的帮助。
谢谢!
答案 0 :(得分:0)
这是满足您的要求所需的最少脚本。没有错误检查。
根据计算机的需要设置$topSourceFolderName
和$targetFolderName
我假设您的100多个文件夹,文件夹1文件夹2文件夹3等,都存在于单个父文件夹($topSourceFolderName
)下
我假设单个父文件夹以及该单个父文件夹下的所有100+个文件夹仅包含jpg文件
我认为您的“一个大文件夹”($targetFolderName
)不在单个父文件夹($topSourceFolderName
)之下的任何地方
我假定PowerShell脚本存储在$topSourceFolderName
或$targetFolderName
以外的文件夹中
如有任何疑问,请发送电子邮件至william.s.charlton@outlook.com
在我的示例中,PowerShell脚本存储在 c:\ temp \ bulkConsolidate.ps1
C:\ Temp \ massiveFolder是目标文件夹。最初是空的。
C:\ Temp \ topFolder \ Folder 1具有001.jpg和002.jpg
C:\ Temp \ topFolder \ Folder 2具有001.jpg和002.jpg
运行脚本后,C:\ Temp \ massiveFolder具有00000001.jpg, 00000002.jpg,00000003.jpg和00000004.jpg
00000001.jpg是从C:\ Temp \ topFolder \ Folder 1 \ 001.jpg复制的
00000002.jpg是从C:\ Temp \ topFolder \ Folder 1 \ 002.jpg复制的
00000003.jpg是从C:\ Temp \ topFolder \ Folder 2 \ 001.jpg复制的
00000004.jpg是从C:\ Temp \ topFolder \ Folder 2 \ 002.jpg复制的
cls
$topSourceFolderName = "C:\Temp\topFolder"
$targetFolderName = "C:\Temp\massiveFolder"
#define empty PowerShell array
$fullyQualifiedJpgSourceFileNameList = @()
#get fully-qualified file name (FullName) for all files in and below $topFolderNmae
$fullyQualifiedJpgSourceFileNameList = @((Get-ChildItem -recurse -LiteralPath $topSourceFolderName -File) | Select -Property FullName | sort -Property FullName)
#Copy each file to the single target directory, renaming each file as it is copied
$targetFileNameIndex = 0
foreach ($fullyQualifiedJpgSourceFileName in $fullyQualifiedJpgSourceFileNameList)
{
#create fully qualified target file name for this jpg file
#format $targetFileNameIndex so it has 8 leading digits
#https://devblogs.microsoft.com/scripting/hey-scripting-guy-how-can-i-use-leading-zeroes-when-displaying-a-value-in-windows-powershell/
$fullyQualifiedJpgTargetFileName = ($targetFolderName + "\" + $targetFileNameIndex.ToString("00000000") + ".jpg")
#increment index for next jpg file copy
$targetFileNameIndex = ($targetFileNameIndex + 1);
Copy-Item -LiteralPath $fullyQualifiedJpgSourceFileName.FullName -Destination $fullyQualifiedJpgTargetFileName -Force
}