|
@@ -0,0 +1,173 @@
|
|
|
|
|
+# DelExcept - Selective File Deletion Script
|
|
|
|
|
+
|
|
|
|
|
+A Windows batch script (`delexcept.cmd`) that deletes all files in a directory and its subdirectories while preserving files that match specified patterns.
|
|
|
|
|
+
|
|
|
|
|
+## Features
|
|
|
|
|
+
|
|
|
|
|
+- ✅ **Recursive deletion** - Processes all subdirectories
|
|
|
|
|
+- ✅ **Pattern matching** - Supports wildcards (`*` and `?`)
|
|
|
|
|
+- ✅ **Safety confirmation** - Prompts before execution
|
|
|
|
|
+- ✅ **Flexible arguments** - Command line configurable
|
|
|
|
|
+- ✅ **Error handling** - Handles access errors gracefully
|
|
|
|
|
+- ✅ **Progress feedback** - Shows which files are kept/deleted
|
|
|
|
|
+
|
|
|
|
|
+## Usage
|
|
|
|
|
+
|
|
|
|
|
+```cmd
|
|
|
|
|
+delexcept.cmd [TARGET_DIR] [KEEP_FILES]
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+### Arguments
|
|
|
|
|
+
|
|
|
|
|
+| Argument | Description | Default |
|
|
|
|
|
+|----------|-------------|---------|
|
|
|
|
|
+| `TARGET_DIR` | Directory to process | Current directory (`%CD%`) |
|
|
|
|
|
+| `KEEP_FILES` | Space-separated patterns of files to preserve | `*.log *.cfg` |
|
|
|
|
|
+
|
|
|
|
|
+### Examples
|
|
|
|
|
+
|
|
|
|
|
+#### Basic Usage
|
|
|
|
|
+```cmd
|
|
|
|
|
+# Delete all files in current directory except *.log and *.cfg
|
|
|
|
|
+delexcept.cmd
|
|
|
|
|
+
|
|
|
|
|
+# Process specific directory with default keep patterns
|
|
|
|
|
+delexcept.cmd "C:\MyFolder"
|
|
|
|
|
+
|
|
|
|
|
+# Keep only text files in specified directory
|
|
|
|
|
+delexcept.cmd "C:\Temp" "*.txt"
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+#### Advanced Pattern Matching
|
|
|
|
|
+```cmd
|
|
|
|
|
+# Keep multiple file types
|
|
|
|
|
+delexcept.cmd "D:\Project" "*.log *.cfg *.ini *.txt"
|
|
|
|
|
+
|
|
|
|
|
+# Mix wildcards with exact filenames
|
|
|
|
|
+delexcept.cmd "." "important.sql backup.* *.log"
|
|
|
|
|
+
|
|
|
|
|
+# Use single character wildcards
|
|
|
|
|
+delexcept.cmd "C:\Data" "config.? log*.txt"
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+## Wildcard Patterns
|
|
|
|
|
+
|
|
|
|
|
+| Pattern | Description | Example Matches |
|
|
|
|
|
+|---------|-------------|-----------------|
|
|
|
|
|
+| `*` | Any number of characters | `*.txt` → `file.txt`, `document.txt` |
|
|
|
|
|
+| `?` | Single character | `log?.txt` → `log1.txt`, `logA.txt` |
|
|
|
|
|
+| `*.*` | Any file with extension | All files with extensions |
|
|
|
|
|
+| `file.*` | Specific name, any extension | `file.txt`, `file.log`, `file.cfg` |
|
|
|
|
|
+
|
|
|
|
|
+## Safety Features
|
|
|
|
|
+
|
|
|
|
|
+### Confirmation Prompt
|
|
|
|
|
+The script displays a warning and requires user confirmation:
|
|
|
|
|
+```
|
|
|
|
|
+WARNING: This will delete all files in "C:\MyFolder" and subdirectories
|
|
|
|
|
+EXCEPT files matching these patterns: *.log *.cfg
|
|
|
|
|
+
|
|
|
|
|
+Are you sure? (Y/N):
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+### Error Handling
|
|
|
|
|
+- Validates directory access before processing
|
|
|
|
|
+- Reports files that cannot be deleted
|
|
|
|
|
+- Graceful handling of permission errors
|
|
|
|
|
+
|
|
|
|
|
+## Getting Help
|
|
|
|
|
+
|
|
|
|
|
+Display usage information:
|
|
|
|
|
+```cmd
|
|
|
|
|
+delexcept.cmd -h
|
|
|
|
|
+delexcept.cmd --help
|
|
|
|
|
+delexcept.cmd /?
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+## Installation
|
|
|
|
|
+
|
|
|
|
|
+1. Save the script as `delexcept.cmd`
|
|
|
|
|
+2. Place it in a directory in your PATH, or
|
|
|
|
|
+3. Run it from its location using full path
|
|
|
|
|
+
|
|
|
|
|
+## Common Use Cases
|
|
|
|
|
+
|
|
|
|
|
+### Development Environment Cleanup
|
|
|
|
|
+```cmd
|
|
|
|
|
+# Keep source code, remove build artifacts
|
|
|
|
|
+delexcept.cmd "C:\MyProject" "*.cs *.sql *.js *.html *.css"
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+### Log Directory Maintenance
|
|
|
|
|
+```cmd
|
|
|
|
|
+# Keep recent logs, remove everything else
|
|
|
|
|
+delexcept.cmd "C:\Logs" "*.log *.txt"
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+### Backup Directory Cleanup
|
|
|
|
|
+```cmd
|
|
|
|
|
+# Keep specific backup files
|
|
|
|
|
+delexcept.cmd "D:\Backups" "backup_*.sql important.*"
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+### Temporary File Cleanup
|
|
|
|
|
+```cmd
|
|
|
|
|
+# Remove temp files but keep configuration
|
|
|
|
|
+delexcept.cmd "%TEMP%" "*.cfg *.ini *.conf"
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+## Important Notes
|
|
|
|
|
+
|
|
|
|
|
+⚠️ **Warning**: This script permanently deletes files. Always test with a backup or in a safe environment first.
|
|
|
|
|
+
|
|
|
|
|
+### Best Practices
|
|
|
|
|
+
|
|
|
|
|
+1. **Test first**: Run the script in a test directory to verify pattern matching
|
|
|
|
|
+2. **Use quotes**: Always quote paths with spaces: `"C:\My Folder"`
|
|
|
|
|
+3. **Check patterns**: Verify your wildcard patterns match the intended files
|
|
|
|
|
+4. **Backup important data**: Always maintain backups of critical files
|
|
|
|
|
+
|
|
|
|
|
+### Limitations
|
|
|
|
|
+
|
|
|
|
|
+- Case-insensitive pattern matching only
|
|
|
|
|
+- No regular expression support (only `*` and `?` wildcards)
|
|
|
|
|
+- Requires manual confirmation for each execution
|
|
|
|
|
+- Windows-only (batch script)
|
|
|
|
|
+
|
|
|
|
|
+## Troubleshooting
|
|
|
|
|
+
|
|
|
|
|
+### Common Issues
|
|
|
|
|
+
|
|
|
|
|
+**"Cannot access directory" error**
|
|
|
|
|
+- Verify the directory path exists
|
|
|
|
|
+- Check permissions for the target directory
|
|
|
|
|
+- Ensure no other processes are using files in the directory
|
|
|
|
|
+
|
|
|
|
|
+**Files not matching expected patterns**
|
|
|
|
|
+- Test patterns with `dir` command first: `dir *.log`
|
|
|
|
|
+- Remember patterns are case-insensitive
|
|
|
|
|
+- Use quotes around patterns with special characters
|
|
|
|
|
+
|
|
|
|
|
+**Permission denied errors**
|
|
|
|
|
+- Run as administrator if needed
|
|
|
|
|
+- Close applications that might be using the files
|
|
|
|
|
+- Check file attributes (read-only, hidden)
|
|
|
|
|
+
|
|
|
|
|
+### Testing Patterns
|
|
|
|
|
+
|
|
|
|
|
+Before running the deletion script, test your patterns:
|
|
|
|
|
+```cmd
|
|
|
|
|
+# Test what files match your pattern
|
|
|
|
|
+dir /s "*.log"
|
|
|
|
|
+dir /s "config.*"
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+## Version History
|
|
|
|
|
+
|
|
|
|
|
+- **v1.0**: Initial release with basic functionality
|
|
|
|
|
+- **v1.1**: Added command line arguments and wildcard support
|
|
|
|
|
+- **v1.2**: Enhanced pattern matching and error handling
|
|
|
|
|
+
|
|
|
|
|
+## License
|
|
|
|
|
+
|
|
|
|
|
+This script is provided as-is for educational and practical use. Use at your own risk.
|