AllenBooTung Asked: 2020-08-07 17:36:26 +0800 CST2020-08-07 17:36:26 +0800 CST 2020-08-07 17:36:26 +0800 CST 备份同一文件夹中的文件时的后缀日期时间 772 当我在文件夹中备份文件或文件夹时,我复制粘贴并重命名它。 D:/data.txt -> D:/data20200807.txt 是否有任何软件或系统设置可以做到这一点,所以我不必按 F2 并手动重命名。只需 ctrl+c ctrl+v。 windows-10 2 个回答 Voted Best Answer Keith Miller 2020-08-08T10:00:10+08:002020-08-08T10:00:10+08:00 通过添加当前日期字符串来重命名文件的上下文菜单项怎么样?如果合适,只需将以下代码复制到文本编辑器中,另存为.reg文件,然后右键单击新文件并选择Merge. Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\AllFilesystemObjects\shell\Rename4Backup] @="Rename (add date)" [HKEY_CLASSES_ROOT\AllFilesystemObjects\shell\Rename4Backup\Command] @="PowerShell -Command \"gi '%1' | Rename-Item -NewName { '{0}{1:yyyyMMdd}{2}' -f $_.BaseName, ( Get-Date ), $_.Extension }\"" AllenBooTung 2021-04-14T23:34:47+08:002021-04-14T23:34:47+08:00 编译这个自动热键脚本并执行它 选择文件和文件夹 按 ctrl+b backup.ahk ^b:: sel := Explorer_GetSelected() yy := SubStr(A_Now, 3, 2) today = %yy%%A_MM%%A_DD% todaynow = %yy%%A_MM%%A_DD%%A_Hour%%A_Min%%A_Sec% ;; For each parameter (or file dropped onto a script): Loop, Parse, sel, `n { ;; Fetch the contents of the variable whose name is contained in A_Index. GivenPath := A_LoopField SplitPath, GivenPath, sfilename, dir, ext, name_no_ext, drive dot_ext = %ext% if (ext) { dot_ext = .%ext% } backup_fullpathname = %dir%\%name_no_ext%%today%%dot_ext% if FileExist(backup_fullpathname) { backup_fullpathname = %dir%\%name_no_ext%%todaynow%%dot_ext% } ;; file or folder if InStr(FileExist(GivenPath), "D") { FileCopyDir, %GivenPath%, %backup_fullpathname% } else { FileCopy, %GivenPath%, %backup_fullpathname% } } return ;; https://autohotkey.com/board/topic/60985-get-paths-of-selected-items-in-an-explorer-window/ Explorer_GetPath(hwnd="") { if !(window := Explorer_GetWindow(hwnd)) return ErrorLevel := "ERROR" if (window="desktop") return A_Desktop path := window.LocationURL path := RegExReplace(path, "ftp://.*@","ftp://") StringReplace, path, path, file:/// StringReplace, path, path, /, \, All ; thanks to polyethene Loop If RegExMatch(path, "i)(?<=%)[\da-f]{1,2}", hex) StringReplace, path, path, `%%hex%, % Chr("0x" . hex), All Else Break return path } Explorer_GetAll(hwnd="") { return Explorer_Get(hwnd) } Explorer_GetSelected(hwnd="") { return Explorer_Get(hwnd,true) } Explorer_GetWindow(hwnd="") { ; thanks to jethrow for some pointers here WinGet, process, processName, % "ahk_id" hwnd := hwnd? hwnd:WinExist("A") WinGetClass class, ahk_id %hwnd% if (process!="explorer.exe") return if (class ~= "(Cabinet|Explore)WClass") { for window in ComObjCreate("Shell.Application").Windows if (window.hwnd==hwnd) return window } else if (class ~= "Progman|WorkerW") return "desktop" ; desktop found } Explorer_Get(hwnd="",selection=false) { if !(window := Explorer_GetWindow(hwnd)) return ErrorLevel := "ERROR" if (window="desktop") { ControlGet, hwWindow, HWND,, SysListView321, ahk_class Progman if !hwWindow ; #D mode ControlGet, hwWindow, HWND,, SysListView321, A ControlGet, files, List, % ( selection ? "Selected":"") "Col1",,ahk_id %hwWindow% base := SubStr(A_Desktop,0,1)=="\" ? SubStr(A_Desktop,1,-1) : A_Desktop Loop, Parse, files, `n, `r { path := base "\" A_LoopField IfExist %path% ; ignore special icons like Computer (at least for now) ret .= path "`n" } } else { if selection collection := window.document.SelectedItems else collection := window.document.Folder.Items for item in collection ret .= item.path "`n" } return Trim(ret,"`n") }
通过添加当前日期字符串来重命名文件的上下文菜单项怎么样?如果合适,只需将以下代码复制到文本编辑器中,另存为
.reg
文件,然后右键单击新文件并选择Merge
.backup.ahk