找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 25472|回复: 7

[技术讨论] vbs弹出选择目录对话框并传递此目录变量

[复制链接]
发表于 2014-9-25 08:50:33 | 显示全部楼层 |阅读模式
本帖最后由 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目录变量
发表于 2014-9-25 15:12:01 | 显示全部楼层
你的代码问题很多,我能帮你解决一个问题:
如何弹出文件夹选择框,获取用户选择的路径。

  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
复制代码
另外,复制文件操作需要目标与来源,你上面的代码写法有问题。
发表于 2014-9-25 15:17:58 | 显示全部楼层
变量和字符串的区别:
fso.copyfile "*.*","objPath\"
fso.copyfile "*.*",objPath & "\"
发表于 2014-9-25 15:53:24 | 显示全部楼层
我怎么觉得这用批处理更方便...
 楼主| 发表于 2014-9-25 22:49:51 | 显示全部楼层
回复 4# CrLf


    批处理没有弹出选择目录的对话框出来,只能用vbs
 楼主| 发表于 2014-9-25 22:50:43 | 显示全部楼层
回复 3# dahual


    引用变量还是提示找不到目录
 楼主| 发表于 2014-9-25 23:02:11 | 显示全部楼层
回复 2# yu2n


    fso.copyfile "*.*","objPath\"   我的本意是复制vbs所在目录所有文件到开始选择的目录变量里面,那个*.*是vbs所在目录里所有的文件没错吧,可能就是后面的这个变量引用错误,请大侠教我
 楼主| 发表于 2014-9-25 23:13:19 | 显示全部楼层
回复 7# winsfly


    我测试了,把objPath的双引号去掉就可以了    哈哈后
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 16:47 , Processed in 0.010264 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表