我在复杂的文件夹树结构中重命名文件时遇到问题
文件夹结构示例:
C:\文件夹1\Sub_Folder_1\file_1.extension
C:\文件夹2\Sub_Folder_2\file_2.extension
C:\Folder2\file_3.extension
我希望文件命名如下
假设第一行的 file_1.extension 正在考虑以下必要的元数据
file_1.extension 属性:
创建日期:2017-07-17
完整文件路径:C:\Folder1\Sub_Folder_1\file_1.extension
原始文件名:file_1.extension
重命名后的完整文件名:
模板 :创建日期_完整文件路径_原始文件名
因此:17-07-17_c-folder1-subfolder1_file1.extension
我能够成功实现这一点批量重命名实用程序
但是我无法对我今后创建的任何文件自动执行此过程,因此最终必须多次运行 BRU 程序。
有什么方法可以使 BRU 自动化,或者甚至尝试运行批处理文件来执行相同操作吗?
答案1
这是一个 Powershell 脚本,只要该脚本处于打开和运行状态,它就会自动重命名给定文件夹中的所有文件
### SET FOLDER TO WATCH + SUBFOLDERS YES/NO
$watcher = New-Object System.IO.FileSystemWatcher
$watcher.Path = "C:\Users\nixda\Desktop\test"
$watcher.IncludeSubdirectories = $true
$watcher.EnableRaisingEvents = $true
### SET ACTION AFTER A FILE IS CREATED
$action = {
$item = Get-Item -path $Event.SourceEventArgs.FullPath
if (-not $item.PSIsContainer) {
$date = Get-Date $item.CreationTime -format yy-MM-dd
$folder = $item.DirectoryName -replace '\\', '-' -replace ':'
$newName = "$($date)_$($folder)_$($item.Name)"
### IF PATH ALREADY EXISTS, INCREMENT NUMBER UNTIL WE HAVE A FREE NAME
$fullPath = "$($item.Directory)/$newName"
while (Test-Path -Path $fullPath){
$i++
$newName = "$($date)_$($folder)_$($item.BaseName) ($i).$($item.Extension)"
$fullPath = "$($item.Directory)/$newName"
}
Rename-Item $item -newName $newName
}
}
### SET WHICH FILE EVENTS SHOULD BE WATCHED
Register-ObjectEvent $watcher "Created" -Action $action
while ($true) {sleep 5}