找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 132721|回复: 40

[原创] 批处理set 命令使用详解(2007-11-11日更新)

[复制链接]
发表于 2007-11-4 10:23:14 | 显示全部楼层 |阅读模式
youxi01撰写,转载请注明:youxi01@bbs.bathome.net

set,E文翻译过来就是“设置”的意思,相当于数学里的“令”。
如:set X=5,就是令X=5的意思。

set的通常用法示例:
1、set    显示环境变量:
如:在命令行下输入:
set                 会显示当前所有的系统环境变量
set c               会显示所有的以c开头或C开头的变量(也即不区分大小写);
set com             会显示所有的以com开头或COM开头的变量(不区分大小写);
2、set     设置环境变量,用法示例:set  表达式,
如:set str=ok
就是将变量str的值设置成字符串“OK”

注意:set str=ok>
这个在批处理运行过程中会出错,系统会提示:“命令语法不正确。”
原因是,因为 变量str 中的值“ok>”的字符">"为一特殊字符,会被系统当成 定向 符处理,所以会运行出错,那如果确实要设置这样的变量str,值为 "ok>"怎么办呢?解决办法有二:将特殊字符转义,转义方法在该特殊字符前加一个“^”,如:set str=ok^> (这种方法比较少用,因为没有多少应用价值)
常见的解决办法,在set后面将整个表达式用 引号括起来,如:set "str=>"


3、带参数 /a的set         数值计算
用法示例:set /a num=2*10,这样变量num的值将变为:20

4、带参数 /p 的set    等待用户输入
windows 2000 和windows 是没有choice这个命令,choice的等待用户输入功能就要通过set /p来实现
演示如下:
  1. @echo off
  2. set /p str=请输入你想输入的字符:
  3. echo 你输入的字符串为:%str%

  4. pause>nul
复制代码
set /p的特殊应用(set /p=<nul相当于输出字符并不带回车,利用这个性质,可以做出比较漂亮的动画),用法示例:
  1. @echo off
  2. for /l %%i in (1 1 70) do (
  3.    set /p=O<nul
  4.    for /l %%a in (1 1 50) do ver>nul
  5. )
  6. pause>nul
复制代码
注:代码中用到了一句for /l %%a in (1 1 50) do ver>nul,它的目的是利用for循环运行某一命令来达到延时的目的。

另外一个例子,输出一个字符串到文本文件,且不产生空行:
  1. set /p =bbs.bathome.net<nul > 1.txt
复制代码


5、利用set截取字符
变量字符截取点点通

评分

参与人数 1技术 +1 收起 理由
zhonglumthgh + 1 感谢分享

查看全部评分

发表于 2007-11-4 13:13:04 | 显示全部楼层
沙发了,怎么这么短?
 楼主| 发表于 2007-11-4 14:45:14 | 显示全部楼层
呵呵,你怎么总是抢沙发啊?
这个只是起个头啊?
相当于期数预告一样...
发表于 2007-12-23 06:30:20 | 显示全部楼层

鸣谢

这个站点真实用,管理人员自己出的一些很容易让人看懂的事例,你们是最可爱的人
发表于 2007-12-23 10:37:23 | 显示全部楼层
原帖由 youxi01 于 2007-11-4 14:45 发表
呵呵,你怎么总是抢沙发啊?
这个只是起个头啊?
相当于期数预告一样...

哈哈
我们目标就是做最实用得批处理网站
朋友觉得好,帮忙多宣传。
发表于 2008-2-14 11:22:31 | 显示全部楼层

有点不懂

帮忙解释一下如下代码
for /l %%i in (1 1 70) do (
   set /p=O<nul
   for /l %%a in (1 1 50) do ver>nul
)

不知道do  wer >nul  是什么意思,还有set /p =0<nul 又是什么意思
郁闷
.....
希望多指教,非常感谢!!!
 楼主| 发表于 2008-2-14 14:26:01 | 显示全部楼层

回复 6楼 的帖子

do ver>nul(这里执行的是ver>nul,do属于for的用法)的意思是:执行ver(显示windows版本)并且将结果输出到空设备nul,即不显示结果在屏幕上。结合for的意思为:重复执行ver命令50次,它是为了达到延时的目的。

set /p =0<nul的意思你自己执行一下那段代码就应该清楚是什么意思了。
发表于 2008-3-8 18:32:36 | 显示全部楼层
虽然我不懂,但我一定要顶,我相信我总会看懂一些的!~`
发表于 2008-4-4 01:27:04 | 显示全部楼层
好东西,我好好学习,超越你们
发表于 2008-4-4 06:26:16 | 显示全部楼层
C:\Documents and Settings\Administrator>for /l %i in (1 1 70) do ( set /p=O<nul<BR>for /l %a in (1 1 50) do ver>nul  )
此时不应有 do
代码不行啊
发表于 2008-9-11 22:08:33 | 显示全部楼层
很好的东西。受教了。
发表于 2008-9-11 22:26:47 | 显示全部楼层
呵呵。很好的教程。不过,就有点短。。
发表于 2008-9-21 22:09:17 | 显示全部楼层
管理员的教程通俗易懂,比其他网上的教程好多了,谢谢楼主!
发表于 2008-10-1 17:04:38 | 显示全部楼层
呵呵……有点懂了,顶一下
发表于 2008-11-6 16:30:27 | 显示全部楼层
学习了,有些意犹未尽,希望楼主继续补充
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 01:46 , Processed in 0.023238 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表