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

[其他] CMD批处理 基本教程(零基础版)本人等级不够发到教程板块,望管理帮忙转载,非常感谢

本帖最后由 LTSC1809 于 2023-10-6 15:02 编辑

序章:前言
这是一篇针对Windows CMD批处理文件的教程。编写时使用环境为Microsoft Windows 10 Version 1809。
这篇教程是针对初次接触计算机编程或仅有少量基础人群的。如果你有一定的编程基础,请参阅:[url=about:blank]暂缺,以后写完了再补上[/url]。这篇教程也许看起来不那么啰嗦,没有过多的介绍基础部分。
正式开始教程。首先,如果打开了这个论坛,又打开了这篇教程,一定事想要学习WindowsCmd批处理的罢!
CMD批处理的主要作用我也简单讲一下:它运行在Windows环境下,顾名思义 批处理 即多个操作的集合。在批处理文件中有各种各样的指令来完成各种操作。把它们写在一个文本文件中,写一句换一行,后缀名改为.bat,双击运行,文件中的内容即会从上到下的逐个运行,直到最后一条命令执行结束,程序退出。
使用批处理文件可以完成一些简单的重复性操作,如开机后一键启动许多需要的应用程序,如批量重命名等等等等。
如觉得有哪里内容不妥或不正确,欢迎随时纠正,经核实会修改。
1

评分人数

一个六年级小学生,请多指教

回复 3# LTSC1809
写的很详细

TOP

求更新            。。。。

TOP

本帖最后由 qixiaobin0715 于 2023-10-7 16:19 编辑

!在开启变量延迟下会出现读取不到的情况,许多许多年以前这个问题已有解决方案,主要方法是推后开启变量延迟。参见:
http://bbs.bathome.net/viewthrea ... &from=favorites

TOP

本帖最后由 qixiaobin0715 于 2023-10-7 14:22 编辑

下面是实测情况,也没出现楼主所说的结果:
  1. C:\Users\Administrator>@echo off
  2. for /f %i in ("这篇教程是针对初次接触计算机编程或仅有少量基础人群的。如果你有一定的编程基础,请参阅:[url=about:blank]暂缺,日后写完再补上[/url]。这篇教程没有过多的赘述基础部分,也许对有基础阅读起来更省力更方便。") do echo,%i
  3. 这篇教程是针对初次接触计算机编程或仅有少量基础人群的。如果你有一定的编程基础,请参阅:[url=about:blank]暂缺,日后写完再补上[/url]。这篇教程没有过多的赘述基础部分,也许对有基础阅读起来更省力更方便。
复制代码
前两行是在命令提示符下输入的内容,最后一行是显示的实际结果。执行后直接在窗口中复制上来的,未做任何改动。

TOP

回复 12# LTSC1809


    经测试,没有你说的那回事。建议给出截图:你认为应该是怎样的?代码实际得到的结果是怎样的?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 11# Batcher


    就用本帖的一楼举例 复制下来内容是这样的:
  1. 序章:前言
  2. 这是一篇针对Windows CMD批处理文件的教程。编写时使用环境为Microsoft Windows 10 Version 1809。
  3. 这篇教程是针对初次接触计算机编程或仅有少量基础人群的。如果你有一定的编程基础,请参阅:[url=about:blank]暂缺,日后写完再补上[/url]。这篇教程没有过多的赘述基础部分,也许对有基础阅读起来更省力更方便。
  4. 正式开始教程。首先,如果打开了这个论坛,又打开了这篇教程,一定事想要学习WindowsCmd批处理的罢!
  5. CMD批处理的主要作用我也简单讲一下:它运行在Windows环境下,顾名思义 批处理 即多个操作的集合。在批处理文件中有各种各样的指令来完成各种操作。把它们写在一个文本文件中,写一句换一行,后缀名改为.bat,双击运行,文件中的内容即会从上到下的逐个运行,直到最后一条命令执行结束,程序退出。
  6. 使用批处理文件可以完成一些简单的重复性操作,如开机后一键启动许多需要的应用程序,如批量重命名等等等等。
复制代码
第三行的“暂缺”两个字后面有一个逗号(只是英文逗号),我将这段内容保存在txt文件中 使用如下代码:(直接在cmd窗口中一条条输入 按回车)
echo off&cls
for /f %i in (C:\Users\Administrator\Desktop\test.txt) do echo %i
运行后使用crtl+f搜索逗号(确认输入的就是文本中的那种英文逗号),但是却没有任何结果。
如您认为我的测试方法或结果有不妥,请指出问题所在 并给出正确的方式。
一个六年级小学生,请多指教

TOP

回复 10# LTSC1809


    多说无益,请发测试用例。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 8# Batcher

您好!感谢您的纠正!变量名称问题经过测试,确实可以。但是关于for /f,经过读取一个文本测试,文本中所有的空格处以及逗号都被当作分隔符 它们后面的内容以及它本身全都没有打印出来。
一个六年级小学生,请多指教

TOP

回复 8# Batcher


    感谢指出,核实后会做出修改。
一个六年级小学生,请多指教

TOP

回复 6# LTSC1809


6楼有几个错误的说法,包括但不限于:
%%i事形式变量,事一种在for语句中专用的变量(批处理文件中使用双百分号跟名称的方式表示,名称只能一个字母,而一般变量可以多个字母。均不能使用中文。

除了可以是字母之外,数字、字符、中文,都可以。
如果你输入"delims=",不输入分隔符,那么也就是不使用分隔符,也就不会因为文本中出现逗号导致读取异常了

通常情况下,逗号不会导致读取异常。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 3# LTSC1809


变量名可以是一个或多个字母,可以包含数字,但不能包含中文

3楼的这个观点是错误的。希望大家不要被误导。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

本帖最后由 LTSC1809 于 2023-11-25 21:31 编辑

第4章:For语句
for语句严格来讲也是流程控制语句的一部分,但是看到我单独拉出来讲,想必一定认识到了它的重要性。
For语句在CMD中有着许多的作用,并且有许多扩展语法。这可能不是很容易学会。
首先看最基础的For语句。For语句的作用事遍历输入的每个元素,并执行某些命令。你可能没懂,没关系,看个例子就知道了。
  1. for %%i in (a,b,c) do echo %%i
复制代码
运行后会输出:
  1. a
  2. b
  3. c
复制代码
解释亿下:
%%i事形式变量,事一种在for语句中专用的变量(批处理文件中使用双百分号跟名称的方式表示,名称只能一个字母,而一般变量可以多个字母。如果在cmd窗口中直接输入命令执行 那么只需使用单百分号)。它代表了当前遍历到的元素。
in后面跟的括号里面写的内容默认使用逗号分隔,它们就是刚刚所说的输入的元素。
有多少个元素,do后面的语句就会执行几次。
执行时,例如有三个元素,那么%%i这个形式变量的内容第一次运行时内容为第一个元素,第二次运行时内容为第二个元素,第三次运行则为第三个元素。
所以,在这个例子中,第一次执行时%%i内容事第一个元素(也就是a),第二次事第二个元素(b)... echo出的内容也就是第一次为a 第二次为b...
如果你需要在do中执行多行指令,那么你可以使用前面提到的小括号。

而这只是for的基础用法 它还有以下常用的开关:
/f
/l
for /f:主要用于文本处理 并可以读取文件。语法:
for /f %%i in (文件路径) do echo %%i
这个语句传入的文件名(文本文件)也就相当于普通for的传入对象。文本中的每一行都是一个单独的对象,所以这行代码会逐句输出整个文本。而它也是有分隔符的,为了防止文件中出现逗号而导致读取异常,可以使用delims这个配置。这一类的配置这样使用:
注意,for中 in后面跟随的括号 里面输入用双引号包裹的变量或是字符串,也可以被操作。
for /f "配置名称" %%i in.....
而delims这个配置,可以设置分隔符。使用"delims=分隔符"来设置。如果你输入"delims=",不输入分隔符,那么也就是不使用分隔符,也就不会因为文本中出现逗号导致读取异常了(注意,仍然有一些特殊符号如!可能读取不到,这很难解决。如果只需要显示整个文件,建议使用type 文件路径)
for /f的所有配置:
usebackq:加上这条配置,则括号里可以输入双引号来包裹路径。(这涉及到批处理中一个问题,路径如果包含空格那么会被从空格的地方截断。这会导致无法正确使用路径。所以批处理中包含空格的路径可以使用双引号包裹 来让它被正常识别。但是for /f中一般情况下路径不能加双引号,所以使用这个配置来解决路径包含空格的问题。)
tokens:决定读取第几段内容,"tokens=段数(数字)"。也就是分隔符作用下被分开的多个对象,具体是第几个。for /f中 这可以被用作读取文本的其中一行之中又有分隔符,来指定读取这一行的第几段。
skip:忽略文本开头的一些行数。"skip=行数(数字)",如果使用了这个配置,那么文本的第一行至输入行数会被忽略,从下一行开始读取。
eol:指定一个字符/一个字符串,遇到这个字符/字符串开头的某一行就忽略掉这一行。"eol=字符"
如果一个for语句使用多个配置 那么在一对双引号里写上所有的配置。每个不同的配置之间用空格分隔。如 for /f "usebackq eol=' delims=" %%i in ("aaa.txt") do echo %%i

再来讲讲/l开关。它用于循环执行指定的次数。
for /l %%i in (起始数字,步长,终止数字) do 执行命令
从起始数字开始 每执行一次 计数器都加步长,直到计数器数字等于终止数字。如:for /l %%i in (50,2,100) do echo %%i
意为从五十开始计数,每次运行 加二,直到数字等于100,每次执行都输出当前计数器的数字。请注意如果步长设置的不能正好加到终止数字的大小,那么当计数器大于终止数字的时候会结束循环。如果步长设置为负数如-1,每运行一次计数器加上负一,也就是减一。可以使计数器递减 直到其小于等于终止数字。
这篇写的挺长的。for的用法还有许多没有讲到,但是基本都不常用。这章内容难度急剧上升,看不懂可以多看几遍 百度 或者发帖提问(注意不要水帖,会严重影响别人阅读)。可能有的大佬已经想说我有重要的一点没说了 别着急质问,会有单独的一章讲这个。
请记住一定要自己去实际建立一个bat文件尝试一下。光看是永远学不会的。
一个六年级小学生,请多指教

TOP

感觉批处理挺难的

TOP

第3章:流程控制语句
流程控制语句,顾名思义就是控制流程的语句(废话)
它们可以改变命令的执行顺序 等等。
首先请看:if
if命令可以用于判断条件是否成立,如果成立则执行某些内容。
举个例子:
  1. @echo off
  2. set /p a=请输入数字:
  3. if %a% equ 1=echo 你输入的是1
  4. pause
复制代码
什么意思呢
还是抛开第一行和最后一行,首先使用set /p语句来获取用户输入。
重点来了,第三行的内容 意为 判断a这个变量内容是否等于1,如果是 则显示:你输入的是1。如果不是,则什么也不会做,会直接跳到下一行。
%a%读取叫做a的变量的内容
equ 是批处理if语句中的“相等”逻辑运算符。if中还有:
gtr:大于
neq:不等于
lss:小于
leq:小于等于
geq:大于等于
所以 %a% equ 1也就是变量a的内容是否等于1的意思。
而等于号后面 则是如果条件成立则执行的语句
你可以使用等号来代表执行的语句,也可以使用一个空格。
如果需要执行多个语句,你可以使用小括号:
if %a% equ 1 (第一条命令
第二条命令
......)
如果你遇到了括号内变量调用出现问题,不必惊慌,这是一个复杂的问题,后面会详细讲解。

goto指令的作用为:跳转到某个标签
标签是什么呢?标签使用:标签名定义
比如下列代码:
  1. @echo off
  2. set /p a=请输入数字:
  3. if %a% equ 1=goto i
  4. echo 你输入的不是1
  5. pause
  6. exit
  7. :i
  8. echo 你输入的是1
  9. pause
  10. exit
复制代码
也许你已经注意到了exit这一行,那就先讲讲这个吧。
exit,执行到这一行就会立刻退出程序。
相信聪明的你可能已经看出来goto的用法了
goto的语法:goto 标签名(有些人可能习惯给这里的标签名前面加上冒号,也是对的)
而作用就是 跳转到标签所在的地方,从这个标签下面一行开始继续执行,而跳过中间的内容。
请记住一定要自己去实际建立一个bat文件尝试一下。光看是永远学不会的。如果你不会改文件扩展名,请使用搜索引擎来获得帮助。如有报错或闪退等情况,仔细检查你的命令语法是否有问题。
一个六年级小学生,请多指教

TOP

返回列表