请教一下,想创建一个"复制文件名"的命令

需求描述:
在listary列表中定位完文件,想通过命令直接将文件名复制到剪贴板。

目前listary里已有"复制路径至剪贴板",想问下如果我只是想复制文件名,该如何设置?
我新建了一个命令,但不知道应该往参数里输什么内容。

image

尝试了一下,找到了通过cmd复制内容到剪贴板的方法,但是试了下好像没法成功调用。
image

研究了一下,调用cmd的话有些问题,用调用vbs脚本的方式解决了,。
image
脚本代码:
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,题主的方式。