需求描述:
在listary列表中定位完文件,想通过命令直接将文件名复制到剪贴板。
目前listary里已有"复制路径至剪贴板",想问下如果我只是想复制文件名,该如何设置?
我新建了一个命令,但不知道应该往参数里输什么内容。
需求描述:
在listary列表中定位完文件,想通过命令直接将文件名复制到剪贴板。
目前listary里已有"复制路径至剪贴板",想问下如果我只是想复制文件名,该如何设置?
我新建了一个命令,但不知道应该往参数里输什么内容。
尝试了一下,找到了通过cmd复制内容到剪贴板的方法,但是试了下好像没法成功调用。
研究了一下,调用cmd的话有些问题,用调用vbs脚本的方式解决了,。
脚本代码:
path = WScript.Arguments(1)
Set fso = CreateObject(“Scripting.FileSystemObject”)
SetClipboardText fso.GetFileName(path)
Sub SetClipboardText(Text)
Set wsShell = CreateObject(“WScript.Shell”)
wsShell.Run “mshta vbscript:ClipboardData.SetData(”“text”"," &Chr(34)& Text &Chr(34)& “)(close)”,0,True
End Sub
运行了一下,显示下标越界啊,楼主知道怎么改么
题主的这个思路很妙!
试了一下,估计是粘贴代码的时候有点小问题,我试着修正了一下,在我的PC上可以工作的代码如下:
path = WScript.Arguments(0)
FSOGetFileNameV2 path
Sub FSOGetFileNameV1(selectedFile)
Set wsShell = CreateObject("WScript.Shell")
Set FSO = CreateObject("Scripting.FileSystemObject")
'Get File Name with Extension
FileName = FSO.GetFileName(selectedFile)
'And if only want: Get File Name with no Extension
'FileNameWOExt = Left(FileName, InStr(FileName, ".") - 1)
wsShell.Run "cmd.exe /c echo " & FileName & "| clip", 0, True
End Sub
Sub FSOGetFileNameV2(selectedFile)
Set wsShell = CreateObject("WScript.Shell")
Set FSO = CreateObject("Scripting.FileSystemObject")
FileName = FSO.GetFileName(selectedFile)
'And if only want: Get File Name with no Extension
'FileNameWOExt = Left(FileName, InStr(FileName, ".") - 1)
'Chr(34), it will return double-quotes
wsShell.Run "mshta vbscript:ClipboardData.SetData(""text""," &Chr(34)& FileName &Chr(34)& ")(close)",0,True
End Sub
两种方式,都可以,不过V1函数的结果多一个回车,剪切板结果用作修改文件名称时,不影响粘贴,建议使用V2,题主的方式。