当autohotkey将文本字符串插入文件时,我需要该文件的名称和路径。AHK能给我吗?

当autohotkey将文本字符串插入文件时,我需要该文件的名称和路径。AHK能给我吗?,autohotkey,Autohotkey,我使用自动热键将文本字符串插入到文本文件中。 如何将该文件的路径和名称存储在新变量中 假设我使用此代码插入日期/时间戳: ::iii:: ; insert a date time stamp send, ID%A_YYYY%.%A_MM%.%A_DD%.%A_Hour%.%A_Min%.%A_Sec% return 如何修改代码以存储要标记的文件的路径和名称 像这样的 ::iii:: ; insert a date time stamp send, ID%A_YYYY%.%A_MM%.%A

我使用自动热键将文本字符串插入到文本文件中。 如何将该文件的路径和名称存储在新变量中

假设我使用此代码插入日期/时间戳:

::iii::  ; insert a date time stamp
send, ID%A_YYYY%.%A_MM%.%A_DD%.%A_Hour%.%A_Min%.%A_Sec%
return
如何修改代码以存储要标记的文件的路径和名称

像这样的

::iii::  ; insert a date time stamp
send, ID%A_YYYY%.%A_MM%.%A_DD%.%A_Hour%.%A_Min%.%A_Sec%
path = <code for extracting path>
filename = <code for extracting filename>
return
::iii::;插入日期时间戳
发送,ID%A_YYYY%。%A_MM%。%A_DD%。%A_小时%。%A_分钟%。%A_秒%
路径=<提取路径的代码>
filename=<提取文件名的代码>
返回
您可以使用命令获取当前活动窗口的完整路径:
WinGet,path,ProcessPath,A

path
是存储命令结果的变量。
ProcessPath
是命令的一个参数,告诉它要提取哪些信息,在本例中是进程路径。
A
表示您希望获取当前活动窗口的信息

要获取当前活动窗口的标题,请使用以下命令:
wingtactivetitle,thetitle

StringTrimRight
用于从窗口标题中删除“-Notepad”部分


您可以使用以下方法测试代码:

::iii::  ; insert a date time stamp
send, ID%A_YYYY%.%A_MM%.%A_DD%.%A_Hour%.%A_Min%.%A_Sec%
WinGet, path, ProcessPath, A
WinGetActiveTitle, thetitle
StringTrimRight, thetitle, thetitle ,10
Msgbox, path=%path% `ntitle=%thetitle%
return
试一试

编辑:

代替

SendInput, % GetFilePath_notepad() "`n"
SendInput, % GetFileName_notepad() "`n"
你可以用

FilePath := GetFilePath_notepad()
    SendInput, %FilePath%{Enter}
FileName := GetFileName_notepad()
    SendInput, %FileName%{Enter}

SendInput比Send更快更可靠

谢谢,但我不知道如何利用您的建议。我在第二行下面插入了您的代码,并使用“send,%path%”来显示变量“path”的内容,但给定的路径是指向notepad.exe的路径,而不是指向我插入文本字符串的文本文件。::uuu::send,ID%A_YYYY%。%A_MM%。%A_DD%。%A_Hour%。%A_Min%。%A_Sec%{enter}WinGet,path,ProcessPath,A send,%path%{enter}send,%ProcessPath%{enter}再次发送,%A%{enter}返回HI。两个变量%path%和%thetitle%不能满足我的需要。%路径%为我提供了软件记事本(“C:\Windows\System32\notepad.exe”)的路径,而不是我插入字符串的文件“C:\Users\espen\Dropbox\notes\”的路径标题%给了我窗口标题(“2014-07-30--13-47-15-记事本”),而不是我插入字符串的文件名“2014-07-30--13-47-15.txt”。谢谢!我尝试使用%FileName%作为变量,并用“send,%FileName%”将其写出,但什么也没有发生……请参阅此答案中的编辑。顺便说一句,您的“GetFilePath”代码是否可以修改为在任何文本编辑器上工作,而不仅仅是在记事本上?在其他编辑器中,获取文件路径要容易得多,因为它们可以将其显示为标题的一部分。顺便说一句,一个公认的答案可以帮助其他寻求类似解决方案的人,并鼓励那些提供帮助的人。
FilePath := GetFilePath_notepad()
    SendInput, %FilePath%{Enter}
FileName := GetFileName_notepad()
    SendInput, %FileName%{Enter}