在 Windows 资源管理器中复制 + 粘贴时,我可以立即编辑文件名而不是使用“-复制”吗?

在 Windows 资源管理器中复制 + 粘贴时,我可以立即编辑文件名而不是使用“-复制”吗?

我经常将文件复制并粘贴到同一个文件夹中(快速按 Ctrl+C,然后按 Ctrl+V)。

似乎 Windows 的默认行为是将重复文件重命名为“文件名- 复制。扩大“。

相反,我想让重复的文件立即“请求”一个新名称 - 让重命名框抓住焦点,这样我就可以重命名文件并避免冲突。

这可能吗?

答案1

Ctrl+C、Ctrl+V、F2

我就是这么做的。因为当你从不同的文件夹复制时,这看起来不可能实现。

答案2

谢谢@卡兰对于问题评论中的 AutoHotkey 想法。

以下脚本从 Explorer 中当前选定的文件中获取文件名,显示一个消息框以输入新名称,然后创建该文件的副本。我还没有测试过如果选择多个文件会发生什么。根据您的需要进行调整:

#Requires AutoHotkey v2.0-
#Warn
#SingleInstance

#HotIf WinActive("ahk_exe explorer.exe")

^q::DuplicateFile(GetSelectedFilePaths())

GetSelectedFilePaths() {
    winClass := WinGetClass( "ahk_id" . hWnd := WinExist("A"))
    if (winClass ~= "Progman|WorkerW|(Cabinet|Explore)WClass") {
        shellWindows := ComObject("Shell.Application").Windows
        if (winClass ~= "Progman|WorkerW")
            shellFolderView := shellWindows.Item( ComObject(VT_UI4 := 0x13, SWC_DESKTOP := 0x8) ).Document
        else {
            for window in shellWindows
                if (hWnd = window.HWND) && (shellFolderView := window.Document)
                    break
        }
        result := ""
        for item in shellFolderView.SelectedItems
            result .= (result = "" ? "" : "`n") . item.Path
        if !result
            result := shellFolderView.Folder.Self.Path
    } else {
        ClipSave := ClipboardAll
        Clipboard := ""
        SendInput "^c"
        ClipWait 2
        result := Clipboard
        Clipboard := ClipSave
    }
    Return result
}

DuplicateFile(Source, Overwrite := false) {
    SplitPath Source, &name, &dir, &ext, &name_no_ext, &drive

    IB := InputBox("Please enter the new name:", "Duplicate file", "w200 h80", name_no_ext)
    if IB.Result = "OK"
        FileCopy Source, dir "\" IB.Value "." ext, Overwrite
}

我从以下网址获取了 explorer 脚本的代码AutoHotkey 论坛,但已将其改编为 v2。

虽然这不是问题,但还要注意,可以通过HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\NamingTemplates\CopyNameTemplate在注册表中编辑 (String) 来更改默认重命名模板(即“-Copy”)。默认值为%s - Copy,其中%s是旧名称。这在以下部分中进行了描述这里

相关内容