Пакет Створення папок на основі імен файлів, виключаючи дужки та дужки


0

У мене тисячі файлів із такою структурою:

Sample1 (43643) [3235]
Sample1 (32352) [6432]
Sample1 (35346) [4364]

Я намагаюсь створювати папки на основі імені файлу, виключаючи дужки та круглі дужки, і переміщувати всі аналогічно названі файли у цю папку:

Sample1\Sample1 (43643) [3235]
Sample1\Sample1 (32352) [6432]
Sample1\Sample1 (35346) [4364]

Будь-які ідеї, як це зробити? Будь-яка допомога буде вдячна.

Оновлення:

@beatcracker Мені вдалося змусити його працювати з прикладними файлами файлів, але ось фактичні імена файлів, які я використовую (які не працювали):

1st Division Manager (1992)(Codemasters)[cr NMS].adf
1st Division Manager (1992)(Codemasters)[cr NMS][a10].adf
1st Division Manager (1992)(Codemasters)[cr NMS][a11].adf
1st Division Manager (1992)(Codemasters)[cr NMS][a12].adf
1st Division Manager (1992)(Codemasters)[cr NMS][a2].adf
1st Division Manager (1992)(Codemasters)[cr NMS][a3].adf
1st Division Manager (1992)(Codemasters)[cr NMS][a4].adf
1st Division Manager (1992)(Codemasters)[cr NMS][a5].adf
1st Division Manager (1992)(Codemasters)[cr NMS][a6].adf
1st Division Manager (1992)(Codemasters)[cr NMS][a7].adf
1st Division Manager (1992)(Codemasters)[cr NMS][a8].adf
1st Division Manager (1992)(Codemasters)[cr NMS][a9].adf
1st Division Manager (1992)(Codemasters)[cr NMS][a].adf
1st Division Manager (1992)(Codemasters)[cr NMS][h KTS].adf
3D Construction Kit II r2.01 (1992)(Domark)(Disk 1 of 2)[h Ministry][construction kit].adf
3D Construction Kit II r2.01 (1992)(Domark)(Disk 2 of 2)[construction kit].adf
3D Construction Kit II r2.03 (1992)(Domark)(FR)(Disk 1 of 2)[construction kit].adf
3D Construction Kit II r2.03 (1992)(Domark)(FR)(Disk 2 of 2)[construction kit].adf

Я хотів би додати, що я використовую Windows 10.
Джонатан

Відповіді:


0

Ось версія PowerShell. Працює для однієї папки, використовує регулярні вирази для відповідності імен файлів. Просто відредагуйте $OrigFolder/ $NewFolderвідповідно:

# Folder where files are stored
$OrigFolder = 'C:\MyFolder'

# Folder where sorted files will be stored.
# It will be created if not exists.
$NewFolder = 'C:\MyFolder_Sorted'

# Folder, where files with empty part of the name will be stored
# Example: file "(1992)(Domark)(FR)(Disk 2 of 2)[construction kit].adf"
# will be moved to ".\Sorted\Unknown" folder
$UnknownFolder = 'Unknown'

# Regex to match filenames
$Regex = '^\s*(.*?)\s*\('

# Loop through files in directory, skip folders
Get-ChildItem -LiteralPath $OrigFolder | Where-Object {!$_.PsIsContainer} |
    ForEach-Object {
        if($_.BaseName -match $Regex){

            # If first part of the file name is empty,
            # move it to the 'Unknown' folder
            if(!$Matches[1]){
                $ChildPath = $UnknownFolder
            } else {
                $ChildPath =  $Matches[1]
            }

            # Generate new folder name
            $FolderName = Join-Path -Path $NewFolder -ChildPath $ChildPath

            # Create folder if not exists
            if(!(Test-Path -LiteralPath $FolderName -PathType Container)){
                $null = New-Item -Path $FolderName -ItemType Directory
            }

            # Basic logging
            Write-Host "$($_.FullName) -> $FolderName"

            # Move file
            Move-Item -LiteralPath $_.FullName -Destination $FolderName
        }
}

Збережіть його як MoveFiles.ps1і запустіть у консолі PowerShell так:.\MoveFiles.ps1


Привіт, дякую за швидку відповідь. Я ретельно дотримувався інструкцій, редагуючи шляхи до папок у рядках 1 та 2, потім запустив сценарій як. \ MoveFiles.ps1 в PowerShell, але нічого не сталося ...
Джонатан

@Jonathan Можливо, regex занадто суворий (сценарій працює для мене з вашими прикладними іменами). Він відповідатиме лише іменам, як у вашому прикладі. Чи можете ви опублікувати фактичне ім’я файлу?
beatcracker

Мені вдалося змусити його працювати з прикладними іменами файлів, але ось фактичні імена файлів, з якими я працюю (див. Вище)
Джонатан

@Jonathan Отже, ви хочете, щоб ім'я папки було чимось до першого (? Приклад: 1st Division Manager, 3D Construction Kit II r2.03, 3D Construction Kit II r2.01? Потім дивіться мою оновлену відповідь.
битфоркер
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.