当文件添加到文件夹时,使用标准模式重命名文件

当文件添加到文件夹时,使用标准模式重命名文件

我在复杂的文件夹树结构中重命名文件时遇到问题

文件夹结构示例:

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}

相关内容