@ -6,6 +6,7 @@
					 
			
		
	
		
			
				
					    [switch]  $Sub   
			
		
	
		
			
				
					)  
			
		
	
		
			
				
					Import-Module  -Name  ( $PSScriptRoot  +  " \PathChar.psd1 " )  
			
		
	
		
			
				
					Import-Module  -Name  ( $PSScriptRoot  +  " \NameRegex.psd1 " )  
			
		
	
		
			
				
					Edit-PathChar  $Path  
			
		
	
		
			
				
					#$TargetName = "俺だけ入れる隠しダンジョン〜こっそり鍛えて世界最強〜";  
			
		
	
		
			
				
					$TargetName  =  " "  
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -44,8 +45,6 @@ $WorkData
					 
			
		
	
		
			
				
					$Seasons_TC  =  " " ,  " 第一季 " ,  " 第二季 " ,  " 第三季 " ,  " 第四季 " ,  " 第五季 "  
			
		
	
		
			
				
					$Year  =  @ ( $ ( $JsonPath  -replace  '.*\\((?<Y>\d{4})?(?<M>\d{2})?).*$' ,  '${Y}' ) ,  $ ( get-date  -Format  'yyyy' ) )  |  ?  { -not ( [string] :: IsNullOrEmpty ( $_ ) ) }  |  Select  -First  1  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					#$($JsonPath -replace '.*\\((?<Y>\d{4})?(?<M>\d{2})?).*$', '${Y}');  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					# 取得目標資料夾是否存在,不存在建立資料夾,並取得資料夾物件  
			
		
	
		
			
				
					$LinkPath  =  " {2}\{0}\{1} "  -f  $WorkData . DestinName ,  $Seasons_TC [ $WorkData . Season ] ,  $Index  
			
		
	
		
			
				
					$LinkDir  =  $ ( if  ( -not ( Test-Path  -Path  " $ LinkPath* " ) )  {  
			
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
				@ -68,37 +67,18 @@ function Get-StandName {
					 
			
		
	
		
			
				
					    } )   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					    # 因應檔名不同而設定多組正規方式   
			
		
	
		
			
				
					    $Result  =  @ ( $ (   
			
		
	
		
			
				
					        #$($TestName[-1] -match "\[([^\]]*)\]\[(\d{1,2})\]")   
			
		
	
		
			
				
					        #$($File.Name -match "[\[\s]([^\]]*?)(?:[\]\[\-\s]+)(\d{1,2})[\]\s]")   
			
		
	
		
			
				
					        #$($File.Name -match "[\[\s](?<Name>\b[^\]]*\b)(?:[\]\[\-\s]+)(?<Episode>\d{1,2})(?:[vV]\d|FIN|END)?[\]\s]")   
			
		
	
		
			
				
					        $ ( $ ( $File . Name  -replace  " \[(DVD|HDTV|BD)rip\] " ,  '' )  -match  " [\[\s](?<Name>\b[^\]]*\b)(?:[\]\[\-\s]+)(?<Episode>\d{1,2})(?:_?[vV]\d|FIN|END)?[\]\s] " )   
			
		
	
		
			
				
					        #$($TestName[-1] -match "[\[\s](?<Name>[^\]]*?)(?:[\]\[\-\s]+)(?<Episode>\d{1,2})(?:[vV]\d)?[\]\s]")   
			
		
	
		
			
				
					    )  |  %  {  if  ( $_ )  {  $Matches  } } )   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					    # 檔名分析測試用   
			
		
	
		
			
				
					#    $Pathes = @(  
			
		
	
		
			
				
					#            "L:\Anime\200910 聖剣の刀鍛冶(聖劍鍛造師)\[DMG][The Sacred Blacksmith][01-12 END][848x480][BIG5]\[DMG][The Sacred Blacksmith][04V2][848x480][BIG5].rmvb"  
			
		
	
		
			
				
					#            "L:\Anime\201104 星空へ架かる橋(架向星空之橋)\[AngelSub][Hoshizora e Kakaru Hashi][BDRip][Vol.01][1920x1080][TW_BIG5][x264_FLAC]\[AngelSub][Hoshizora e Kakaru Hashi][BDRip][01][1920x1080][BIG5][x264_FLAC].mkv"  
			
		
	
		
			
				
					#            "H:\Anime\201901 盾の勇者の成り上がり\[LKSUB][Tate no Yuusha no Nariagari][01-25][GB][720P][MP4]\[LKSUB][Tate no Yuusha no Nariagari][01][GB][720P].mp4"  
			
		
	
		
			
				
					#            "L:\Anime\202004 ストライク・ザ・ブラッド OVA IV\[Suzu-Kaze][Strike_the_Blood_IV_OVA][01-12FIN][BDRip_1080P][HEVC_YUV420P10]\[Suzu-Kaze] Strike the Blood IV 12FIN [BDRip 1920x1080 HEVC YUV420P10 FLAC].mkv"  
			
		
	
		
			
				
					#            "L:\Anime\200910 アスラクライン II(機巧魔神)\[DMG][Asura Cryin2][01-13 END][848x480][BIG5][RMVB]\[DMG][Asura Cryin 2][01][848x480][Big5].rmvb"  
			
		
	
		
			
				
					#            "H:\Data\Downloads\異世界食堂\[Lilith-Raws] Isekai Shokudou S02 - 06 [Baha][WEB-DL][1080p][AVC AAC][CHT][MP4].mp4"  
			
		
	
		
			
				
					#            )  
			
		
	
		
			
				
					#    $TestName = @($Pathes | % {$_.Split("\\")[-1]})  
			
		
	
		
			
				
					#    $Result = @( $TestName | % { @(  
			
		
	
		
			
				
					      #$($_ -match "\[([^\]]*)\]\[(\d{1,2})\]")   
			
		
	
		
			
				
					#      $($($_ -replace "\[(DVD|HDTV|BD)rip\]", '') -match "[\[\s](?<Name>\b[^\]]*\b)(?:[\]\[\-\s]+)(?<Episode>\d{1,2})(?:[vV]\d|FIN|END)?[\]\s]")  
			
		
	
		
			
				
					#    ) | % { if ($_) { $Matches }}})  
			
		
	
		
			
				
					#    Write-Output $Result  
			
		
	
		
			
				
					#    $Matches  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					      
			
		
	
		
			
				
					    # OLD Edition   
			
		
	
		
			
				
					    #$File.Name -match "\[([^\]]*)\]\[(\d{1,2})\]" | Out-Null   
			
		
	
		
			
				
					    #$Matches   
			
		
	
		
			
				
					    #$newName = "{0} S{3:00}E{1}{2}" -f $Matches[1], $Matches[2], $File.Extension, $Season;   
			
		
	
		
			
				
					    #$newName = "{0} S{3:00}E{1}{2}" -f $Result[1], $Result[2], $File.Extension, $WorkData.Season;   
			
		
	
		
			
				
					    $EpisodeRegex  =  @ (   
			
		
	
		
			
				
					        " S\d{2}[\s\-]+E?(?<Episode>\d{2}) "   
			
		
	
		
			
				
					        " [\[\b\s](?<Episode>\d{2})[\s_]?(?:[vV]\d|END|FIN)[\]\b\s] "   
			
		
	
		
			
				
					        " \[(?<Episode>\d{1,2})\w{2}\] "   
			
		
	
		
			
				
					        " \[(?<Episode>\d{1,2})\] "   
			
		
	
		
			
				
					    )   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					    $NameRegex  =  @ (   
			
		
	
		
			
				
					        " [\[\b\s](?<Name>[^\[\]]*)[\]\b\s] $ "   
			
		
	
		
			
				
					    )   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					    $Result  =  $File . Name  |  %  {  Get-NameRegex  $_  -Regex  $EpisodeRegex  }  |  %  {  $ ( Get-NameRegex  $_ [ " L " ]  -Regex  $NameRegex  -Exclude  " (BD|DVD|HDTV)RIP "  -End )  +  $_  }   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					    # 建立回傳資料物件,以方便後續資料處理。   
			
		
	
		
			
				
					    $OutputData  =  " "  |  Select  newName ,  Season ,  Episode ,  newFullName ;   
			
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
				@ -106,21 +86,6 @@ function Get-StandName {
					 
			
		
	
		
			
				
					    $OutputData . Season  =  $WorkData . Season ;   
			
		
	
		
			
				
					    $OutputData . Episode  =  [int]  $Result . Episode ;   
			
		
	
		
			
				
					    $OutputData . newFullName  =  " {0} S{3:00}E{1}{4}{2} "  -f  $Result . Name ,  $Result . Episode ,  $File . Extension ,  $WorkData . Season ,  $ ( if ( $Sub )  { " .default " } ) ;   
			
		
	
		
			
				
					    #$OutputData | ConvertTo-Json;   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					    # Type 2,在輸出顯示上,此型態建立較傾向 Hash,而上面 select 建立的,較偏向 pscustomobject   
			
		
	
		
			
				
					    #$OutputData2 = @{   
			
		
	
		
			
				
					    #    newName = $Result[1];   
			
		
	
		
			
				
					    #    Season = [int] $WorkData.Season;   
			
		
	
		
			
				
					    #    Episode = [int] $Result[2];   
			
		
	
		
			
				
					    #    newFullName = "{0} S{3:00}E{1}{2}" -f $Result[1], $Result[2], $File.Extension, $WorkData.Season;   
			
		
	
		
			
				
					    #};   
			
		
	
		
			
				
					    #$OutputData2 | ConvertTo-Json;   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					    #Write-Output $File;   
			
		
	
		
			
				
					    #Write-Output $File.Name;   
			
		
	
		
			
				
					    #Write-Output $newName;   
			
		
	
		
			
				
					    #return $newName;   
			
		
	
		
			
				
					      
			
		
	
		
			
				
					    return  $OutputData ;   
			
		
	
		
			
				
					}  
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -180,8 +145,8 @@ exit 0;
					 
			
		
	
		
			
				
					# SIG # Begin signature block  
			
		
	
		
			
				
					# MIIFxwYJKoZIhvcNAQcCoIIFuDCCBbQCAQExCzAJBgUrDgMCGgUAMGkGCisGAQQB  
			
		
	
		
			
				
					# gjcCAQSgWzBZMDQGCisGAQQBgjcCAR4wJgIDAQAABBAfzDtgWUsITrck0sYpfvNR  
			
		
	
		
			
				
					# AgEAAgEAAgEAAgEAAgEAMCEwCQYFKw4DAhoFAAQUDqcimTh1uRkBM2wZ3oxWPCw2   
			
		
	
		
			
				
					# SQ+ gggNSMIIDTjCCAjagAwIBAgIQdMnAQ4BDAo9Lgfn+QeDdhjANBgkqhkiG9w0B  
			
		
	
		
			
				
					# AgEAAgEAAgEAAgEAAgEAMCEwCQYFKw4DAhoFAAQUoj6O9AeGdF5M/FWDj5z18zw0   
			
		
	
		
			
				
					# 4Jq gggNSMIIDTjCCAjagAwIBAgIQdMnAQ4BDAo9Lgfn+QeDdhjANBgkqhkiG9w0B  
			
		
	
		
			
				
					# AQUFADAqMRMwEQYDVQQDDApOaWNrIENoYW5nMRMwEQYDVQQKDAplYXJpY2sub3Jn  
			
		
	
		
			
				
					# MB4XDTIxMTAzMTEwMDI1MVoXDTIyMTAzMTEwMjI1MVowMzEiMCAGCSqGSIb3DQEJ  
			
		
	
		
			
				
					# ARYTcGNuaWNrMTAwQGdtYWlsLmNvbTENMAsGA1UEAwwETmljazCCASIwDQYJKoZI  
			
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
				@ -202,11 +167,11 @@ exit 0;
					 
			
		
	
		
			
				
					# AgEBMD4wKjETMBEGA1UEAwwKTmljayBDaGFuZzETMBEGA1UECgwKZWFyaWNrLm9y  
			
		
	
		
			
				
					# ZwIQdMnAQ4BDAo9Lgfn+QeDdhjAJBgUrDgMCGgUAoHgwGAYKKwYBBAGCNwIBDDEK  
			
		
	
		
			
				
					# MAigAoAAoQKAADAZBgkqhkiG9w0BCQMxDAYKKwYBBAGCNwIBBDAcBgorBgEEAYI3  
			
		
	
		
			
				
					# AgELMQ4wDAYKKwYBBAGCNwIBFTAjBgkqhkiG9w0BCQQxFgQUZ98/I+dj0JylJtN V  
			
		
	
		
			
				
					# 6S37dg5/QPEwDQYJKoZIhvcNAQEBBQAEggEABCrG4XNbnCRBIlDyHFCXMJ4vucsD   
			
		
	
		
			
				
					# p4roqcdLmtM/g75EEus9h/qXMF/CLbc3BDbSEHGXnEk2OO3MN7+HWUudbAxvBfUE   
			
		
	
		
			
				
					# z8xTGSNCoNgWhPmEj859OOCu5i7Y1XIEkF89v5nPOzblTMesSdm44FQaBtrC1bHM   
			
		
	
		
			
				
					# z0dx+mnz0Zak7MzWkXUnyIeoKc2vM4eGlR/pBxXO7n5ycp70lL5rRWX9eVTT4r96   
			
		
	
		
			
				
					# dW7ZUpL9Gwcq0PHLNg7rFgUmLSkMO3jUiIat0DBSJGkzUfVUhfpIPkG77auVLJKR   
			
		
	
		
			
				
					# YdfUqFL+zrq6GhSrKsD7cz5GC4I9RuaFuykGDqW6aZ93PSRlXxmw32GVvQ ==  
			
		
	
		
			
				
					# AgELMQ4wDAYKKwYBBAGCNwIBFTAjBgkqhkiG9w0BCQQxFgQUZh3cBrwgHvdFbQw V  
			
		
	
		
			
				
					# WcdOMvw1legwDQYJKoZIhvcNAQEBBQAEggEAGR0QzX3t1drjorcTh759QopFrvNd   
			
		
	
		
			
				
					# bb9VtZx5OJsLD8/v4YuNBB0IYT+03OSK7jWyIyH5OEj/jTn/Uj1WG37vu/GDdsmm   
			
		
	
		
			
				
					# dp/3PWziGclgh0QrJmZjQPavqFXHpUrRCIQqT2J9Er4zMf95zWEu1Zsgpb/DNJqu   
			
		
	
		
			
				
					# 4gz5d7Yn+wllud0DuOiQDwz9fpSz+lgMhMybqR+wsW8ROLvzCuTHJaNvKffm7vFG   
			
		
	
		
			
				
					# NjbwZccH9xULGbAakX6H2lbcaMqGlkLYVkP3FRmk2zTG+qR4jxHzYhsttKb2ClSt   
			
		
	
		
			
				
					# L2qRWv7KJCPnw4RpFx/+L9buDHH25QERiINEOPF/pfpqHhaENTolaUe7vg ==  
			
		
	
		
			
				
					# SIG # End signature block