Board logo

标题: [数值计算] 纯DOS下接受字符输入的写法 [打印本页]

作者: wangx    时间: 2013-10-16 15:43     标题: 纯DOS下接受字符输入的写法

  1. @echo off
  2. set /p input=请输入:
  3. set num1=%input%
  4. set num2=123
  5. if %num1% equ %num2% echo "="
  6. if %num1% lss %num2% echo "<"
  7. if %num1% gtr %num2% echo ">"
  8. 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

  1. @echo off
  2. for /l %%a in (1,1,10) do (
  3.   set /a a+=%%a
  4.   call,set "ss=%%ss%%+%%a"
  5. )
  6. echo,%ss:~1%=%a%
  7. pause>nul
复制代码

作者: foxJL    时间: 2013-10-16 21:07

回复 7# wangx
  1. 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,提示“系统找不到指定文件”,应该是路径的问题,但不知道怎么改,你能帮我解答么,谢谢。
  1. @echo off
  2. set p="%~dp0MFcY5.rmvb_"
  3. for /l %%i in (1,1,5) do (
  4.     call,set p=%%p%%+"%~dp0MFcY5.rmvb_%%i.!mv"
  5. )
  6. echo %p:~21%
  7. copy /b %p% "d:\dos\MFcY5.rmvb"
  8. 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
  1. @echo off
  2. :_Loop
  3. cls
  4. set var=
  5. set Input=456
  6. set Num=123
  7. call w.bat box @test.bat:_Choice #1
  8. if errorlevel 100 goto _Exit
  9. if %?%#==1# goto _Start
  10. if %?%#==2# goto _Exit
  11. :_Choice "输入比较的数值:"
  12.         [$Input,8,U! ]
  13. [ 确定(&S)]    [ 取消(&C)]
  14. ::
  15. :_Start
  16. strings var=SUB %Input%,%Num% 2>nul
  17. if errorlevel 1 goto _Lss
  18. if %var%#==0# goto _Equ
  19. echo ">"
  20. pause
  21. goto _Loop
  22. :_Equ
  23. echo "="
  24. pause
  25. goto _Loop
  26. :_Lss
  27. echo "<"
  28. pause
  29. goto _Loop
  30. :_Exit
  31. 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