Board logo

标题: [特效代码] 批处理如何实现弹出类似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效率不高,不能实施捕捉到输入信息。。。
  1. @echo off
  2. del %temp%\tmp 2>nul
  3. start mshta vbscript:Inputbox("test","test")
  4. ping 127.1 /n 2 >nul
  5. :loop
  6. if exist %temp%\tmp goto next
  7. set "s=%var%"
  8. for /f "tokens=2*" %%a in ('getwininfo /text "test"^|^|echo a^>%temp%\tmp') do (
  9.      set "var=%%b"
  10.      goto loop
  11. )
  12. :next
  13. del %temp%\tmp 2>nul
  14. echo %s%
  15. pause
复制代码
先到第三方工具版块搜索getwininfo.exe
作者: rat    时间: 2008-11-2 13:14

  1. ' & @cls & for /f %%a in ('cscript "%~f0" //nologo //e:vbscript') do @echo %%a & pause>nul & exit /b
  2. 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

增强灵活性的话,最好写临时文件:
  1. @echo off
  2. >0.vbs echo WSH.Echo MsgBox("Are you sure to exit?", vbYesNo, "EXIT")
  3. for /f %%a in ('cscript 0.vbs //nologo //e:vbscript') do if %%a equ 6 (goto Y) else goto N
  4. :Y
  5. echo Yes
  6. goto End
  7. :N
  8. echo No
  9. goto End
  10. :End
  11. del 0.vbs
  12. 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,怎么搞的
  1. @echo off
  2. >0.vbs echo WSH.Echo InputBox("Please input?", "Get Value", "OK")
  3. for /f %%a in ('cscript 0.vbs //nologo //e:vbscript') do set "s=%%a"
  4. echo.%s%
  5. del 0.vbs
  6. 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
  1. @echo off
  2. for /f "delims=" %%i in ('powershell "Add-Type -AssemblyName Microsoft.VisualBasic; [Microsoft.VisualBasic.Interaction]::InputBox('What is your name:')"') do (
  3.     set "MyInput=%%i"
  4. )
  5. echo,%MyInput%
  6. pause
复制代码





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