• 有一种叫做 Command Processor Extensions 的东西,即命令处理器扩展。他会使命令更加高级,功能更多。

在 cmd 里可以使用 ECHO %CMDEXTVERSION% 查看当前版本。

  • 在 cmd.exe 控制台窗口中输入命令,跟在 Windows Explorer 中双击 bat 执行相同的命令,其表现是不一样的。
  • 双击 bat 等同于把 bat 的内容 cmd 里一行一行命令敲进去(多行的命令在cmd里并不好敲)
  • 若要学习各个命令的详细文档,可在 cmd 中输入例如 SET /? > SET.txt 保存到文本文件中再打开阅读,这样比较方便。在 cmd 中如果文本太长他会逐步显示,比较麻烦,也不能用鼠标选中或者查找。
  • 变量延迟展开(Delayed environment variable expansion)

(SET /? 中有详细说明)

cmd 里的变量都是“环境变量”,通常是先 SET,再使用 %var% 这样的形式使用。%var% 是在读取当前命令时展开的。这是什么意思?

     set VAR=before
if "%VAR%" == "before" (
set VAR=after
if "%VAR%" == "after" @echo If you see this, it worked
)

第4行永远不会打印。因为第4行的 %VAR% 在第2行命令“读取”时,已经被展开,即 before。第3行的赋值已经不可能影响第4行了。我猜是因为第4行是在第2行的if 里面的,在读取第2行时,第4行也读取了,所以就被展开了。

跟C++对比,命令行里的 “环境变量” 实际是介于 “真变量” 和 “宏变量” 之间的东西。

“延迟变量展开” 的意思是基本上就是把 “环境变量” 变为 “真变量”。

要改成这么写:!VAR!

set VAR=before
if "%VAR%" == "before" (
set VAR=after
if "!VAR!" == "after" @echo If you see this, it worked
)

如何开启 “延迟变量展开”?

This support is always disabled by default, but may be enabled/disabled via the /V command line switch to CMD.EXE.  See CMD /?

  • 环境变量字符串替换
SET foo=helloworld
ECHO %foo:hello=% // world
ECHO %foo:hello=love% // loveworld
  • 环境变量子字符串
SET foo=helloworld

// 前面是起始索引,后面是长度
ECHO %foo:~,% // h,index=0, length=1
ECHO %foo:~-% // ld,意思是 index=-2=length(helloworld)-2=8, length未指定就是指取到最后面
ECHO %foo:,-% // helloworl, 意思是 index=0, length=length(helloworld)-1=9

Windows bat 学习(高级)的更多相关文章

  1. Windows bat 学习(初级)

    http://steve-jansen.github.io/guides/windows-batch-scripting/part-1-getting-started.html 注释:REM 或 :: ...

  2. windows bat脚本编写

    windows批处理 (cmd/bat) 编程详解 开始之前先简单说明下cmd文件和bat文件的区别:在本质上两者没有区别,都是简单的文本编码方式,都可以用记事本创建.编辑和查看.两者所用的命令行代码 ...

  3. Windows bat脚本的for语句

    Windows bat脚本的for语句基本形态如下: 在cmd窗口中:for %I in (command1) do command2 在批处理文件中:for %%I in (command1) do ...

  4. 最全的Windows Azure学习教程汇总

    Windows Azure 是微软基于云计算的操作系统,能够为开发者提供一个平台,帮助开发可运行在云服务器.数据中心.Web 和 PC 上的应用程序. Azure 是一种灵活和支持互操作的平台,能够将 ...

  5. Windows bat with adb

    /********************************************************************* * Windows bat with adb * 说明: ...

  6. Bash On Windows的学习

    Bash On Windows的学习 Bash On Windows的卸载 删除软件和设置:在 cmd 运行lxrun /uninstall 删除所有文件:在cmd中运行lxrun /uninstal ...

  7. 【记录一次windows技术学习】使用笔记本DOS命令搭建WLAN热点

    [记录一次windows技术学习]使用笔记本DOS命令搭建WLAN热点 时间:2017-10-14 22:36:13 撰写者:AK末影人 [转发请注明出处] --------------------- ...

  8. Windows BAT 命令下del 与 rd 命令

    https://blog.csdn.net/jigetage/article/details/81180757 RD 与 DEL 命令 windows bat 目录和文件的删除处理. 命令:RD,删除 ...

  9. 在 Windows 中为高级用户配置 IPv6 的指南

    在 Windows 中为高级用户配置 IPv6 的指南 适用于: Windows 10, version 1809Windows Server 2019, all versionsWindows Se ...

随机推荐

  1. 微软职位内部推荐-Senior Software Engineer-Eco

    微软近期Open的职位: The MOD Ecosystem team is dedicated to expanding the reach and value of Office by enabl ...

  2. Actual Time Cost

  3. 20135220谈愈敏Linux Book_1&2

    第一章 Linux内核简介 从unix的历史视角来认识Linux内核与Linux操作系统的前世今生. Unix历史 贝尔实验室设计的一个文件系统原型逐渐演化而成Unix,而后Unix操作系统用C语言重 ...

  4. “数学口袋精灵”第二个Sprint计划(第三天)

    “数学口袋精灵”第二个Sprint计划----第三天进度 任务分配: 冯美欣:欢迎界面的背景音乐完善 吴舒婷:游戏界面的动作条,选择答案后的音效 林欢雯:代码算法设计 进度:   冯美欣:欢迎界面背景 ...

  5. mac下mongoDB的使用

    第一步: 我们在网上找到mongoDB的安装文件包,下载下来然后放在mac系统的指定位置,如图所示: 第二步:打开数据库服务端 我们在bin目录下执行mongod这个命令: 首先cd到bin目录 然后 ...

  6. PAT 1048 数字加密

    https://pintia.cn/problem-sets/994805260223102976/problems/994805276438282240 本题要求实现一种数字加密方法.首先固定一个加 ...

  7. PHP操作Redis数据库常用方法

    Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API. Redis支持的数据类型有 Stirng(字符串), Lis ...

  8. OneZero第四周第一次站立会议(2016.4.11)

    1. 时间: 15:10--15:25  共计15分钟. 2. 成员: X 夏一鸣 * 组长 (博客:http://www.cnblogs.com/xiaym896/), G 郭又铭 (博客:http ...

  9. 初识elasticsearch_1(基本概念和基本操作)

    初识 ElasticSearch是一个基于Lucene的搜索服务器,它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口.本博客部分基于es的官方文档.es的官方文档网址如下:h ...

  10. 神奇的Redis延迟

    最近在做某业务Redis的缩容工作,涉及到数据迁移,而Redis的数据迁移看起来蛮简单的,一对一的数据迁移只需要在slave行配置masterauth 和slaveof 两个参数即可,当然迁移过程中涉 ...