首先,在设置根目录后,您需要获取所有以“films”命名的顶级目录列表。
Set-Location -Path "Your directory path here"
$Films = Get-ChildItem -Directory
完成此操作后,我们可以遍历每一个文件夹,将该文件夹的路径推入其中,并检查是否存在名为“Subs”的文件夹。Pop-Location
在完成我们需要做的操作后会将我们带回之前的位置。
foreach ($Film in $Films) {
Push-Location $Film
if ((Get-ChildItem -Directory).Name -contains "Subs") {
# Do stuff
}
Pop-Location
}
如果我们找到一个名为"Subs"的文件夹,我们需要检查是否存在".SRT"文件。我们可能拥有多种语言的字幕。
$Subs = Get-ChildItem -Path *.srt -Recurse
检查$Subs
是否为非空。
if ($null -ne $Subs) { }
将任何“.SRT”文件移动到当前位置并按指定的名称进行重命名。
foreach ($Sub in $Subs) {
$FilmPath = $Film.Fullname
$FilmName = $Film.Name
$SubtitleLang = $Sub.BaseName.Substring(0,3).ToUpper()
$Extension = $Sub.Extension
Move-Item -Path $Sub -Destination "$FilmPath\$FilmName.$SubtitleLang$Extension"
}
如果您确定要删除“Subs”文件夹,我们将首先检查它是否为空。如果仍有文件剩余,我们可以编写一条消息。
$RemainingFiles = Get-ChildItem -Path Subs -Recurse
if ($null -eq $RemainingFiles) {
Remove-Item -Path Subs -Force
}
else {
Write-Warning "There are still files in $($Film.FullName)\Subs"
}
将所有内容整合在一起
Set-Location -Path "Your directory path here"
$Films = Get-ChildItem -Directory
# Loop through the Films
foreach ($Film in $Films) {
Push-Location $Film
if ((Get-ChildItem -Directory).Name -contains "Subs") {
# Find any SRT files in the "Subs" directory
$Subs = Get-ChildItem -Path Subs/*.srt -Recurse
if ($null -ne $Subs) {
foreach ($Sub in $Subs) {
$FilmPath = $Film.Fullname
$FilmName = $Film.Name
$SubtitleLang = $Sub.BaseName.Substring(0,3).ToUpper()
$Extension = $Sub.Extension
Move-Item -Path $Sub -Destination "$FilmPath\$FilmName.$SubtitleLang$Extension"
}
}
}
# Remove the Subs folder
$RemainingFiles = Get-ChildItem -Path Subs -Recurse
if ($null -eq $RemainingFiles) {
Remove-Item -Path Subs -Force
}
else {
Write-Warning "There are still files in $($Film.FullName)\Subs"
}
# Return to the root directory for the next folder.
Pop-Location
}