windows批处理学习1--基本语法

本文介绍了Windows批处理的基本语法,包括dos命令如`cd`、`@echo off`、`call`、`set`、重定向符和管道操作。还详细讲解了流程控制,如`goto`、`if`语句和`for`循环的使用,特别是`for`循环的各种参数选项,是学习批处理的入门指南。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

windows批处理程序可以帮助我们做很多事情,这里简单的学习一下,备查。

1.基本dos命令简介,必要时可查:

cd改变目录,注意改变盘符不能用cd,直接c:

dir显示文件列表
rmdir删除文件夹
del删除文件
type显示文件内容
copy文件复制
path为可执行文件设置搜索路径,即设置环境变量
date显示或者设置系统日期
time显示或者设置系统时间
ver显示windows版本
cls清屏

分页查看长文件
type a.txt | more
查找命令
find

脚本的创建和执行

1.新建脚本,用记事本文件打开,保存为.bat或者.cmd文件。
2.执行脚本的方法:
     1.双击,但是窗口停留的时间太短,需要在脚本最后后面加"pause"。
     2.直接在cmd窗口进入绝对路径,输入文件名回车打开,会输出在cmd窗口里。
     3.直接拖动bat文件到cmd窗口里,回车。
3.注释用::,也可以用rem,但是注意注释只能单独一行写。
4.声明变量SET A=B 注意这里等号两边不能有空格。
     变量默认是字符串类型的,要想进行数值运算,要加/a参数,比如
          set /a four=2+2
          echo %four%
     注意SET会覆盖掉以前重名的变量,在声明变量时最好echo一下,防止它覆盖掉系统变量。
5.引用变量echo %A%
6.变量的延迟替换,祥戳:点击打开链接

2.基本命令

@echo off

@echo off 屏蔽掉源代码的输出
  echo on/off开启,关闭命令回显
  @关闭命令回显



call命令:

call可以调用另一个批处理文件,也可以在命令中跳转

call called.bat

set:

@echo off
set xxx="c:/"
set x1=1
echo 显示所有以字母x开头的变量
set x
set xxx=
rem 删除xxx变量
echo 显示所有以字母x开头的变量
set x
pause
注意: set不能用在复合语句里面比如if 1==1 set a=2或者for %%i in (a) do set a=2 这样写不能更改变量的值

重定向符< > >>

type source.txt > des.txt     将source.txt内的内容写入des.txt文件中,会覆盖源文件的内容

type source.txt >> des.txt     将source.txt内的内容追加到des.txt文件中,不会覆盖源文件的内容

管道 |

find "requirements" gp1.txt | sort > result.txt
将gp1.txt里的包含“requirements”的行排序输出到result.txt里。


流程控制:

goto命令:



if语句

if exist a.txt (echo 找到了a.txt文件,其内容为

type a.txt) else (
     echo 找不到a.txt文件
)
或者
if not exist a.txt 

for语句

注意:在批处理文件中使用 FOR 命令时,指定变量请使用 %%variable,在命令行中要用 %variable。变量名称是区分大小写的,所以 %i 不同于 %I. 

注意这样写是错的:
for %%a in (*.txt) do(
     echo %%a
)
do和后面的(必须有空格,当do后有多条语句时必须加小括号。 
一个例子:
【删除目录下某种格式的文件 】
for /r  f:\study %i in (*.o) do del %i

for命令可以带参数或不带参数,带参数时支持以下参数:/d /l /r /f
无参数时:
for %%i in (t*.*) do echo %%i --显示当前目录下与t*.*相匹配的文件(只显示文件名,不显示路径) 

参数/d:
搜索目录,注意只会搜索当前目录下的一级目录
for /d %%i in (c:\*) do echo %%i   --显示c盘根目录下的所有目录    
  for /d %%i in (???) do echo %%i   --显示当前目录下名字只有1-3个字母的目录 

参数/R:
此命令会搜索指定路径及所有子目录中与set相符合的所有文件,注意是指定路径及所有子目录。
说明:
  1、set中的文件名如果含有通配符(?或*),则列举/R参数指定的目录及其下面的所用子目录中与set相符合的所有文件,无相符文件的目录则不列举。    
  2、如果set中为具体文件名,不含通配符,则枚举该目录树(即列举该目录及其下面的所有子目录)(并在后面加上具体的文件名),而不管set中的指定文件是否存在。 
例子:   
for /r c:\ %%i in (*.exe) do echo %%i --把C盘根目录,和每个目录的子目录下面全部的EXE文件都列出来
for /r c:\ %%i in (boot.ini) do echo %%i --枚举了c盘所有目录,并在目录下加上了\boot.ini    
  for /r d:\backup %%i in (1) do echo %%i   --枚举d\backup目录 ,并在目录下加了\1   
  for /r c:\ %%i in (boot.ini) do if exist %%i echo %%i   --很好的搜索命令,列举boot.ini存在的目录

参数 /L  数字递增
for /l %%i in (1,2,10) do @echo %%i   --输出1,3,5,7,9   
for /l %%i in (1,1,5) do md %%i  --建立从1~5共5个文件夹    

参数 /f  字符串处理
for /f "eol=; tokens=1,2* delims=, " %%i in (test.txt) do     (
     echo %%i
     echo %%j
     echo %%k
)
eol=; 忽略以分号打头的那些行;
tokens=1,2* --将每行中的第1个和第2个符号传递给 for 程序体;即%%i是分割出的第一个字符串,%%j是分割出的第二个,%%k是分割出的第三个,*代表以此类推,如果echo了的变量没有被赋值,比如%%k没有,就会显示echo is off
delims=, 用,和空格作为分割符号(注意逗号后面有个空格)。

注意(test.txt)里只能是文件或者字符串。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值