Board logo

标题: [已解决]解包的VBS调用自定义函数出错? [打印本页]

作者: s700800900    时间: 2010-6-21 20:48     标题: [已解决]解包的VBS调用自定义函数出错?

代码如下,这是一个缩影,但包括了我想表达的错误信息,它的用处是把别的地方拖上来的文件解包到d:\内,问题如下:如果直接双击运行,一切正常,如果把一个压缩包拖入后,1.txt文件却生成在了C:\根目录下,而不是我想要的当前VBS所在的目录。求原因和解决办法。
  1. set ws=wscript.createobject("wscript.shell")
  2. set fs=wscript.createobject("scripting.filesystemobject")
  3. set arg=wscript.arguments
  4. errlvl_0_="No error"
  5. errlvl_1_="no file"
  6. if arg.count <> 0 then
  7. set oexec=ws.exec("""7z.exe"" x " & chr(34) & arg(0) & chr(34) & " -od:\ -aoa")
  8. error_(oexec.exitcode)
  9. else
  10. error_(1)
  11. end if
  12. function error_(error)
  13.     set write_log=fs.opentextfile(ws.CurrentDirectory & "\1.txt",8,true)
  14.     select case error
  15.         case 0
  16.             write_log.writeline(errlvl_0_)
  17. case 1
  18.     write_log.writeline(errlvl_1_)
  19.         case else
  20.             write_log.writeline(null)
  21.     end select
  22.     write_log.close
  23. end function
复制代码

作者: s700800900    时间: 2010-6-21 21:26

啊,突然想到批处理当中也有这个问题,明白了。但用在批处理当中的解决办法在VBS中没什么效果。。求解

[ 本帖最后由 s700800900 于 2010-6-21 21:30 编辑 ]
作者: Spring    时间: 2010-6-21 23:56

我一般都不用
ws.CurrentDirectory
而是
left(wscript.scriptfullname, len(wscript.scriptfullname) - len(wscript.scriptname))
作者: zqz0012005    时间: 2010-6-22 00:16

相对路径问题

开始→运行:cmd,cmd提示符的当前目录就是拖放时的工作目录(未充分验证是否一定等于%userprofile%)。
双击运行时工作于脚本文件所在目录。

if arg.count <> 0 then
    'ws.CurrentDirectory = fso.GetParentFolderName(arg(0))
    ws.CurrentDirectory = fso.GetParentFolderName(WScript.ScriptFullName)
...

如果是bat,当工作目录与脚本路径相关时,则在bat首尾分别加上
pushd "%~dp0"
...
popd
bat对路径有要求时建议用此法。
作者: s700800900    时间: 2010-6-22 12:02

cmd我明白怎么回事。。只是不清楚vbs当中的解决方法而已。。谢谢各位,我去研究。。




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