用于定位驻留文件夹并突出显示活动文件的 AHK 代码
AHK code to locate the residing folder and highlight the active file
在使用不同的软件应用程序时,通常需要快速找到打开的活动文件的文件夹位置并突出显示或 select 活动文件。在同一文件夹中快速定位查找相关文件所需的驻留文件夹,重命名打开的文件或驻留文件夹或将文件移动到不同的相关文件夹。当前的选项需要浏览大量文件夹以查找和定位与一堆类似的其他文件一起埋藏的特定文件夹(类似于大海捞针)。 Microsoft Office 套件具有名为“文档位置”的内置功能,可以将其添加到快速访问工具栏。但它只允许查看文件夹位置或完整路径,但没有可用的单击命令或键(AFAIK)可以方便地跳转到该定位文件夹和 highlight/identified 打开的文件,以便进一步操作(例如重命名,移动)可以在那个特定的 file/folder 上完成。这也是其他软件应用程序的情况,其中本机程序可以选择获取完整路径但无法跳转到特定 file/folder。考虑将 Microsoft Office 套件应用程序之一(例如 word)作为测试用例,我可以想象如下过程;
- 1 获取当前打开的word文档的完整路径(D:\Folder\Subfolder\Mywordfile.docx)
- 2 关闭文件
- 3 资源管理器命令 select 并突出显示给定完整路径的文件夹中的文件(进程 1)
- 根据需要手动操作 file/folder 并双击 return 以归档操作应用程序(例如 word)。
在我对执行上述任务的评估中,有以下可能性
- 任务 1 Microsoft Word 有一个名为 "document location" 的内置函数,用于获取打开的文档的完整路径及其当前可能复制剪贴板中的文件路径。
- 任务 2 关闭文件(Ctrl+W 或 Ctrl+F4)
- 资源管理器命令的任务 3 AHK 代码 select 给定完整路径的文件(在任务 1 中可用)
我在任务 3 中遇到了困难,我尝试了每一个,但到目前为止没有成功
Clipboard := “fullpath” ; Full path (D:\Folder\Subfolder\Mywordfile.docx ) copied from Word
Run explorer /e, “Clipboard”
Run %COMSPEC% /c explorer.exe /select`, "%clipboard%"
到目前为止,上面的资源管理器命令只带我到我的文档文件夹,而不是在特定文件夹位置(任务 1 中的路径)。我很好奇知道剪贴板中给定完整路径的 select 文件的正确资源管理器代码是什么。感谢支持 AHK 代码或更好的方法来完成这项任务。提前致谢。
我不清楚为什么您的示例代码不起作用。我怀疑这是因为额外的字符。
在 运行 此命令后 Windows 资源管理器将打开并选择所需的文件(如果存在)。
FullPathFilename := "e:\temp\test.csv"
Explorer := "explorer /select," . FullPathFilename
Run, %Explorer%
我不知道你是否尝试过另一种方法,但我认为这种方法更简单、更短:
1) 将文档的完整路径存储在一个字符串中:oldfile = ActiveDocument.FullName
2) 用 ActiveDocument.SaveAs
另存为文档
3) 用Kill oldfile
删除旧文件
所有这些都是直接来自VBA,无需使用资源管理器shell。其他应用程序也是如此。
这是 Word 文档的完整工作代码:
Sub RenameActiveDoc()
Dim oldfile As String
Set myDoc = ActiveDocument
'1) store current file
oldfile = myDoc.FullName
'2) save as the active document (prompt user for file name)
myDoc.SaveAs FileName:=InputBox("Enter new name", "Rename current document", myDoc.Name)
'3) Delete the old file with
On Error GoTo FileLocked
Kill oldfile
On Error GoTo 0
Exit Sub
FileLocked:
MsgBox "Could not delete " & oldfile, vbInformation + vbOKOnly, "File is locked"
End Sub
由于 的贡献,我能够提出以下解决方案。但是我假设这个任务可能有更好的解决方案。
;;; Customize Document Location (Choose form All Commands) in Quick Access Toolbar and get its position (#4 for my case)
#If WinActive("ahk_class OpusApp") || WinActive("ahk_class XLMAIN") || WinActive("PPTFrameClass")
#p:: ;Close Word/Excel/PowerPoint Document and Locate in Explorer Folder Location
clipboard = ;empty the clipboard
Send !4 ; Select full path while document location at #4 position in Quick Access toolbar
Send ^c ; copy the full path
ClipWait ; waits for the clipboard to have content
Send {esc}
Send, ^{f4} ; Close opened document only but keep Word/Excel/PPT program running
Explorer := "explorer /select," . clipboard
Run, %Explorer%\
return
在使用不同的软件应用程序时,通常需要快速找到打开的活动文件的文件夹位置并突出显示或 select 活动文件。在同一文件夹中快速定位查找相关文件所需的驻留文件夹,重命名打开的文件或驻留文件夹或将文件移动到不同的相关文件夹。当前的选项需要浏览大量文件夹以查找和定位与一堆类似的其他文件一起埋藏的特定文件夹(类似于大海捞针)。 Microsoft Office 套件具有名为“文档位置”的内置功能,可以将其添加到快速访问工具栏。但它只允许查看文件夹位置或完整路径,但没有可用的单击命令或键(AFAIK)可以方便地跳转到该定位文件夹和 highlight/identified 打开的文件,以便进一步操作(例如重命名,移动)可以在那个特定的 file/folder 上完成。这也是其他软件应用程序的情况,其中本机程序可以选择获取完整路径但无法跳转到特定 file/folder。考虑将 Microsoft Office 套件应用程序之一(例如 word)作为测试用例,我可以想象如下过程;
- 1 获取当前打开的word文档的完整路径(D:\Folder\Subfolder\Mywordfile.docx)
- 2 关闭文件
- 3 资源管理器命令 select 并突出显示给定完整路径的文件夹中的文件(进程 1)
- 根据需要手动操作 file/folder 并双击 return 以归档操作应用程序(例如 word)。
在我对执行上述任务的评估中,有以下可能性
- 任务 1 Microsoft Word 有一个名为 "document location" 的内置函数,用于获取打开的文档的完整路径及其当前可能复制剪贴板中的文件路径。
- 任务 2 关闭文件(Ctrl+W 或 Ctrl+F4)
- 资源管理器命令的任务 3 AHK 代码 select 给定完整路径的文件(在任务 1 中可用)
我在任务 3 中遇到了困难,我尝试了每一个,但到目前为止没有成功
Clipboard := “fullpath” ; Full path (D:\Folder\Subfolder\Mywordfile.docx ) copied from Word
Run explorer /e, “Clipboard”
Run %COMSPEC% /c explorer.exe /select`, "%clipboard%"
到目前为止,上面的资源管理器命令只带我到我的文档文件夹,而不是在特定文件夹位置(任务 1 中的路径)。我很好奇知道剪贴板中给定完整路径的 select 文件的正确资源管理器代码是什么。感谢支持 AHK 代码或更好的方法来完成这项任务。提前致谢。
我不清楚为什么您的示例代码不起作用。我怀疑这是因为额外的字符。
在 运行 此命令后 Windows 资源管理器将打开并选择所需的文件(如果存在)。
FullPathFilename := "e:\temp\test.csv"
Explorer := "explorer /select," . FullPathFilename
Run, %Explorer%
我不知道你是否尝试过另一种方法,但我认为这种方法更简单、更短:
1) 将文档的完整路径存储在一个字符串中:
oldfile = ActiveDocument.FullName
2) 用
ActiveDocument.SaveAs
另存为文档
3) 用
Kill oldfile
删除旧文件
所有这些都是直接来自VBA,无需使用资源管理器shell。其他应用程序也是如此。
这是 Word 文档的完整工作代码:
Sub RenameActiveDoc()
Dim oldfile As String
Set myDoc = ActiveDocument
'1) store current file
oldfile = myDoc.FullName
'2) save as the active document (prompt user for file name)
myDoc.SaveAs FileName:=InputBox("Enter new name", "Rename current document", myDoc.Name)
'3) Delete the old file with
On Error GoTo FileLocked
Kill oldfile
On Error GoTo 0
Exit Sub
FileLocked:
MsgBox "Could not delete " & oldfile, vbInformation + vbOKOnly, "File is locked"
End Sub
由于
;;; Customize Document Location (Choose form All Commands) in Quick Access Toolbar and get its position (#4 for my case)
#If WinActive("ahk_class OpusApp") || WinActive("ahk_class XLMAIN") || WinActive("PPTFrameClass")
#p:: ;Close Word/Excel/PowerPoint Document and Locate in Explorer Folder Location
clipboard = ;empty the clipboard
Send !4 ; Select full path while document location at #4 position in Quick Access toolbar
Send ^c ; copy the full path
ClipWait ; waits for the clipboard to have content
Send {esc}
Send, ^{f4} ; Close opened document only but keep Word/Excel/PPT program running
Explorer := "explorer /select," . clipboard
Run, %Explorer%\
return