Windows批处理常见问题总结
批处理常见问题总结
详细请看视频: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 语句的子过程中。例如如下代码:
- @echo off
- call :test1
- call :test2
- call :test3
- goto :eof
- :test1
- echo 这是第一个标签
- pause
- goto :eof
- :test2
- echo 这是第二个标签
- pause
- goto :eof
- :test3
- echo 这是第三个标签
- pause
- 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批处理常见问题总结相关推荐
- Windows批处理程序编程学习笔记
Windows批处理学习笔记(基础篇) 第一章 从零开始认识批处理(what why how) 1.1 什么是Windows批处理? 批处理程序全名为 Batch file programming 是 ...
- Windows批处理(cmd/bat)常用命令教程
Windows批处理(cmd/bat)常用命令教程 简单详细,建议收藏 常见问题: 1.如果你自己编写的.bat文件,双击打开,出现闪退 2.批处理.bat 文件中输出中文乱码 解决方法在文章末尾! ...
- Windows批处理 cmd/bat 常用命令教程
Windows批处理(cmd/bat)常用命令教程 简单详细,建议收藏 常见问题: 1.如果你自己编写的.bat文件,双击打开,出现闪退 2.批处理.bat 文件中输出中文乱码 解决方法在文章末尾! ...
- 常用的Windows批处理
切换执行路径 如果不换盘的话:cd xxx换盘:cd /d xxx 获取当前日期 编写Windows批处理时经常会需要使用到日期和时间作为文件名,所以是非常重要的. 如何获取日期呢? 格式: %da ...
- Windows - Windows批处理
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! Wind ...
- Windows批处理
因为需要所以学习了点Windows批处理,可以写一些bat脚本来实现自动化操作. 批量文件重命名 对win10用户来说,锁屏的windows聚焦图片有一些是非常好看的,可以copy下来当壁纸. 图片路 ...
- Windows批处理(cmd/bat)常用命令
Windows批处理(cmd/bat)常用命令 一.总结 一句话总结: 1.批量处理图片的方式? PS批处理是基于强大的图片编辑软件Photoshop的,用来批量处理图片的脚本: 2.大量的重复的操作 ...
- Windows批处理经典视频教程
http://www.idealfly.net.cn/bbs/viewthread.php?tid=2901&extra=page%3D1 中文名: Windows批处理之介绍1-18(全 ...
- 网络安全-windows批处理
文章目录 基础简单命令 批处理 批处理基础 批处理语法总结 批处理练习 基础简单命令 1.重定向 >>为追加 >为覆盖 echo ddd > zft.txt2.type查看文件 ...
最新文章
- 摩托罗拉移动员裁员重点是研发
- 爬取京东淘宝商品销量并可视化处理数据
- 2020 我的C++学习之路 C++PrimerPlus第八章课后习题
- python assert 与 slice
- 在Python中升级灰度图像
- ubuntu8.04安装java+eclipse+J2ME+wtk
- 分布式消息队列RocketMQ与Kafka架构上的巨大差异之1 -- 为什么RocketMQ要去除ZK依赖?...
- 初二的孩子,开学考下滑得很厉害,怎么办?
- 10年前腾讯微信后台第一天提交的代码曝光;苹果App Store佣金抽成再做让步;TypeScript 4.1发布|极客头条...
- UVALive - 5713 最小生成树
- matlab 附录 周开利,【新书推荐】【2005.07】神经网络模型及其MATLAB仿真程序设计(周开利)...
- android手机无法开机自动启动,手机无法开机怎么刷机?安卓手机救砖教程
- 各国市场分析(越南,智利)
- 【Twitter 舆论分析】Twitter 爬虫绕过API限制
- markdown使用
- 危化品爆炸场景下的应急通信系统解决方案
- bp神经网络缺点及克服,bp神经网络存在的问题
- 现在准备看《金赛性学报告》
- 引入阿里云SDK,类找不到的问题
- g楦和h楦的区别_「 于鸣楦 」于鸣楦的名字解释 - 名字网