标题: [数值计算] 纯DOS下接受字符输入的写法 [打印本页]
作者: wangx 时间: 2013-10-16 15:43 标题: 纯DOS下接受字符输入的写法
- @echo off
- set /p input=请输入:
- set num1=%input%
- set num2=123
- if %num1% equ %num2% echo "="
- if %num1% lss %num2% echo "<"
- if %num1% gtr %num2% echo ">"
- pause>nul
复制代码
这样一段代码,在纯dos下无法执行,在网上查到是说set在纯DOS中是不带开关的,所以set /p无效,
但是没找到解决办法,请问大佬们帮忙解答,谢过先。
作者: wangx 时间: 2013-10-16 16:29
有没有高手能解决这个问题呢
作者: foxJL 时间: 2013-10-16 16:52
choice命令
作者: wangx 时间: 2013-10-16 17:10
choice命令
foxJL 发表于 2013-10-16 16:52
版主你好,choice除了知道选择,(choice /c:dme defrag,mem,end ),关于接受输入的用法不知道啊,能给写一下么,多谢。
作者: wangx 时间: 2013-10-16 18:05
找了很多资料,没有找到解决方案啊,恩人在哪里啊?
作者: foxJL 时间: 2013-10-16 20:44
回复 5# wangx
嗯, choice只能接收一个字符作为菜单选项,不能接收别的指定之外的字符并赋值.
好多年没用DOS我也不清楚到底有没有相关命令.
copy con c:\123.txt 命令可以接收输入的字符并保存到123.txt. ctrl+z键结束.
似乎用处也不大,纯DOS下for好像是不带参数的
作者: wangx 时间: 2013-10-16 20:59
回复 wangx
嗯, choice只能接收一个字符作为菜单选项,不能接收别的指定之外的字符并赋值.
好多年没 ...
foxJL 发表于 2013-10-16 20:44
超级版主搞不定的话,估计群里也没人能搞定了。
版主我还有一个问题请教你,我想叠加字符串,但是不成功。
set p=1
for /l %%i in (1,1,10) do ( set p = %p%+%%i)写法肯定不对,能知道一下么,谢谢。
我想达到效果是1+2+3+4+...+10
作者: wangx 时间: 2013-10-16 21:03
超级版主搞不定的话,估计群里也没人能搞定了。
版主我还有一个问题请教你,我想叠加字符串,但是不成功 ...
wangx 发表于 2013-10-16 20:59
我弄出来了,把%p%改成!p!就行。
看来纯dos下读输入值得问题还得好好研究一下啊,有高人知道怎么弄的话,小弟感激涕零啊。
作者: batman 时间: 2013-10-16 21:05
- @echo off
- for /l %%a in (1,1,10) do (
- set /a a+=%%a
- call,set "ss=%%ss%%+%%a"
- )
- echo,%ss:~1%=%a%
- pause>nul
复制代码
作者: foxJL 时间: 2013-10-16 21:07
回复 7# wangx - for /l %%i in (1,1,100) do ( set/a p+=%%i)
复制代码
作者: foxJL 时间: 2013-10-16 21:13
上面的好像答非所问了...看错题目
作者: fastslz 时间: 2013-10-16 21:54
纯dos下用wbat.com
好久没碰这东西了,抱歉不能直接给你代码
作者: wangx 时间: 2013-10-16 22:04
本帖最后由 wangx 于 2013-10-16 23:13 编辑
纯dos下用wbat.com
好久没碰这东西了,抱歉不能直接给你代码
fastslz 发表于 2013-10-16 21:54
谢谢你的回答,我有个问题想请教一下。
d:\dos下有一些文件,MFcY5.rmvb_1.!mv,MFcY5.rmvb_2.!mv,MFcY5.rmvb_3.!mv....MFcY5.rmvb_20.!mv
我想通过copy MFcY5.rmvb_1.!mv+MFcY5.rmvb_2.!mv+MFcY5.rmvb_3.!mv...+MFcY5.rmvb_20.!mv变成MFcY5.rmvb
我在d:\dos执行这个bat,提示“系统找不到指定文件”,应该是路径的问题,但不知道怎么改,你能帮我解答么,谢谢。- @echo off
- set p="%~dp0MFcY5.rmvb_"
- for /l %%i in (1,1,5) do (
- call,set p=%%p%%+"%~dp0MFcY5.rmvb_%%i.!mv"
- )
- echo %p:~21%
- copy /b %p% "d:\dos\MFcY5.rmvb"
- pause
复制代码
作者: wangx 时间: 2013-10-16 23:14
上面的好像答非所问了...看错题目
foxJL 发表于 2013-10-16 21:13
你能看看上面那个问题么,谢谢。
作者: Demon 时间: 2013-10-17 00:09
现在都什么年代了。
作者: Batcher 时间: 2013-10-17 08:02
回复 13# wangx
是在DOS系统里面执行吗?
DOS里面的for命令不支持 /l 这种选项
作者: apang 时间: 2013-10-17 15:09
本帖最后由 apang 于 2013-10-17 18:25 编辑
保存为test.bat,需要strings和wbat- @echo off
- :_Loop
- cls
- set var=
- set Input=456
- set Num=123
- call w.bat box @test.bat:_Choice #1
- if errorlevel 100 goto _Exit
- if %?%#==1# goto _Start
- if %?%#==2# goto _Exit
-
- :_Choice "输入比较的数值:"
-
- [$Input,8,U! ]
-
- [ 确定(&S)] [ 取消(&C)]
- ::
-
- :_Start
- strings var=SUB %Input%,%Num% 2>nul
- if errorlevel 1 goto _Lss
- if %var%#==0# goto _Equ
- echo ">"
- pause
- goto _Loop
-
- :_Equ
- echo "="
- pause
- goto _Loop
-
- :_Lss
- echo "<"
- pause
- goto _Loop
-
- :_Exit
- exit
复制代码
用 strings 除法运算貌似不行,改成减法运算
作者: qzwqzw 时间: 2014-11-28 18:09
本帖最后由 qzwqzw 于 2014-11-28 20:39 编辑
不用第三方的方案也很多
Fc con、copy con、basic、%comspec%、ascode等等
建议你先看一下Timo Salmi教授的
Useful MS-DOS batch files and tricks
ftp://garbo.uwasa.fi/pc/link/tsbat.zip
http://www.netikka.net/tsneti/pc/link/tsbat.zip
附带链接
http://lipas.uwasa.fi/~ts/garbo.html
作者: CrLf 时间: 2014-11-28 19:41
回复 18# qzwqzw
下不了哟,要翻墙吗?
作者: qzwqzw 时间: 2014-11-28 20:37
不好意思
把很早前的链接翻出来
也没有检查
更新一下
http://www.netikka.net/tsneti/pc/link/tsbat.zip
http://lipas.uwasa.fi/~ts/garbo.html
作者: apang 时间: 2014-11-28 21:44
纯DOS唉,只是蜻蜓点水般接触过,已经找不到北了。
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |