[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[其他] 请教若干批处理命令的语法问题

本帖最后由 CrLf 于 2011-12-19 20:15 编辑

1、        请教为什么有些命令的参数与命令之间可加空格也可以不加,如dir/b与dir  /b都不会出错,而有些命令与参数之间必须要至少有一个空格呢?如for /L中的for与/L之间至少要有一个空格。
2、        请教dos中的变量命名究竟有哪些规则?
————————————————————————
  1. rem 首先建立临时文件test.txt  
  2. echo ;注释行,这是临时文件,用完删除 >test.txt  
  3. echo 11段 12段 13段 14段 15段 16段 >>test.txt  
  4. echo 21段,22段,23段,24段,25段,26段 >>test.txt  
  5. echo 31段-32段-33段-34段-35段-36段 >>test.txt  
  6. FOR /F "eol=; tokens=1,3* delims=,- " %%i in (test.txt) do echo %%i %%j %%k
  7. Pause  
  8. 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"一定要加双引号呢?
_______________
  1. C:
  2. pause
  3. cd program files
  4. cd..
  5. pause
  6. dir "te  st"
  7. pause
复制代码

_________________

不用DOS好多年。

TOP

我来解释你的其中一个问题,cd 后面可以不加引号,是因为你只能进入一个文件夹。而dir 可以一次列出多个文件夹的内容,用空格隔开。

TOP

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 则是两个参数
凡是只支持一个参数的命令(开关除外),都无须使用 ""。
而支持多个参数的命令,则需要用 "" 对参数重新划分。

TOP

1 不要拿For来做例子,For是特殊例子。
2 没有引号的空格是分隔符。

TOP

不相干的问题建议分开发帖求助
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

CMD/? 。。。。。。。
枫中残雪:风停了,我的心却在动,让我心中的寒意走向远方

TOP

本帖最后由 saint_Zuo 于 2011-12-23 10:29 编辑

谢谢各位了,这里的论坛的朋友好热心,我是个新手,要学的太多了!请多多指教!

TOP

返回列表