批处理常见问题总结

详细请看视频:https://edu.csdn.net/course/detail/31305

1、Q:我在网上发现了一段批处理代码,要怎样处理才能使它运行起来?

  • A:批处理是解释型脚本语言,只需把代码复制下来,保存为以.bat或.cmd为后缀名的文件即可运行。不过,文件名最好不要和命令名重合,比如,不要保存为if.cmd、for.bat、set.cmd等文件;
  • 详细请看视频:https://edu.csdn.net/course/detail/31305

2、Q:我在几乎每段完整的批处理代码第一行都发现有 @echo off 这条语句,请问这是什么意思?可以不要吗?可以把它放到其他位置吗?

  • A:@echo off 的含义是:当批处理文件运行的时候,不在屏幕上显示每条语句;如果没有这条语句,那么,批处理文件中每一条将要执行到的语句,都会被显示在屏幕上。因为批处理在执行的时候,或多或少都会在屏幕上显示各种执行结果,如果去掉这条语句,那么,在默认情况下(没有重定向语句的时候),语句本身和执行结果都会显示在屏幕上,显示结果将十分混乱和繁杂,一般而言,这并不是我们需要的效果,这个时候,就需要在批处理文件的第一行写上 @echo off 这条语句;当然,@echo off 语句并不是必须的,在某些时候,我们并不需要它,比如,当我们调试代码的时候,一般都会去掉 @echo off 语句,再在适当的位置添加暂停命令pause,观察执行结果并定位出错位置;@echo off 语句可以放在任意位置,但是,只有在它之后的语句本身才不会显示在屏幕上。

3、Q:%var%中的百分号对是什么意思?!var!呢?

  • A:百分号对表示对变量值的引用,换句话说,%var% 在代码执行过程中,将会被变量var的具体值替换。假设 set var=abc,那么,%var% 就表示 abc 这个字符串;!var! 也是同样的含义,只不过,感叹号对是在启用了变量延迟之后才使用的。关于变量延迟的具体含义,请参考下一条。
  • 详细请看视频:https://edu.csdn.net/course/detail/31305

4、Q:经常看到 setlocal enabledelayedexpansion 这条语句,这是什么意思?在什么场合下使用?

  • A:setlocal enabledelayedexpansion 表示它之后的代码启用了变量延迟功能,此时,对变量的引用不再使用百分号对的格式,而是采用感叹号对格式,即用 !var! 格式替换 %var% 格式。
    关于环境变量延迟扩展,使用set /?可以查看到部分说明,不过考虑到其粗劣的翻译水平,建议在查看之前,首先chcp 437切换为英文查看原英文说明。鉴于文中已说得十分详尽,而且有数个代码示例,应该不难理解。在此仅略作一些补充。

    在许多可见的官方文档中,均将使用一对百分号闭合环境变量以完成对其值的替换行为称之为“扩展(expansion)”,这其实是一个第一方的概念,是从命令解释器的角度进行称谓的,而从我们使用者的角度来看,则可以将它看作是引用(Reference)、调用(Call)或者获取(Get)。而命令解释器是扩展环境变量的行为大致如下:首先读取命令行的一条完整语句,在进行一些先期的预处理之后,命令被解释执行之前,会对其中用百分号闭合的字符串进行匹配,如果在环境空间中找到了与字符串相匹配的环境变量,则用其值替换掉原字符串及百分号本身,如果未得到匹配,则用一个空串替换,这个过程就是环境变量的“扩展”,它仍然属于命令行的预处理范畴。而一条“完整的语句”,在NT的命令解释器CMD中被解释为“for if else”等含有语句块的语句和用“& | && ||”等连接起来的复合语句。因此,当CMD读取for语句时,其后用一对圆扩号闭合的所有语句将一同读取,并完成必要的预处理工作,这其中就包括环境变量的扩展,所以在for中的所有语句执行之前,所有的环境变量都已经被替换为for之前所设定的值,从而成为一个字符串常量,而不再是变量。无论在for中将那些环境变量如何修改,真正受到影响的只是环境变量空间,而非for语句内部。而为了能够在for语句内部感知环境变量的动态变化,CMD设计了延迟的环境变量扩展特性,也就是说,当CMD读取了一条完整的语句之后,它不会立即执行变量的扩展行为,而会在某个单条语句执行之前再进行扩展,也就是说,这个扩展行为被“延迟”了。延迟环境变量扩展特性在CMD中缺省是关闭的,开启它的方法目前有两个:一是CMD /v:off(此处说法有误,应为 CMD /v:on——namejm 注),它会打开一个新的命令行外壳,在使用exit退出这个外壳之前,扩展特性始终有效,常用于命令行环境中;二是setlocal EnableDelayedExpansion,它会使环境变量的修改限制到局部空间中,在endlocal之后,扩展特性和之前对环境变量的修改将一同消失,常用于批处理语句中。
    

5、Q:goto :eof 是什么意思?在什么情况下使用?

  • A:① 如果定义了 :eof 标签,则单独的 goto :eof 表示跳转到标签段 :eof,此时,goto :eof 等同于 goto eof;用于 call 语句子过程中的 goto :eof 表示跳转到此批处理文件的末尾
  • 详细请看视频:https://edu.csdn.net/course/detail/31305
       ② 如果没有定义 :eof 标签,则表示跳转到当前批处理文件的末尾,此时, eof 的含义是 end of file ,这是批处理中 goto :eof 的默认用法。这一语句常用于 call 语句的子过程中。例如如下代码:
  1. @echo off
  2. call :test1
  3. call :test2
  4. call :test3
  5. goto :eof
  6. :test1
  7. echo 这是第一个标签
  8. pause
  9. goto :eof
  10. :test2
  11. echo 这是第二个标签
  12. pause
  13. goto :eof
  14. :test3
  15. echo 这是第三个标签
  16. pause
  17. goto :eof
       如果某个标签段没有goto :eof,则该 call 语句调用子过程时,子过程将在第一个 goto :eof 出结束;如果没有任何 goto :eof 语句,call 语句将从该子过程的第一句开始执行,直到文件末尾处结束;如果 goto :eof 不是出现在 call 语句调用的子过程中,则直接跳转到批处理文件末尾,此时将退出批处理程序,功能和 exit 命令等同,如以上代码中的第5行,只有在这个时候, goto :eof 才可以用 exit 替换。

详细请看视频:https://edu.csdn.net/course/detail/31305

Windows批处理常见问题总结相关推荐

  1. Windows批处理程序编程学习笔记

    Windows批处理学习笔记(基础篇) 第一章 从零开始认识批处理(what why how) 1.1 什么是Windows批处理? 批处理程序全名为 Batch file programming 是 ...

  2. Windows批处理(cmd/bat)常用命令教程

    Windows批处理(cmd/bat)常用命令教程 简单详细,建议收藏 常见问题: 1.如果你自己编写的.bat文件,双击打开,出现闪退 2.批处理.bat 文件中输出中文乱码 解决方法在文章末尾! ...

  3. Windows批处理 cmd/bat 常用命令教程

    Windows批处理(cmd/bat)常用命令教程 简单详细,建议收藏 常见问题: 1.如果你自己编写的.bat文件,双击打开,出现闪退 2.批处理.bat 文件中输出中文乱码 解决方法在文章末尾! ...

  4. 常用的Windows批处理

    切换执行路径 如果不换盘的话:cd xxx换盘:cd /d xxx 获取当前日期 编写Windows批处理时经常会需要使用到日期和时间作为文件名,所以是非常重要的. 如何获取日期呢? 格式:  %da ...

  5. Windows - Windows批处理

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! Wind ...

  6. Windows批处理

    因为需要所以学习了点Windows批处理,可以写一些bat脚本来实现自动化操作. 批量文件重命名 对win10用户来说,锁屏的windows聚焦图片有一些是非常好看的,可以copy下来当壁纸. 图片路 ...

  7. Windows批处理(cmd/bat)常用命令

    Windows批处理(cmd/bat)常用命令 一.总结 一句话总结: 1.批量处理图片的方式? PS批处理是基于强大的图片编辑软件Photoshop的,用来批量处理图片的脚本: 2.大量的重复的操作 ...

  8. Windows批处理经典视频教程

    http://www.idealfly.net.cn/bbs/viewthread.php?tid=2901&extra=page%3D1   中文名: Windows批处理之介绍1-18(全 ...

  9. 网络安全-windows批处理

    文章目录 基础简单命令 批处理 批处理基础 批处理语法总结 批处理练习 基础简单命令 1.重定向 >>为追加 >为覆盖 echo ddd > zft.txt2.type查看文件 ...

最新文章

  1. 摩托罗拉移动员裁员重点是研发
  2. 爬取京东淘宝商品销量并可视化处理数据
  3. 2020 我的C++学习之路 C++PrimerPlus第八章课后习题
  4. python assert 与 slice
  5. 在Python中升级灰度图像
  6. ubuntu8.04安装java+eclipse+J2ME+wtk
  7. 分布式消息队列RocketMQ与Kafka架构上的巨大差异之1 -- 为什么RocketMQ要去除ZK依赖?...
  8. 初二的孩子,开学考下滑得很厉害,怎么办?
  9. 10年前腾讯微信后台第一天提交的代码曝光;苹果App Store佣金抽成再做让步;TypeScript 4.1发布|极客头条...
  10. UVALive - 5713 最小生成树
  11. matlab 附录 周开利,【新书推荐】【2005.07】神经网络模型及其MATLAB仿真程序设计(周开利)...
  12. android手机无法开机自动启动,手机无法开机怎么刷机?安卓手机救砖教程
  13. 各国市场分析(越南,智利)
  14. 【Twitter 舆论分析】Twitter 爬虫绕过API限制
  15. markdown使用
  16. 危化品爆炸场景下的应急通信系统解决方案
  17. bp神经网络缺点及克服,bp神经网络存在的问题
  18. 现在准备看《金赛性学报告》
  19. 引入阿里云SDK,类找不到的问题
  20. g楦和h楦的区别_「 于鸣楦 」于鸣楦的名字解释 - 名字网

热门文章

  1. 【Mechine Learning】斯坦福公开课学习笔记1
  2. 双端 Diff 算法原理解析及 snabbdom 简单实现
  3. Linux安装docker并配置阿里云镜像加速
  4. uniapp 中使用jssdk正确姿势
  5. Quartus II添加器件库方法
  6. 上海大学操作系统(12)实验报告分享(SHU-OS)
  7. 【Mongoose】populate基本使用
  8. [从 0 开始写一个操作系统] 一、准备知识
  9. 热烈祝贺“上海交通大学—思岚科技联合实验室”正式签约
  10. 圣斗士星矢服务器维护时间,5月30日服务器维护更新公告