批处理学习(一)

批处理学习

CMD命令基础

关机、重启、注销、休眠、定时

  • 关机:shutdown /s
  • 重启:shutdown /r
  • 注销:shutdown /l
  • 休眠:shutdown /h /f
  • 取消关机:shutdown /a
  • 定时关机:shutdown /s /t 7200(7200 秒后关机)

目录操作

  • 显示、切换目录:cd cd D:\
  • 显示目录中的文件:dir
  • 显示目录结构: tree

文件夹/文件操作

  • 新建文件夹:md
  • 打开文件夹:explorer …
  • 删除文件夹:rd
  • 删除文件: del
  • 新建文件:echo 123>>1.txt
  • 重命名文件:ren
  • 显示文件内容:type
  • 拷贝文件:copy
  • 逐屏显示文件内容:more

网络操作

  • 查看本地IP:ipconfig
  • ping操作: ping ip/域名 -t -l 65500
  • 清除本地 DNS 缓存:ipconfig /flushdns
  • 路由追踪:tracert ip/域名

进程管理

  • 显示当前正在运行的进程:tasklist
  • 运行程序或命令:start 程序名
  • 结束进程:taskkill /im notepad.exe(关闭记事本)
  • 结束进程:taskkill /pid 1234(关闭 PID 为 1234 的进程)

服务管理

  • 显示当前正在运行的服务:net start
  • 启动指定服务:net start 服务名
  • 停止指定服务:net stop 服务名

windows相关

  • 查看Windows版本:winver
  • 启动计算器:calc
  • 清屏:cls
  • 设置cmd窗口的标题:title
  • 显示日期:date
  • 显示时间:time
  • 调用一个批处理:call
  • 显示、设置或删除 Windows 环境变量:set

批处理命令

批处理(Batch),也称为批处理脚本。顾名思义,批处理就是对某对象进行批量的处理,通常被认为是一种简化的脚本语言,它应用于DOS和Windows系统中。批处理文件的扩展名为bat 。目前比较常见的批处理包含两类:DOS批处理和PS批处理。PS批处理是基于强大的图片编辑软件Photoshop的,用来批量处理图片的脚本;而DOS批处理则是基于DOS命令的,用来自动地批量地执行DOS命令以实现特定操作的脚本。更复杂的情况,需要使用if、for、goto等命令控制程式的运行过程,如同C、Basic等高级语言一样。如果需要实现更复杂的应用,利用外部程式是必要的,这包括系统本身提供的外部命令和第三方提供的工具或者软件。批处理程序虽然是在命令行环境中运行,但不仅仅能使用命令行软件,任何当前系统下可运行的程序都可以放在批处理文件中运行。

新建一个.bat 文件 ,内容如下:

@echo off	
ping www.baidu.com  >>1.txt

结果是在1.txt文本文件中,显示ping命令的结果

批处理,实际上是在windos的cmd中调用相对应的命令。

批处理基础

1.注释

  • ::
    任何以冒号:开头的字符行, 在批处理中都被视作标号, 而直接忽略其后的所有内容。而标号分为有效和无效两种。
    有效标号:冒号后紧跟一个以字母数字开头的字符串,goto语句可以识别。
    无效标号:冒号后紧跟一个非字母数字的一个特殊符号,goto无法识别的标号。
    无效可以起到注释作用,所以 :: 常被用作注释符号,其实 :+ 也可起注释作用。
  • rem
    在执行rem命令时,命令是可以回显的
  • %注释内容%

2.特殊符号

  • 命令行回显屏蔽符:@
  • 批处理变量引导符:%
  • 重定向符: >、>>、<、>&、<&
  • 命令管道符:|
  • 转义字符:^
  • 组合命令:&、&&
  • 字符串界定符:""
批处理中的变量
  • 系统变量
  • 自定义变量
系统变量
%ALLUSERSPROFILE% 本地 返回“所有用户”配置文件的位置。
%APPDATA% 本地 返回默认情况下应用程序存储数据的位置。
%CD% 本地 返回当前目录字符串。
%CMDCMDLINE% 本地 返回用来启动当前的 Cmd.exe 的准确命令行。
%CMDEXTVERSION% 系统 返回当前的“命令处理程序扩展”的版本号。
%COMPUTERNAME%  系统 返回计算机的名称。
%COMSPEC%  系统 返回命令行解释器可执行程序的准确路径。
%DATE%  系统 返回当前日期。
%ERRORLEVEL%  系统 返回上一条命令的错误代码。通常用非零值表示错误。
%HOMEDRIVE%  系统 返回连接到用户主目录的本地工作站驱动器号。基于主目录值而设置。用户主目录是在“本地用户和组”中指定的。
%HOMEPATH%  系统 返回用户主目录的完整路径。基于主目录值而设置。用户主目录是在“本地用户和组”中指定的。
%HOMESHARE%  系统 返回用户的共享主目录的网络路径。基于主目录值而设置。用户主目录是在“本地用户和组”中指定的。
%LOGONSERVER%  本地 返回验证当前登录会话的域控制器的名称。
%NUMBER_OF_PROCESSORS%  系统 指定安装在计算机上的处理器的数目。
%OS%  系统 返回操作系统名称。Windows 2000 显示其操作系统为 Windows_NT。
%PATH% 系统 指定可执行文件的搜索路径。
%PATHEXT% 系统 返回操作系统认为可执行的文件扩展名的列表。
%PROCESSOR_ARCHITECTURE%  系统 返回处理器的芯片体系结构。
%PROCESSOR_IDENTFIER% 系统 返回处理器说明。
%PROCESSOR_LEVEL%  系统 返回计算机上安装的处理器的型号。
%PROCESSOR_REVISION% 系统 返回处理器的版本号。
%PROMPT% 本地 返回当前解释程序的命令提示符设置。由 Cmd.exe 生成。
%RANDOM% 系统 返回 0 到 32767 之间的任意十进制数字。由 Cmd.exe 生成。
%SYSTEMDRIVE% 系统 返回包含 Windows server operating system 根目录(即系统根目录)
%SYSTEMROOT%  系统 返回 Windows server operating system 根目录的位置。
%TEMP% 和 %TMP% 系统和用户 返回对当前登录用户可用的应用程序所使用的默认临时目录。
%TIME% 系统 返回当前时间。
%USERDOMAIN% 本地 返回包含用户帐户的域的名称。
%USERNAME% 本地 返回当前登录的用户的名称。
%USERPROFILE% 本地 返回当前用户的配置文件的位置。
%WINDIR% 系统 返回操作系统目录的位置。
自定义变量

在windows中使用set命令来自定义变量。

@echo off
set /p var=请输入变量的值
echo %var%
pause

@echo off
set var=我是值
echo %var%
pause

IF 命令

if命令三种基本用法:
IF [NOT] ERRORLEVEL number command
IF [NOT] string1==string2 command
IF [NOT] EXIST filename command

NOT 指定只有条件为 false 的情况下, Windows才应该执行该命令。

ERRORLEVEL number 如果最后运行的程序返回一个等于或大于指定数字的退出编码,指定条件为 true。

string1==string2 如果指定的文字字符串匹配,指定条件为 true。

EXIST filename 如果指定的文件名存在,指定条件为 true。

command 如果符合条件,指定要执行的命令。如果指定的条件为 FALSE,命令后可跟一个执行ELSE关键字后的命令的 ELSE 命令。

ELSE 必须在 IF 之后出现在同一行上

示例:

@echo off
net user
IF %ERRORLEVEL% == 0 (echo net user 执行成功了! ) else echo net user 执行失败了!
pause

@echo off
net user
IF %ERRORLEVEL% == 0 (echo net user 执行成功了! ) else echo net user 执行失败了!
pause

@echo off
if not exist "c:\test" (echo 不存在文件) ELSE echo 存在文件
pause

IF增强的用法

IF [/I] string1 compare-op string2 command #参数/I表示不区分大小写
IF CMDEXTVERSION number command
IF DEFINED variable command #判断变量是否存在,很有用

CMDEXTVERSION 条件的作用跟 ERRORLEVEL 的一样。除了它
是在跟与命令扩展名有关联的内部版本号比较。

如果已定义环境变量,DEFINED 条件的作用跟 EXISTS 的一样
IF DEFINED variable command
IF NOT “variable”=="" command
上面两条命令效果一样。

用“set variable=”命令使变量variable变成未定义,即空值。

用语句IF DEFINED variable command判断变量是否存在时,请注意variable为不使用引导符号%的变量名,不能用写为%variable%,否则出错。

例:

if defined aa (echo 变量aa存在) else (echo 变量aa不存在)

运行显示:变量aa不存在

例:

set aa=123
set aa=
if defined aa (echo 变量aa存在) else (echo 变量aa不存在)
运行显示:变量aa不存在

例:

@echo off
if a == A (echo 我们相等) ELSE echo 我们不相等
pause

执行后会显示:我们不相等

例:

@echo off
if /i a == A (echo 我们相等) ELSE echo 我们不相等
pause

最后面还有一些用来判断数字的符号

EQU - 等于
NEQ - 不等于
LSS - 小于
LEQ - 小于或等于
GTR - 大于
GEQ - 大于或等于

@echo off
set /p var=请输入一个数字:
if %var% LEQ  4 (echo 我小于等于4) ELSE echo 我不小于等于4
pause

FOR 命令

基本格式

FOR %%variable IN (set) DO command [command-parameters]

%%variable 指定一个单一字母表示可替换的参数。
(set) 指定一个或一组文件。可以使用通配符。
command 指定对每个文件执行的命令。
command-parameters 为特定命令指定参数或命令行开关。

参数:FOR有4个参数 /d /l /r /f

参数 /d 主要搜索匹配目录

FOR /D %%variable IN (set) DO command [command-parameters]
如果集中包含通配符,则指定与目录名匹配,而不与文件
名匹配。

@echo off
for /d %%i in (c:\*) do echo %%i
pause

@echo off
for /d %%i in (???) do echo %%i
pause

*号表示任意N个字符,?号只表示任意一个字符

参数 /R 搜索指定目录树中的匹配文件

FOR /R [[drive:]path] %%variable IN (set) DO command [command-parameters]

检查以 [drive:]path 为根的目录树,指向每个目录中的
FOR 语句。如果在 /R 后没有指定目录,则使用当前
目录。如果集仅为一个单点(.)字符,则枚举该目录树。

@echo off
for /r  c:\Users\asus\Desktop\111111111111111111\ %%i in (*.txt) do echo %%i

@echo off
for /r c:\ %%i in (*.exe) do echo %%i
pause

@echo off
for /r %%i in (*.exe) do echo %%i
pause
参数 /L 按数字序列(start,step,end)循环

FOR /L %%variable IN (start,step,end) DO command [command-parameters]

该集表示以增量形式从开始到结束的一个数字序列。
因此,(1,1,5) 将产生序列 1 2 3 4 5,(5,-1,1) 将产生
序列 (5 4 3 2 1)。

使用迭代变量设置起始值 (Start#),然后逐步执行一组范围的值,直到该值超过所设置的终止值 (End#)。/L 将通过对 Start# 与 End# 进行比较来执行迭代变量。如果 Start# 小于 End#,就会执行该命令。如果迭代变量超过 End#,则命令解释程序退出此循环。还可以使用负的 Step# 以递减数值的方式逐步执行此范围内的值。例如,(1,1,5) 生成序列 1 2 3 4 5,而 (5,-1,1) 则生成序列 (5 4 3 2 1)。

@echo off
for /l %%i in (1,1,5) do @echo %%i
pause

@echo off
for /l %%i in (1,1,3) do (start cmd |  echo %%i)
参数 /F 处理命令输出、字符串及文件内容

详细的格式为:

FOR /F ["options"] %%variable IN (file-set) DO command [command-parameters]
FOR /F ["options"] %%variable IN ("string") DO command [command-parameters]
FOR /F ["options"] %%variable IN ('command') DO command [command-parameters]

带引号的字符串"options"包括一个或多个
指定不同解析选项的关键字。这些关键字为:

    eol=c           - 指一个行注释字符的结尾(就一个)
    skip=n          - 指在文件开始时忽略的行数。
    delims=xxx      - 指分隔符集。这个替换了空格和跳格键的
                      默认分隔符集。
    tokens=x,y,m-n  - 指每行的哪一个符号被传递到每个迭代
                      的 for 本身。这会导致额外变量名称的分配。m-n
                      格式为一个范围。通过 nth 符号指定 mth。如果
                      符号字符串中的最后一个字符星号,
                      那么额外的变量将在最后一个符号解析之后
                      分配并接受行的保留文本。经测试,该参数最多
                      只能区分31个字段。

    usebackq        - 使用后引号(键盘上数字1左面的那个键`)。

                    未使用参数usebackq时:file-set表示文件,但不能含有空格
                    双引号表示字符串,即"string"
                    单引号表示执行命令,即'command'

                   使用参数usebackq时:file-set和"file-set"都表示文件
                   当文件路径或名称中有空格时,就可以用双引号括起来
                   单引号表示字符串,即'string'
                   后引号表示命令执行,即`command`

@echo off
rem 首先建立临时文件test.txt
echo ;注释行,这是临时文件,用完删除 >test.txt
echo 11段 12段 13段 14段 15段 16段 >>test.txt
echo 21段,22段,23段,24段,25段,26段 >>test.txt
echo 31段-32段-33段-34段-35段-36段 >>test.txt
FOR /F "eol=; tokens=1,3* delims=,- " %%i in (test.txt) do echo %%i %%j %%k
Pause
Del test.txt

运行显示结果:

11段 13段 14段 15段 16段
21段 23段 24段,25段,26段
31段 33段 34段-35段-36段
请按任意键继续. . .

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值