53 lines
2.1 KiB
PowerShell
53 lines
2.1 KiB
PowerShell
# Script to organize texture files into subdirectories based on their prefix (e.g., Regina_, Martha_)
|
|
# Usage: .\organize_textures.ps1 (Run from the directory containing the texture files)
|
|
|
|
# Get all files (excluding hidden files like .cursorindexingignore)
|
|
$files = Get-ChildItem -File | Where-Object { $_.Name -notmatch '^\.' };
|
|
|
|
# Check if any files were found
|
|
if ($null -eq $files -or $files.Count -eq 0) {
|
|
Write-Host "No files found to process (excluding hidden files).";
|
|
exit;
|
|
}
|
|
|
|
# Group files by their prefix (the part before the first underscore)
|
|
$groupedFiles = $files | Group-Object { ($_.Name -split '_')[0] };
|
|
|
|
# Iterate through each group (prefix)
|
|
foreach ($group in $groupedFiles) {
|
|
$prefix = $group.Name;
|
|
|
|
# Skip if the prefix is empty or whitespace (shouldn't happen normally, but just in case)
|
|
if ([string]::IsNullOrWhiteSpace($prefix)) {
|
|
Write-Warning "Skipping files that result in an empty or whitespace prefix.";
|
|
foreach ($file in $group.Group) {
|
|
Write-Warning " Problematic file: $($file.Name)"
|
|
}
|
|
continue;
|
|
}
|
|
|
|
# Create the subdirectory for this prefix if it doesn't exist
|
|
if (-not (Test-Path -Path $prefix -PathType Container)) {
|
|
New-Item -ItemType Directory -Path $prefix | Out-Null;
|
|
Write-Host "Created directory: $prefix"
|
|
} else {
|
|
Write-Host "Directory '$prefix' already exists."
|
|
}
|
|
|
|
# Move each file in the group into the corresponding subdirectory
|
|
# (Skip if the file is already in the correct directory)
|
|
foreach ($file in $group.Group) {
|
|
$destinationDirPath = (Resolve-Path $prefix).ProviderPath;
|
|
$currentFileDirPath = $file.DirectoryName;
|
|
|
|
if ($currentFileDirPath -ne $destinationDirPath) {
|
|
$destinationPath = Join-Path -Path $prefix -ChildPath $file.Name;
|
|
Move-Item -Path $file.FullName -Destination $destinationPath -Force;
|
|
Write-Host "Moved '$($file.Name)' to '$prefix\'"
|
|
} else {
|
|
Write-Host "File '$($file.Name)' is already in '$prefix\'"
|
|
}
|
|
}
|
|
}
|
|
|
|
Write-Host "File organization complete." |