Board logo

标题: [技术讨论] vbs弹出选择目录对话框并传递此目录变量 [打印本页]

作者: winsfly    时间: 2014-9-25 08:50     标题: vbs弹出选择目录对话框并传递此目录变量

本帖最后由 winsfly 于 2014-9-25 22:58 编辑

本人是一个cs1.5骨灰级玩家,常在全国各地玩的话,想写一个直接就可以进入服务器或者登陆器的vbs,效果:点击此vbs可以直接弹出一个对话框标题为请选择cs1.5的目录的对话窗口,然后复制我的脚本文件到此目录,并修改cs的分辨率和cdkey,最后直接运行cstrike.exe.     有些bat代码提供在此
reg add "HKCU\Software\Valve\CounterStrike\Settings" /f /v "EngineType" /t REG_DWORD /d 2                           
reg add "HKCU\Software\Valve\CounterStrike\Settings" /f /v "EngineModeW" /t REG_DWORD /d 1024
reg add "HKCU\Software\Valve\CounterStrike\Settings" /f /v "EngineModeH" /t REG_DWORD /d 768
reg add "HKCU\Software\Valve\CounterStrike\Settings" /f /v "EngineMode" /t REG_DWORD /d 7
reg add "HKCU\Software\Valve\CounterStrike\Settings" /f /v "key" /t "REG_SZ" /d 3333333333333                      说明:上面都是cs的设置,进入cs就不用再烦人地去设置分辨率和cdkey了
xcopy *.* vbs中选择的目录变量\cstrike\ /y                 说明:这一步是复制我的脚本文件到cs目录
vbs中选择的目录变量\cstrike.exe -noipx -console -game cstrike -numericping +connect 61.147.112.48:27066 +password 0                说明:运行cs游戏并直接连接网上的服务器ip

下面是我搞了好久卡在复制脚本文件的那里了(objpath变量引用错误):
Const MY_COMPUTER = &H11&
Const WINDOW_HANDLE = 0
Const OPTIONS = 0
  
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace(MY_COMPUTER)
Set objFolderItem = objFolder.Self
strPath = objFolderItem.Path
  
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.BrowseForFolder _  
(WINDOW_HANDLE, "Select a folder:", OPTIONS, strPath)
  
If objFolder Is Nothing Then
Wscript.Quit
End If
  
Set objFolderItem = objFolder.Self
objPath = objFolderItem.Path
  
set fso=CreateObject("Scripting.FileSystemObject")
fso.copyfile "*.*","objPath\" 就是这一步出错了,提示目录不存在或者错误,我的意思就是复制当前vbs所在目录下所有文件到vbs选择的cs目录变量
作者: yu2n    时间: 2014-9-25 15:12

你的代码问题很多,我能帮你解决一个问题:
如何弹出文件夹选择框,获取用户选择的路径。
  1. '示例
  2. strPath = BrowseForFolder("请选择游戏所在目录:")
  3. Msgbox "你选的位置是:" & vbCrLf & strPath
  4. ' 浏览文件夹
  5. Function BrowseForFolder(ByVal strTips)
  6.   Dim objFolder
  7.   Set objFolder = CreateObject("Shell.Application").BrowseForFolder (&H0, strTips, &H0010 + &H0001)
  8.   If (Not objFolder Is Nothing) Then BrowseForFolder = objFolder.Self.Path  'objFolder.Items().Item().Path
  9. End Function
复制代码
另外,复制文件操作需要目标与来源,你上面的代码写法有问题。
作者: dahual    时间: 2014-9-25 15:17

变量和字符串的区别:
fso.copyfile "*.*","objPath\"
fso.copyfile "*.*",objPath & "\"
作者: CrLf    时间: 2014-9-25 15:53

我怎么觉得这用批处理更方便...
作者: winsfly    时间: 2014-9-25 22:49

回复 4# CrLf


    批处理没有弹出选择目录的对话框出来,只能用vbs
作者: winsfly    时间: 2014-9-25 22:50

回复 3# dahual


    引用变量还是提示找不到目录
作者: winsfly    时间: 2014-9-25 23:02

回复 2# yu2n


    fso.copyfile "*.*","objPath\"   我的本意是复制vbs所在目录所有文件到开始选择的目录变量里面,那个*.*是vbs所在目录里所有的文件没错吧,可能就是后面的这个变量引用错误,请大侠教我
作者: winsfly    时间: 2014-9-25 23:13

回复 7# winsfly


    我测试了,把objPath的双引号去掉就可以了    哈哈后




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