标题: [其他] 请教若干批处理命令的语法问题 [打印本页]
作者: saint_Zuo 时间: 2011-12-19 16:28 标题: 请教若干批处理命令的语法问题
本帖最后由 CrLf 于 2011-12-19 20:15 编辑
1、 请教为什么有些命令的参数与命令之间可加空格也可以不加,如dir/b与dir /b都不会出错,而有些命令与参数之间必须要至少有一个空格呢?如for /L中的for与/L之间至少要有一个空格。
2、 请教dos中的变量命名究竟有哪些规则?
————————————————————————
- rem 首先建立临时文件test.txt
- echo ;注释行,这是临时文件,用完删除 >test.txt
- echo 11段 12段 13段 14段 15段 16段 >>test.txt
- echo 21段,22段,23段,24段,25段,26段 >>test.txt
- echo 31段-32段-33段-34段-35段-36段 >>test.txt
- FOR /F "eol=; tokens=1,3* delims=,- " %%i in (test.txt) do echo %%i %%j %%k
- Pause
- Del test.txt
复制代码
在上面的代码中echo %%i %%j %%k为什么不能改为echo %%i %%m %%n呢?另外变量名中能包括数字或汉字吗?哪些字符是不能在变量名中出现的
3、 为什么有的字符串中间有空格一定要用双引号,而有的可加可不加? 假如C盘根目录下有”program files”、"te st"两个文件夹。为什么在下面的代码中cd program files
中的program files可以不加双引号(加也可以),而
dir "te st"中的"te st"一定要加双引号呢?
_______________
- C:
- pause
- cd program files
- cd..
- pause
- dir "te st"
- pause
复制代码
_________________
作者: Demon 时间: 2011-12-19 17:02
不用DOS好多年。
作者: qq2501 时间: 2011-12-19 18:06
我来解释你的其中一个问题,cd 后面可以不加引号,是因为你只能进入一个文件夹。而dir 可以一次列出多个文件夹的内容,用空格隔开。
作者: CrLf 时间: 2011-12-19 20:09
1、for 和 if 是关键字,当 cmd 发现当前命令为此二者时将进行特殊解析。
其余命令由除重定向之外的首个字母到第一个分隔符或 / 为止是一个完整的命令名称或路径。
2、%%i、%%j、%%k 等都是 for 独有的参数变量(令牌),由 tokens 按字符顺序启用,默认情况下,tokens=1
[系列教程]批处理for语句从入门到精通[20101225更新] :http://bbs.bathome.net/thread-2189-1-1.html
其顺序按 unicode 编码排列,可以使用任意字符(包括汉字),但仅能为一个字符。
[讨论]批处理for命令的参数和扩展特性:http://bbs.bathome.net/viewthread.php?tid=12500
Windows 代码页与字符顺序:http://bbs.bathome.net/viewthread.php?tid=12329
3、双引号的作用除了转义,还有划分参数的作用,如 1 2 3 是三个参数,而 "1 2" 3 则是两个参数
凡是只支持一个参数的命令(开关除外),都无须使用 ""。
而支持多个参数的命令,则需要用 "" 对参数重新划分。
作者: applba 时间: 2011-12-19 20:38
1 不要拿For来做例子,For是特殊例子。
2 没有引号的空格是分隔符。
作者: Batcher 时间: 2011-12-19 22:32
不相干的问题建议分开发帖求助
作者: wc726842270 时间: 2011-12-20 14:18
CMD/? 。。。。。。。
作者: saint_Zuo 时间: 2011-12-23 10:28
本帖最后由 saint_Zuo 于 2011-12-23 10:29 编辑
谢谢各位了,这里的论坛的朋友好热心,我是个新手,要学的太多了!请多多指教!
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |