Windows powershell упрощает имена файлов - PullRequest
0 голосов
/ 31 октября 2019

У меня есть много файлов с именами, такими как следующий формат:

File name Revision_Series.random_obs1.random_obs2-random_obs3.txt

Идея состоит в том, чтобы убрать все с Revision_Series до расширения файла.

Revision_Series всегда будет иметь формат Rxx, где xx - это 2 цифры.

Costea Voda 4A R03.Showed-Unliked.Has4Changes.zip

Costea Voda 4A R11.Showed-Liked. Is.Final.zip

, который должен стать

Costea Voda 4A R03.zip

Costea Voda 4A R11.zip

Ответы [ 2 ]

0 голосов
/ 31 октября 2019

Я создал каталог с некоторыми поддельными файлами, такими как:

Directory: C:\temp\example


Mode                LastWriteTime         Length Name                                                                                                        
----                -------------         ------ ----                                                                                                        
-a----       10/31/2019   9:50 AM              0 Costea Voda 1 R1.Showed-Liked.Is.Final.zip                                                                  
-a----       10/31/2019   9:50 AM              0 Costea Voda 1 R2.Showed-Liked.Is.Final.zip                                                                  
-a----       10/31/2019   9:50 AM              0 Costea Voda 1 R3.Showed-Liked.Is.Final.zip                                                                  
-a----       10/31/2019   9:50 AM              0 Costea Voda 2 R1.Showed-Liked.Is.Final.zip                                                                  
-a----       10/31/2019   9:50 AM              0 Costea Voda 2 R2.Showed-Liked.Is.Final.zip                                                                  
-a----       10/31/2019   9:50 AM              0 Costea Voda 2 R3.Showed-Liked.Is.Final.zip                                                                  
-a----       10/31/2019   9:50 AM              0 Costea Voda 3 R1.Showed-Liked.Is.Final.zip                                                                  
-a----       10/31/2019   9:50 AM              0 Costea Voda 3 R2.Showed-Liked.Is.Final.zip                                                                  
-a----       10/31/2019   9:50 AM              0 Costea Voda 3 R3.Showed-Liked.Is.Final.zip                                                                  
-a----       10/31/2019   9:50 AM              0 Costea Voda 4 R1.Showed-Liked.Is.Final.zip                                                                  
-a----       10/31/2019   9:50 AM              0 Costea Voda 4 R2.Showed-Liked.Is.Final.zip                                                                  
-a----       10/31/2019   9:50 AM              0 Costea Voda 4 R3.Showed-Liked.Is.Final.zip

Этот короткий скрипт удалит .Showed-Liked и т. Д., Все после R# и вплоть до расширения.

$files = dir C:\temp\example 
foreach($file in $files){
    $nameComponents = $file.Name.Split(".")
    Rename-Item -Path $file.FullName -NewName $($nameComponents[0] + $file.Extension) -PassThru
}

После

Directory: C:\temp\example


Mode                LastWriteTime         Length Name                                                                                                        
----                -------------         ------ ----                                                                                                        
-a----       10/31/2019   9:50 AM              0 Costea Voda 1 R1.zip                                                                                        
-a----       10/31/2019   9:50 AM              0 Costea Voda 1 R2.zip                                                                                        
-a----       10/31/2019   9:50 AM              0 Costea Voda 1 R3.zip                                                                                        
-a----       10/31/2019   9:50 AM              0 Costea Voda 2 R1.zip                                                                                        
-a----       10/31/2019   9:50 AM              0 Costea Voda 2 R2.zip                                                                                        
-a----       10/31/2019   9:50 AM              0 Costea Voda 2 R3.zip                                                                                        
-a----       10/31/2019   9:50 AM              0 Costea Voda 3 R1.zip 
0 голосов
/ 31 октября 2019

Конечно, вы можете столкнуться с именами, выполнив следующее:

$rootFolder = 'D:\'    #'# put the path of the folder containing the files here
Get-ChildItem -Path $rootFolder -File | ForEach-Object {
    $newName = '{0}{1}' -f ($_.BaseName -split '\.')[0], $_.Extension
    $_ | Rename-Item -NewName $newName -WhatIf
}

Если вас устраивает информация, отображаемая в консоли, удалите переключатель -WhatIf, чтобы на самом деле код переименовал файлы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...