[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[已解决]解包的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
复制代码
1

评分人数

    • Batcher: 感谢主动给标题标注[已解决]字样PB + 2

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

TOP

相对路径问题

开始→运行: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对路径有要求时建议用此法。
命令行参考:hh.exe ntcmds.chm::/ntcmds.htm
求助者请拿出诚心,别人才愿意奉献热心!
把查看手册形成条件反射!

TOP

我一般都不用
ws.CurrentDirectory
而是
left(wscript.scriptfullname, len(wscript.scriptfullname) - len(wscript.scriptname))

TOP

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

[ 本帖最后由 s700800900 于 2010-6-21 21:30 编辑 ]

TOP

返回列表