首页
社区
课程
招聘
DOS批处理
发表于: 2013-8-8 16:17 8970

DOS批处理

2013-8-8 16:17
8970
有一个DOS应用程序a.exe,在运行的过程中需要输入一些参数,比如
DOS  >  a.exe
a.exe>  请选择参数(1, 2, 3):
a.exe> 1
a.exe> 请选择颜色(1: red  2:green):
a.exe> 1
a.exe> ............

请问这种情况下如何做批处理可以自动送入这些参数,谢谢!

补充说明一下:DOS>和a.exe>只是我用来表示当前是在DOS系统下还是在运行应用程序中。

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (17)
雪    币: 175
活跃值: (40)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
(echo 1
echo 1)|a.exe
2013-8-8 16:37
0
雪    币: 35
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
可能可以用管道符。
set /p  a=
具体哪个命令我忘了= =
2L的方法是在开头显示一个a.exe。
2013-8-8 16:39
0
雪    币: 151
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
您好,我刚试了一下,这样参数1没有送到应用程序内部
2013-8-8 16:44
0
雪    币: 175
活跃值: (40)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
用vbs

Set W = CreateObject("WScript.Shell")
Set E = W.Exec("a.exe")
E.StdIn.WriteLine "1"
E.StdIn.WriteLine "1"
2013-8-8 17:13
0
雪    币: 151
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
您好,我先使用前面两句:
Set W = CreateObject("WScript.Shell")
Set E = W.Exec("a.exe")
这样会出来DOS窗口,但里面什么都没有
而使用W.Run("a.exe")则可以
2013-8-8 17:38
0
雪    币: 36
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
@ECHO OFF
CHOICE /C 123 /N /M "请选择参数(1,2,3)"
IF ERRORLEVEL 3 GOTO END
IF ERRORLEVEL 2 GOTO SIZE
IF ERRORLEVEL 1 GOTO COLOR
:COLOR
SET /P a=请选择颜色(1:red 2:green):
IF %a%==1 ECHO red
IF %a%==2 ECHO GREEN
PAUSE
GOTO END
:SIZE
:END
ECHO GOODBYE


楼主可以运行一下,对比看看两种命令的区别
2013-8-9 12:54
0
雪    币: 2434
活跃值: (1427)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
8
echo 1 > tmp.txt
echo 1 >> tmp.txt
a.exe < tmp.txt
2013-8-9 15:34
0
雪    币: 35
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
choice.com不是系统自带的,
2013-8-9 20:52
0
雪    币: 36
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
不好意思我使用的是 windows 7的命令提示符,如果您的xp不能使用CHOICE 的话可以使用其中的 SET /P 那一部分
SET /P a=请选择颜色(1:red  2:green):
IF %a%==1 ECHO red
IF %a%==2 ECHO GREEN
PAUSE

如果是纯Dos环境的话,SET似乎没有/P这个参数,至少我的MS-DOS7.1是这样
2013-8-10 12:08
0
雪    币: 175
活跃值: (40)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
11
没有回显不是重点,重点是我给出的那个包含四句话的vbs能用不?
2013-8-10 23:30
0
雪    币: 807
活跃值: (2348)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
用记事本编辑一个文本文件,名字叫 “par.txt”,内容很简单,一共两行,每行一个1,因为楼主要求键盘输入两个1。
<---“par.txt”内容开始
1
1
<---“par.txt”内容结束
把 “par.txt”与 “a.exe”放在同一个目录下,并来到该目录下,输入命令:

a.exe  <  par.txt

    这只是程序需要键盘输入两个1的情况,如果需要输入其它值,修改“par.txt”就可以了,如果还要键盘输入后面的参数,只需要按程序要求的形式按顺序,对号入座补到参数文件的后面即可,楼主不妨一试。
2013-8-11 00:31
0
雪    币: 3
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
C:\tool\test>echo 1 3 1 | test.exe
haha
test4
text2

C:\tool\test>echo 1 3 3 | test.exe
haha
test4
text4

测试成功
2013-8-14 14:35
0
雪    币: 151
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
经过测试可行,非常感谢!
2013-8-19 11:55
0
雪    币: 151
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
[QUOTE=xoxin;1209898]
C:\tool\test>echo 1 3 1 | test.exe
haha
test4
text2

C:\tool\test>echo 1 3 3 | test.exe
haha
test4
text4

测试成功[/QUOTE]

测试可行,使用也很方便,感谢!
2013-8-19 11:57
0
雪    币: 151
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
可以使用,实现的功能比我预期的还要好,开始没搞清楚vbs怎么用,非常感谢!
2013-8-19 11:58
0
雪    币: 222
活跃值: (241)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
yys
17
这个也需要学习下,楼主提出的好,各位回答得更好 。

C:\tool\test>echo 1 3 1 | test.exe
haha
test4
text2

C:\tool\test>echo 1 3 3 | test.exe
haha
test4
text4
2013-8-20 07:53
0
雪    币: 42
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
7楼详细 精辟
2013-8-23 23:14
0
游客
登录 | 注册 方可回帖
返回
//