Board logo

标题: [已解决]VBS怎样复制文件路径到剪贴板中? [打印本页]

作者: chensiyan    时间: 2010-11-6 12:04     标题: [已解决]VBS怎样复制文件路径到剪贴板中?

http://hi.baidu.com/null_vbt/blo ... 3896f41e17a2e3.html

VBS获取文件完整路径并存储(拖放操作)
2009-04-06 11:08'=======================================================================
'VBScript Source File -- 获取文件完整路径并存储(拖放操作)
'NAME:获取文件完整路径并存储(拖放操作)
'AUTHOR:Null
'DATE:2008-08-09
'COMMENT:获取文件完整路径并存储(拖放操作)
'=======================================================================
function getfolder()
getfolder=left(wscript.scriptfullname,instrrev(wscript.scriptfullname,"\")-1)
end function
path=left(wscript.scriptfullname,len(wscript.scriptfullname)-len(Wscript.ScriptName))
ptxt=path&"\Path.txt"
Set fso = wscript.CreateObject("Scripting.FileSystemObject")
set f=fso.opentextfile(ptxt,8,true)
path=Left(Wscript.ScriptFullName,len(Wscript.ScriptFullName))
if wscript.arguments.count=0 then
msgbox "请将需要操作文件拖放到本脚本上即可!",48,"提示"
wscript.quit
end if
for each fname in wscript.arguments
f.writeline(fname)
next
f.close


文件路径没有直接跑到剪贴板中,而是跑到了VBS所在路径中Path.txt中,帮忙修改下。







还有下面这个。
http://hi.baidu.com/oiioooiiii/b ... 8f29719f41db07ec5fa
vbs:很实用的工具——快速复制文件(夹)完整路径
2009年02月01日 星期日 下午 08:42
这vbs技术含量不高,不过很实用。


经常复制文件(夹)路径,

文件夹路径还好,直接复制就行;

文件路径就要先复制它所在文件夹的路径了,再属性,把文件名字复制,接起来才行,很烦。

那天灵感来了,就弄了个vbs,使发送到菜单里多个选项:复制路径。

具体操作:

建立一个vbs文件,名为:复制路径.vbs,内容为:

fileName=wscript.arguments(0)

set fso=createobject("scripting.filesystemobject")

fso.createtextfile("0").write(fileName)

set ws=createobject("wscript.shell")

ws.run "cmd /c type 0 |clip",0,-1

fso.deletefile("0")

保存,把这个vbs文件弄到sendto文件夹,

找不到sendto文件夹?运行下面的vbs,就会显示sendto文件夹的路径,

msgbox createobject("wscript.shell").specialfolders("sendto")

把第一个vbs丢进去,好了,你的右键发送到多了个:复制路径.vbs

当文件或文件夹被发送到它之后,文件(夹)的完整路径就已经进入剪切板了!

还有,如果不喜欢那个图标或菜单选项有个vbs的扩展名,

可以把第一个vbs存好,再把它的快捷方式丢到sendto,这样,图标或文件名就随你改了(改那个快捷方式的哈!!!!)

执行完事后,结果也不对。
也帮忙看一下。

[ 本帖最后由 chensiyan 于 2010-11-6 13:21 编辑 ]
作者: chensiyan    时间: 2010-11-6 12:22

对了,我再啰嗦一下啊,我要的效果是:一拖当前图标到VBS程序上,就在剪贴板中得到了 完整的文件路径。
例如:C:\Documents and Settings\Administrator\桌面\clipTest.txt
作者: broly    时间: 2010-11-6 12:41     标题: 回复 2楼 的帖子

你的是XP系统吗?WIN7下此代码不可用
  1. if wscript.arguments.count=0 then
  2. wscript.echo "请将文件拖放到本脚本上!"
  3. wscript.quit
  4. end if
  5. dim fso,f
  6. set fso = wscript.createobject("scripting.filesystemobject")
  7. Set f = fso.GetFile(WScript.Arguments(0))
  8. Clipboard.Clear
  9. Clipboard.SetText f
  10. set f = nothing
  11. set fso = nothing
复制代码

作者: chensiyan    时间: 2010-11-6 12:52

原帖由 broly 于 2010-11-6 12:41 发表
你的是XP系统吗?WIN7下此代码不可用if wscript.arguments.count=0 then
wscript.echo "请将文件拖放到本脚本上!"
wscript.quit
end if
dim fso,f
set fso = wscript.createobject("scripting.filesystemobject ...


系统属性
        常规        计算机名        硬件        高级

        系统:
        Microsoft Windows XP
        Professional
        版本 2002
        Service Pack 3

 

感谢回复,运行缺少对象,还是报错,还得再修改下。

[ 本帖最后由 chensiyan 于 2010-11-6 12:57 编辑 ]
作者: chensiyan    时间: 2010-11-6 12:56

对了,我有个运行正常的。要不你参考下:

Dim Wsh
Set objArgs = WScript.Arguments
Set Wsh = WScript.CreateObject("WScript.Shell")
WScript.Sleep(00000)
Wsh.Run "C:\nircmdc.exe clipboard set " & """"& objArgs(0) &"""",0,True
Set Wsh=NoThing
WScript.quit

不过,要依赖于nircmd,这是我不希望用到的;因为几行代码就能搞定的事,何苦又多用一个呢。能少则少,实用为本。
作者: broly    时间: 2010-11-6 13:10     标题: 回复 5楼 的帖子

原先那个错了
  1. if wscript.arguments.count=0 then
  2. wscript.echo "请将文件拖放到本脚本上!"
  3. wscript.quit
  4. end if
  5. dim fso,f
  6. set fso = wscript.createobject("scripting.filesystemobject")
  7. Set f = fso.GetFile(WScript.Arguments(0))
  8. Set wsShell = CreateObject("WScript.Shell")
  9. wsShell.Run "mshta vbscript:ClipboardData.SetData("&chr(34)&"text"&chr(34)&"," &Chr(34)& f&Chr(34)& ")(close)",0,True
  10. set f = nothing
  11. set fso = nothing
  12. set wsshell = nothing
复制代码

作者: chensiyan    时间: 2010-11-6 13:18

原帖由 broly 于 2010-11-6 13:10 发表
原先那个错了

if wscript.arguments.count=0 then
wscript.echo "请将文件拖放到本脚本上!"
wscript.quit
end if
dim fso,f
set fso = wscript.createobject("scripting.filesystemobject")
Set f = fso.G ...



434字节的.vbs,就搞定了!
万分感谢啊,这次 我那WIN+C,一键得到当前选中图标的完整路径就Oh yeah了。


最少的代码,办同样的实事。感谢解决。版主你一定要重赏啊!!!




欢迎光临 批处理之家 (http://bathome.net./) Powered by Discuz! 7.2