![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-07 07:19 |
共 48,040 主题排行 / 350,125 发帖 / 今日 1 篇 / 48,252 会员排行 |
| DOS疑难解答 & 问题讨论 (解答室) » 如何获得命令执行后返回的值 |
| 可打印版本 3,369 / 38 |
| 第1楼 kavenlee72 | 发表于 2008-01-02 12:55 |
| 中级用户 发帖 87 积分 369 | |
|
如何获得命令执行后返回的值 如何获得命令执行后返回的值?
比如,有个文件,名为a.txt,内容是: 1 用type命令: C:\>TYPE A.TXT C:\>1 在批处理中如何获得这个type命令执行后显示的1,并把它加1后保存入a.txt中,即a.txt的内容就变为2了 C:\>TYPE A.TXT C:\>2 环境要求:DOS6.22或DOS7.1 谢谢! |
|
| 第2楼 everdos | 发表于 2008-01-03 01:27 |
| 初级用户 发帖 21 积分 52 | |
|
for /f %%a in (a.txt) do set /a pp=%%a+1
echo %pp% > a.txt |
|
| 第3楼 lianjiang2004 | 发表于 2008-01-03 09:13 |
| 金牌会员 发帖 1,884 积分 3,946 | |
|
楼上的,dos下能用吗?呵呵。
|
|
| 第4楼 fastslz | 发表于 2008-01-03 10:21 |
| 铂金会员 发帖 2,315 积分 5,493 来自 上海 | |
|
test1.bat
test2.bat 给个思路,代码未测试 |
|
| 第5楼 fastslz | 发表于 2008-01-03 11:00 |
| 铂金会员 发帖 2,315 积分 5,493 来自 上海 | |
|
测试代码可以了,只是执行结果echo %1>A.TXT 其实是echo 2>A.TXT,所以要加转定义符号echo ^%1>A.TXT
|
|
| 第6楼 fastslz | 发表于 2008-01-03 11:40 |
| 铂金会员 发帖 2,315 积分 5,493 来自 上海 | |
|
加强判断errorlevel返回值
test1.bat test2.bat |
|
| 第7楼 kavenlee72 | 发表于 2008-01-04 10:26 |
| 中级用户 发帖 87 积分 369 | |
|
测试时不知哪里出了问题?有两个问题:
(1)出现“一般性错误读驱动器F”的提示 (2)第二次运行test1.bat后的结果还是2,而没有变成3 请指教。 下面是运行的结果 E:\>TYPE A.TXT 1 E:\>TEST1 一般性错误读驱动器F A:放弃,R:重试,F:失败?a E:\>type a.txt 2 e:\>test1 一般性错误读驱动器F A:放弃,R:重试,F:失败?a E:\>type a.txt 2 不知如何贴图,只好敲上去了 |
|
| 第8楼 fastslz | 发表于 2008-01-04 10:48 |
| 铂金会员 发帖 2,315 积分 5,493 来自 上海 | |
|
出现一般性错误读驱动器F和代码无关,代码部分没尝试要访问F盘
纯DOS代码不稳定很容易出现一般性错误读驱动器F这样的错误,请检查你的批处理代码是否有访问F盘部分,或者不要加载光驱驱动。 另外6楼的代码你可以在XP下测试,代码纯DOS和XP通用的,只是纯DOS要把echo ^%1>A.TXT改为echo %1>A.TXT [ Last edited by fastslz on 2008-1-4 at 11:04 AM ] |
|
| 第9楼 kavenlee72 | 发表于 2008-01-04 11:56 |
| 中级用户 发帖 87 积分 369 | |
|
我是按6楼的代码进行测试的,一点都没变
|
|
| 第10楼 kavenlee72 | 发表于 2008-01-04 12:05 |
| 中级用户 发帖 87 积分 369 | |
|
(1)在XP下测试没有问题,能够替加,但到9后就不能再加了。
(2)在DOS7.1下测试就出现“一般性错误读驱动器F”。而且不会替加 |
|
| 第11楼 fastslz | 发表于 2008-01-04 12:10 |
| 铂金会员 发帖 2,315 积分 5,493 来自 上海 | |
|
我猜测分析下是什么原因吧
F应该是你的光盘盘符,你启动的DOS下没有find.com外部命令,而Path变量里有%CDROM%或F:\.....,这个时候DOS就尝试读取光盘下目录寻找find.com,所以出现一般性错误读驱动器F,纯DOS下就这样没个细节都不能错。 最后再强调下纯DOS要把6楼的代码echo ^%1>A.TXT改为echo %1>A.TXT |
|
| 第12楼 fastslz | 发表于 2008-01-04 12:23 |
| 铂金会员 发帖 2,315 积分 5,493 来自 上海 | |
(1)在XP下测试没有问题,能够替加,但到9后就不能再加了。 只能是9呢也没办法,是find.com限制,因为10里面包含1,如果用sed就没有这个限制了 |
|
| 第13楼 kavenlee72 | 发表于 2008-01-04 13:02 |
| 中级用户 发帖 87 积分 369 | |
|
谢谢! 真的是没有find.exe命令。加上后就OK了!
在dos7.1下就没有办法突破10以内的限制吗? |
|
| 第14楼 kavenlee72 | 发表于 2008-01-04 13:11 |
| 中级用户 发帖 87 积分 369 | |
|
在新DOS时代网站的DOS使用中有介绍count,加法计算的工具,但不知哪里有下载?论坛里没找到
|
|
| 第15楼 fastslz | 发表于 2008-01-04 13:22 |
| 铂金会员 发帖 2,315 积分 5,493 来自 上海 | |
|
@echo off
call test2.bat 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 :start1 if "%1"=="" goto end sed -n "/%1/p" A.TXT>nul if not errorlevel 1 if errorlevel 0 goto xxx shift goto start1 goto end :xxx shift echo %1>A.TXT :end sed纯DOS版我的google论坛上有,点我签名连接 sed用法http://sed.sourceforge.net/sed1line_zh-CN.html |
|
| 1 2 3 下一页 |
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |