文章目录
- 内部命令
- 变量
- 常用命令
- 特殊命令符
- 综合案例
- 外部命令
内部命令
操作系统的内部命令。
win + r, 输入cmd 打开命令窗口;
如:
- dir,查看当前目录下的内容
- cd,切换目录
- copy, 拷贝
- echo,打印
变量
windows下的环境变量,使用set设置、打印、删除;
windows 下的所有的命令都可以放入bat批处理文件,正如linux下的命令都可以放入shell脚本中。
# 创建变量
set age=23
# 打印
set age
# 删除变量
set age=
# 帮助
set /?
# 查看指定环境变量的值
set xxx
set pythonpath # 不区分大小写
# 表达式
set /a 3+5
# 等待用户的输入
set /p addr=提示:
案例:让用户输入一个数值,打印出用户输入的内容。
# test.bat
:: 关闭回显 注释
@echo off
:: 等待用户的输入
set /p value=请输入一个数值:
:: 表达式计算
set /a result=value/2
:: 输出打印
echo 计算结果:%result%
:: 暂停 防止窗口退出
pause > null
常用命令
- title, 改变命令窗口的标题
- mode, 改变命令窗口的模式; mode 100,80; 设置宽高
- color, 改变背景色、字体色
- hostname 查看当前主机名;
- ipconfig 查看ip
- ping ip/domain 测试网络连通性
- :: 和 rem 均表示注释内容
- exit 表示退出
- goto 跳转
goto part2
:part1
echo this is part1
:part2
echo this is part2
- start 打开目录、文件、网址、应用程序等
rem 打开目录 不区分大小写
start e:/dl
rem 打开文件
start e:/a.txt
rem 打开应用程序 单词有空格 加引号
start c:/"programms files"/xx.exe
rem 打开网址
start www.baidu.com
rem 打开有空格的目录
start "" "cc dd"
- call 程序的互相调用,bat以ANSI编码
@echo off
rem 调用子程序
echo 我是主程序
rem 调用其他程序
call e:/e.bat
pause > null
- sort 排序 ;
rem 升序
sort a.txt
rem 降序
sort /r a.txt > result.txt 2>error.txt :: 2表示错误输出
rem 重定向 写入
rem 追加重定向 >> 追加写入
rem < 读取文件内容
- type 查看文件内容;
- shutdown 关闭计算机
shutdown /? 帮助
:: 一分钟后重启
shutdown /r /t 60
:: 取消关闭
shutdown /a
:: 关闭计算机
shutdown /s
- telnet 远程登录
telnet ip port
- mkdir md 创建目录
- rmdir 删除目录
- del /q file 删除文件
特殊命令符
- 管道 | ,将结果向后传递
:: 查询包含指定内容的文件
dir | find ".py"
netstat -ano | findstr TCP
- 组合& ,所有命令均执行
- 组合 &&, 前一个命令执行失败,后面不再执行
- 组合 || 前一个命令失败,则再执行后面的
- ()表示代码块
分支语句综合:
@echo off
if exist e:/e1.bat (
echo 存在指定的文件
) else (
type aa.txt && echo 创建文件成功
)
pause > null
综合案例
获取当前目录下的xxxx.whl,使用pip自动安装该python二进制文件
- 制作python whl文件
# 编写好python 文件 my_module.py
# 发布python模块,编辑setup.py
from setuptools import setup
setup(
name="my_module",
version="1.0",
author="laufing",
py_modules=["my_module", "other_module"]
)
命令行下执行:python setup.py bdist_wheel,在当前目录下会生成dist目录,里面就有whl二进制文件。
- for循环,命令行下使用% ; 批处理中使用%%
::命令行下操作 使用单个% bat中操作使用%%
for /f "tokens=1,2,3* delims= " %i in (a.txt) do @echo %i %j %k %l
:: 文件a.txt中的一行 根据delims分割符 分割后的第1 2 3 及以后的部分,分别赋值给
:: i j k l 变量连续
- 单引号表字符;双引号表整体,同shell
案例实现: 编写如下bat文件
@echo off
cd dist
:: 获取当前目录下的whl二进制文件
dir | findstr .whl > target.txt
:: bat中使用%% * 表示剩余的部分 /f 表示文件
for /f "tokens=1,2,3,* delims= " %%i in (target.txt) do (
:: 安装
pip install %%l --force-reinstall
)
:: 删除临时文件
del target.txt
pause
外部命令
它是特定目录下的一个exe程序,如C:\Windows\System32下的exe程序
mstsc, 远程连接
ping, 测试网络连通性