只要我通过命令行使用它,我的AutoIt脚本就可以工作。我可以使用$CmdLine[1]
并传递路径作为参数。现在我尝试将脚本转换为新方法以避免命令行参数。
您打开资源管理器窗口并选择一个文件,例如C:\test.txt
。之后,使用 CTRL + WIN + C 触发AutoIt功能。该脚本应查看在活动的资源管理器窗口中选择的文件,并检索路径C:\test.txt
并将其分配给$file
变量。
这是我的工作进展中,我被困住了。
第5行$CmdLine[1]
需要更改为我不知道的秘密函数。
;Assign key combination "CTRL-WIN-C" to function "copyUNC"
HotKeySet("^#c", "CopyUNC")
;function to copy UNC path of selected Windows Explorer file/folder to clipboard
func CopyUNC()
$file = FileGetLongName($CmdLine[1]) ;THIS LINE NEEDS TO BE CHANGED
$drive = StringLeft($file, 2)
$UNCdrive = DriveMapGet($drive)
If $UNCdrive = "" Then
$UNCfile = $file
else
$UNCfile = $UNCdrive & StringTrimLeft($file, 2)
endif
ClipPut($UNCfile)
endfunc
;necessary loop so AutoIt script stays active and in Tray
While 1
Sleep(100)
WEnd
问:如何从Windows资源管理器中将所选文件/文件夹的路径导入AutoIt v3.3.8.1?
注意#1:我不想使用注册表和右键单击技巧来传递参数
注意#2:如果选择了多个文件,则只传递第一个文件。不要过度复杂化
答案 0 :(得分:1)
CMDLINE [1]与你想要的东西无关。
如果要在Windows资源管理器中手动选择文件后通过热键激活脚本,则需要检查资源管理器窗口本身。
以下是在资源管理器中检索所选项目的功能
Func GetExplorerSelection()
Local $saveClip = ""
Local $filesFolders = ""
Local $handle = _WinAPI_GetForegroundWindow()
Local $className = _WinAPI_GetClassName($handle)
If $className = "ExploreWClass" Or $className = "CabinetWClass" Then
$saveClip = ClipGet()
Send("^c")
Sleep(50) ; give clipboard time to react
$filesFolders = ClipGet()
ClipPut($saveClip)
; test if $filesFolders contains @LF and split if so etc..
; code to call StringSplit() etc..
EndIf
EndFunc