Rename-Files: Industrial PowerShell File Utility with Safety Backups
An enterprise-grade PowerShell utility for bulk file renaming featuring prefix configuration, automatic rollback backups, retry logic, and detailed execution logging.
Bulk file renaming operations in system administration and DevOps pipelines are often handled with quick one-liner scripts. However, when operating on production storage shares or processing millions of system logs, naive scripts present serious operational risks: unhandled file locks, lost original filenames, lack of audit trails, and partial execution failures that leave directories in corrupted states.
Rename-Files is an enterprise-grade PowerShell utility designed to execute safe, atomic, and auditable bulk file renaming operations.
Architectural Highlights & Safety Features
Input Directory β βΌ βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β 1. Parameter Validation & Target Pre-flight Check β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β βΌ βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β 2. Automatic Backup Stage (.backup / Manifest creation) β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β βΌ βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β 3. Atomic Rename Execution Loop with Exponential Retry β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β βββ Success ββ> Write Transaction Log & Cleanup β βββ Failure ββ> Auto-Rollback to Original State1. Pre-Flight Validation & Collision Avoidance
Before modifying any file on disk, Rename-Files performs a complete pre-flight dry-run:
- Scans target paths to verify read/write permissions.
- Pre-computes target filenames based on specified prefixes, counters, or regex replacement rules.
- Detects potential filename collisions in memory before executing file modifications.
2. Automatic Rollback Backup Manifest
To protect against data loss, the script generates a JSON/CSV manifest mapping original filenames (OriginalName, OriginalPath, Hash) to their new targets. If an operation fails mid-way due to disk locks or permission errors, running the -Rollback switch restores all modified files back to their exact original state automatically.
3. Locking & Exponential Retry Logic
Files held open by active processes (web servers, database engines, log shippers) frequently cause IOError or AccessDenied exceptions during bulk operations. Rename-Files implements a robust retry loop with exponential backoff, attempting file handles up to $MaxRetries times before marking an entry for rollback.
Script Architecture & Usage Examples
# Basic usage: Add prefix and date stamp to all log files in directory.\Rename-Files.ps1 -Path "C:\Logs\App" -Prefix "PROD_APP_" -AddDateStamp -Filter "*.log"
# Dry-run mode: Preview changes without modifying files.\Rename-Files.ps1 -Path "C:\Data" -SearchPattern "old_" -ReplaceWith "new_" -WhatIf
# Automatic Rollback: Restore files from execution manifest.\Rename-Files.ps1 -Rollback -ManifestPath "C:\Logs\App\rename_manifest_20251111.json"Key Output Log Sample
[2025-11-11 14:00:01] [INFO] Starting Rename-Files v1.2.0 execution[2025-11-11 14:00:01] [INFO] Target Path: C:\Logs\App (Filter: *.log)[2025-11-11 14:00:01] [INFO] Pre-flight check passed. Found 142 target files.[2025-11-11 14:00:02] [BACKUP] Manifest created: C:\Logs\App\rename_manifest_20251111.json[2025-11-11 14:00:03] [SUCCESS] Renamed 'app_error.log' -> 'PROD_APP_20251111_app_error.log'[2025-11-11 14:00:04] [SUCCESS] Operation completed. 142 files renamed, 0 errors.Summary for System Administrators
Rename-Files brings software engineering discipline to PowerShell system administration scripts. By enforcing pre-flight validation, transaction manifests, and automatic rollback capabilities, administrators can perform bulk file operations across production infrastructure with complete confidence.
Full source code and PowerShell documentation are available on GitHub.