![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-09-23 22:05 |
共 47,812 主题排行 / 349,917 发帖 / 今日 0 篇 / 48,274 会员排行 |
| DOS学习入门 & 精彩文章 (教学室) » [求助]批处理中 录入屏幕输入的字符串变量 语句如何 |
| 可打印版本 2,011 / 6 |
| 第1楼 hzy | 发表于 2003-07-23 00:00 |
| 高级用户 发帖 135 积分 578 | |
|
[求助]批处理中 录入屏幕输入的字符串变量 语句如何 我想写一个这样的批处理:
通过屏幕输入“字符串”,然后将这个%字符串%变量赋值到下面的命令,该怎么写?要用什么工具吗? for %a in (c: d: e: f: g: h do Dir /B /S %a\%字符串% |
|
| 第2楼 Roy | 发表于 2003-07-23 00:00 |
| 管理员 发帖 1,633 积分 4,869 | |
|
:: Get user input - includes error check
@echo off echo e102'set %%1='> %temp%.\t1.dat for %%? in (w q) do echo %%?>> %temp%.\t1.dat :input echo. echo Type input: FC con nul /lb1 /n |FIND "1:" > %temp%.\t2.bat :: Error checking begins here FIND "|" %temp%.\t2.bat > nul if not errorlevel=1 goto error FIND "=" %temp%.\t2.bat > nul if not errorlevel=1 goto error FIND " nul if not errorlevel=1 goto error FIND ">" %temp%.\t2.bat > nul if not errorlevel=1 goto error :: Error checking end DEBUG %temp%.\t2.bat nul call %temp%.\t2.bat 字符串 for %%? in (t1.dat t2.bat) do del %temp%.\%%? echo 字符串=%字符串% goto eof :error echo. echo @PROMPT Invalid input. Invalid characters: $Q $L $G $B$_> %temp%.\t2.bat %comspec% /c %temp%.\t2.bat |FIND ":" goto input :eof |
|
| 第3楼 hzy | 发表于 2003-07-23 00:00 |
| 高级用户 发帖 135 积分 578 | |
|
谢谢斑竹!可是我看了还是不太懂!
|
|
| 第4楼 GOTOmsdos | 发表于 2003-08-18 00:00 |
| 铂金会员 发帖 1,827 积分 5,154 | |
|
首先我觉得批处理的手段一般来说达不到问者的这个要求(否则要编一个复杂的脚本),能不能灵活处理一下,比如,要用"%wer%"变量就得预先设好(,还可当场在屏幕中输入"set wer=dfhgire.txt",这是不是满足了问者要在屏幕输入字符串的要求?),
要不然问者的要求是:在屏幕输入仅仅这个"变量名"(wer),这跟批处理的"%--%"变量的用法矛盾. 其实,还有一种变量可以符合问者的基本意图: %1-%9 写成批处理: for %a in (c: d: e: f: g: h do dir /b /s %a\%1然后在屏幕输入dfhgire.txt 这样是不是基本满足问者的要求? |
|
| 第5楼 willsort | 发表于 2003-09-06 00:00 |
| 元老会员 发帖 1,512 积分 4,432 | |
|
Re hzy:
正如 GOTOmsdos 所说,单纯使用基本dos命令所组成的批处理,要达到问者的这个要求,需要编写相当复杂的脚本。Roy给出的范例就可见一般。通常这种情况下,我们所要做的是转化矛盾,灵活处理,而非一味蛮干。事实上,Roy所给出的例子除了能让人惊讶、感叹和迷糊之外,没有什么其他的价值。虽然我自己也很喜欢让别人惊讶、感叹和迷糊 :) 再提供一个灵活的思路吧,通常在批处理中需要获取一个字符传,最简单也最常用的方法是使用命令行参数。我们可以在用户未输入参数串显示帮助文本,给出正确的参数用法;在输入错误的参数串时给出错误提示,这样做起来并不难。 或者,如果预见到字符串的可选域不是很大,那么可以“单项选择”: echo 1. *.txt 2. *.tmp 3. *.exe choice /c:123 /n 或者,你就想在批处理运行半截子之后,突然想到获取一个字符串,并且存在环境变量中,那么你需要一个工具:askenv.exe。“新dos时代”的脚本工具就有下载。 另外,纠正一个小bug:“通过屏幕输入“字符串”” 屏幕是输出设备,不能“输入”字符串,输入字符串通常是键盘的任务。 |
|
| 第6楼 iceboy | 发表于 2003-09-06 00:00 |
| 银牌会员 发帖 512 积分 1,681 | |
|
从上面的批处理程序,我们可以学到不少东西哦...
如,不确定 %TEMP% 是 C:\ 还是 C:\TEMP,就用 %TEMP%.\ 如果是 C:\,就成了 C:\.\ 如果是 C:\TEMP,就成了 C:\TEMP.\ 两者都没错哦! |
|
| 第7楼 jhhjwok | 发表于 2003-10-16 00:00 |
| 中级用户 发帖 52 积分 278 | |
|
用INPUT小程序可以操作!
|
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |