标题: [特效代码] 批处理如何实现弹出类似vbs的inputbox输入对话框并把输入内容赋值给变量 [打印本页]
作者: 92kp 时间: 2008-11-2 11:37 标题: 批处理如何实现弹出类似vbs的inputbox输入对话框并把输入内容赋值给变量
本帖最后由 pcl_test 于 2016-11-22 23:41 编辑
bat 从msgbox中获取变量值
朋友们,请教:
在运行bat的时候,弹出一个windows文本框。通过这个文本框,输入内容,作为一个变量的值,怎么实现呢?
作者: pusofalse 时间: 2008-11-2 11:44
作为一个变量的值? 这个变量要在哪里用呢,BAT中还是VBS中?
作者: Batcher 时间: 2008-11-2 11:44
BAT里面没有msgbox
如果你是指VBS里面的msgbox
请到VBS版块去提问
作者: pusofalse 时间: 2008-11-2 12:07
试下这个,借助其他工具与临时文件,粗略的实现了。但成功率不高,因为getwininfo.exe效率不高,不能实施捕捉到输入信息。。。- @echo off
- del %temp%\tmp 2>nul
- start mshta vbscript:Inputbox("test","test")
- ping 127.1 /n 2 >nul
- :loop
- if exist %temp%\tmp goto next
- set "s=%var%"
- for /f "tokens=2*" %%a in ('getwininfo /text "test"^|^|echo a^>%temp%\tmp') do (
- set "var=%%b"
- goto loop
- )
- :next
- del %temp%\tmp 2>nul
- echo %s%
- pause
复制代码
先到第三方工具版块搜索getwininfo.exe
作者: rat 时间: 2008-11-2 13:14
- ' & @cls & for /f %%a in ('cscript "%~f0" //nologo //e:vbscript') do @echo %%a & pause>nul & exit /b
- WSH.Echo MsgBox("Are you sure to exit?", vbYesNo, "EXIT")
复制代码
[ 本帖最后由 rat 于 2008-11-2 13:22 编辑 ]
作者: 92kp 时间: 2008-11-2 22:38
那能请大虾们把MSG用法说说吗?
作者: 92kp 时间: 2008-11-2 22:43
十分感谢,很好。我顺便问下,怎么增强它的灵活性呢。比如选择YES以后执行的代码放在什么地方,选择NO的代码应该放在什么地方。
作者: 92kp 时间: 2008-11-2 22:52
上面这个代码为什么选择“确定”显示6,而选择“取消”显示7呢
作者: rat 时间: 2008-11-2 23:58
增强灵活性的话,最好写临时文件:- @echo off
- >0.vbs echo WSH.Echo MsgBox("Are you sure to exit?", vbYesNo, "EXIT")
- for /f %%a in ('cscript 0.vbs //nologo //e:vbscript') do if %%a equ 6 (goto Y) else goto N
- :Y
- echo Yes
- goto End
- :N
- echo No
- goto End
- :End
- del 0.vbs
- pause>nul
复制代码
关于为什么选择“确定”显示6,而选择“取消”显示7,你可以在下面这个教程里的下载链接里找到
Microsoft Windows脚本技术.chm
然后打开它,搜索Msgbox:
http://bbs.bathome.net/thread-2382-1-1.html
作者: 92kp 时间: 2008-11-3 00:15
我说直接点。我就是想在BAT运行的过程中能弹出一个相当于windows中的input文本框,好让我输入一些字符作为,程序下面的某个变量的值。
不要告诉用SET /P VAR =
这个我会用。
主要我的程序是隐藏运行的。
作者: 92kp 时间: 2008-11-3 00:17
靠,rat版主,你真好,太好了,太好了。
作者: 92kp 时间: 2008-11-3 00:23
不好意思。我是想用INPUTBOX 用键盘为一个变量输入一个值。
版主的只能选择YES OR NO
而我想要的时候,输入字符,作为变量的值
作者: Batcher 时间: 2008-11-3 00:29 标题: 回复 12楼 的帖子
你在顶楼提问的时候,如果能够一次性把问题描述清楚,那会非常节省 rat 版主的时间,你的问题也能得到及时的解决,何乐而不为呢?
作者: rat 时间: 2008-11-3 00:30
你问题的标题写的是MsgBox,怎么搞的- @echo off
- >0.vbs echo WSH.Echo InputBox("Please input?", "Get Value", "OK")
- for /f %%a in ('cscript 0.vbs //nologo //e:vbscript') do set "s=%%a"
- echo.%s%
- del 0.vbs
- pause>nul
复制代码
作者: 92kp 时间: 2008-11-3 09:12
不是我不想,而是我水平有限,呵呵呵。
不过非常感谢各位帮助。
作者: Batcher 时间: 2008-11-3 16:15 标题: 回复 15楼 的帖子
这个跟水平高低没有关系吧?总不能连自己想问什么问题都搞不清楚吧?
作者: batgaoso 时间: 2021-5-30 18:32
用这个试试,我大号(1152)制作的
对了,希望Batcher能原谅我
链接:https://pan.baidu.com/s/1tRYcI9f7oQzxggVTjDnOUQ
提取码:5ove
作者: Batcher 时间: 2023-8-1 22:26
回复 1# 92kp
test-1.bat- @echo off
- for /f "delims=" %%i in ('powershell "Add-Type -AssemblyName Microsoft.VisualBasic; [Microsoft.VisualBasic.Interaction]::InputBox('What is your name:')"') do (
- set "MyInput=%%i"
- )
- echo,%MyInput%
- pause
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |