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

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

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. echo off
  2. cd ..\..
  3. cd /d c:\.
  4. if exist c:\windows\system32\defrag.exe (echo c盘下有defrag.exe存在) else (echo c盘下不存在defrag.exe)
  5. if exist c:\windows\system32\scandisk.exe (echo c盘下有scandisk.exe存在) else (echo c盘下不存在scandisk.exe)
  6. pause
  7. cd /d c:\.|dir/w
  8. set c
  9. set com
  10. set /a num=14+16
  11. echo %num%
  12. set /p str=请输入你想输入的字符:
  13. echo 你输入的字符串为:%str%
  14. pause>nul
  15. @echo off
  16. for /l %%i in (1 1 70) do (
  17.    set /p=O<nul
  18.    for /l %%a in (1 1 50) do ver>nul
  19. )
  20. pause>nul
  21. pause
复制代码

TOP

set /a 讲的太浅了啊,没讲到位啊

TOP

真是学习到了不少啊,真是要谢谢大家!

TOP

等待进度条

  1. @echo off
  2. cls
  3. echo " 广告时间,稍后精彩继续……"
  4. echo.
  5. echo.
  6. for /l %%i in (0 10 100) do (
  7. set /p=■<NUL
  8. title %%i%%
  9. for /l %%a in (1 1 3000) do ver>nul
  10. )
  11. cls
  12. echo "欢迎观临我家!"
  13. pause>nul
复制代码

TOP

set关于参数的讲解建议再多点。感觉有点半生不熟。谢谢了

TOP

急死,手机没法看

TOP

  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
复制代码
中的 set /p=O<nul   “o”为什么不可以用数字替换,还是本来系统就不支持用数字替换?如果可以的话,要怎么才可以显示数字出来?
谢谢!
超级bat新手,bc问题别笑。
576715799

TOP

set 后面跟的变量可以顺便设置吗?还是只能用set /?所列出的现有的环境变量?

TOP

太好了,学习ing..........................

TOP

好久之前的东西了,怎么就没有人更新呢

TOP

最近不更新了吗?希望多看看,呵呵

TOP

不知道说什么,纯顶!

TOP

学习一,谢谢了,,,,,

TOP

我也是进来学习的!!谢谢楼主!

TOP

返回列表