复制和重命名文件(Windows 资源管理器)时我厌倦了以下步骤:
- Ctrl+C
- Ctrl+V
- 导航键
- F2
Windows 中是否没有任何功能或快捷方式可以复制文件并立即处于重命名模式?
这可能是一个非常复杂的问题,但每天这样做 50 次至少可以节省 50*2 次键盘敲击。
附言:我知道您可以使用 CMD 来执行此操作copy "file1.txt" "file2.txt"
,但我想直接在 Windows 资源管理器中执行此操作。
答案1
; Press F1 in Explorer to copy and manually rename the copy of the selected file
; - If the size of the selected is less 50 MB, directly in the explorer
; - otherwise using an input box (because the copying process takes more time)
#If WinActive("ahk_class CabinetWClass")
$F1::
ClipSaved := ClipboardAll
clipboard := ""
Send, ^c
ClipWait, 2
if (!ErrorLevel)
{
SplitPath, clipboard,, dir, ext, NameNoExt
If (ext = "")
{
MsgBox, No file selected
clipboard := ClipSaved
return
}
FileGetSize, size, %clipboard%, M
If (size < 50)
{
Sleep, 100
Send, ^v
Sleep, 500
; Send, {F2} ; or
SendInput, {F2}%NameNoExt% ; if you want to remove " - Copy"
}
else
{
InputBox, UserInput, Filename, Enter a name for the file,, 350, 120,,,,, %NameNoExt%
if (!ErrorLevel)
FileCopy, %clipboard%, %dir%\%UserInput%.%ext%, 1
}
}
else
MsgBox, No file selected
Sleep, 300
clipboard := ClipSaved
return
#If
答案2
我认为最好的方法是编写一些可以执行所需操作的脚本,然后将其放入注册表中,这样当您右键单击文件 -> 使用哪个文件打开时,它就会出现。该脚本会将您的文件作为参数,然后根据需要进行复制和重命名(特别是如果您只想重命名,如示例中所示,使用数字后缀)。
如果您只需要键盘,您可以在桌面上放置脚本的快捷方式,并在快捷方式属性中为其分配键盘快捷键。
如果您需要为文件指定特定名称(即不仅仅是自动后缀),您可以随时从脚本中弹出自己的输入框 - 这在大多数语言中都很容易。
底线是,如果你可以编写代码,那么就可以完成...如果不行,那么这可能是您迈出第一步编写代码的良好环境!
答案3
这正是您想要的。
- 从以下位置安装 AutoHotkey这里。
- 创建带有
.ahk
扩展名的文件并将以下代码粘贴到其中。 - 双击它即可运行。
- 选择要复制并重命名的文件。
- 按Ctrl+ Alt+A申请。
^!a:: ; Press [ Control + Alt + A ].
Explorer_GetSelection(hwnd="")
{
hwnd := hwnd ? hwnd : WinExist("A")
WinGetClass class, ahk_id %hwnd%
if (class="CabinetWClass" or class="ExploreWClass" or class="Progman")
for window in ComObjCreate("Shell.Application").Windows
if (window.hwnd==hwnd)
CurrentWindow := window.Document.SelectedItems
for item in CurrentWindow
{
CopyNumber := 1
Selectedfile := ""
Selectedfile := item.path
SplitPath, % Selectedfile,name, dir, ext, name_no_ext
Loop
{
if FileExist( dir "\" name_no_ext "-" CopyNumber "." ext )
CopyNumber += 1
else
{
FileCopy, % Selectedfile, %dir%\%name_no_ext%-%CopyNumber%.%ext%
Break
}
}
}
}
Return