DOS&bat

DOC常用指令:
复制代码
环境变量生效命令
set PATH=c:

切换盘
盘+冒号 d:

查看占用指定端口的进程
netstat -aon|findstr "8080"

DOS进程
1)查看进程
tasklist | findstr "12465"
2)杀进程(/F 强制终止,/T 指定的进程和任何由此启动的进程)
taskkill /F /T /PID [进程ID]
taskkill /F /T /IM [进程名]
复制代码

vb脚本语法:

复制代码
echo与@
打开或关闭回显:echo on/off
@字符放在命令前,关闭当前命令回显,无论此时echo是否为打开状态

获取当前执行文件所在的目录
set Current_Path=%~dp0

^转义字符
特殊符号<,>,&,仅仅把它们当做符号,不使用它们的特殊意义
例:echo test ^>1.txt
结果cmd窗口打印:test >1.txt

%批处理变量引导符
引用变量用%var%
%0 批处理文件本身,双击执行时包括完整的路径和拓展名,放cmd执行时为输入的字符串
%1 第一个参数
%n 第n个参数
%* 所有参数(不包括文件本身)

set--批处理命令
1)变量赋值
set var=abcd
注:set var= 等号后面不跟,即设置值为空,set var="",变量不为空,而是两个引号
2)变量的计算
set /a var=1+1
3)从标准输入读取变量
set /p var=请输入变量的值

延时命令
ping /n 6 127.0.0.1>nul 等待6秒(时间精度为1秒)

重定向
>     覆盖
>>    追加
2>&1  STDERR(标准错误输出)重定向到STDOUT(标准输出)
例:
command 2 > filename 把标准错误输出重定向到一个文件中
command 2 >> filename 把标准错误输出重定向到一个文件中(追加)
command > filename 2>&1 把标准输出和标准错误输出一起重定向到一个文件
command >> filename 2>&1 把标准输出和标准错误输出一起重定向到一个文件中(追加)

批处理命令--if
基本格式:
if [not] command (
符合该条件执行的语句
) else if [not] command (
) else (
符合该条件执行的语句
)
1)数值比较
if %num1% gtr %num2% commmamd
等于:EQU 不等于:NEQ 小于:LSS 小于或等于:LEQ 大于:GTR 大于或等于:GEQ
2)字符串比较
if [not] string1==string2 command 注:字符串不等于,不能用!=,需用not
3)文件或目录判断
if [not] exist filename command
4)结合errorlevel使用
errorlevel为上一条命令执行结果,默认值为0,一般命令执行出错结果会设errorlevel为1
if errorlevel number command等价于if %errorlevel%==number command

批处理命令--for
1)for遍历元素列表的的元素
基本格式:for %%i in (set) do command
选项与参数:/l,/d,/r,/f
实例:for %%i in (a,b,c) do @echo %%i 遍历元素列表中的元素
注:1.cmd窗口中引用变量用单百分号,%i;批处理中引用变量用双百分号,%%i
2.for命令中的变量只能是26个字母
3.元素列表中的元素可以用空格、跳格、逗号、分号或等号来分隔
2for /l用于循环
基本格式:for /l %%i in (start,step,end) do command
注:start、step和end都只能取整数(正负皆可)
实例:for /l %%i in (1,2,10) do echo %%i
3for /d用于文件夹搜索(一级目录)
基本格式:for /d %%i in (文件夹通配) do command
实例:
打印C盘下所有的一级文件夹路径
for /d %%i in (c:\*) do echo %%i
4for /r用于文件搜索(遍历)
基本格式:for /r 目录 %%i in (文件通配) do command
注:/r如果没有指定目录,则默认当前脚本执行目录
实例:
递归遍历D盘下所有以.txt结尾的文件,并打印
for /r D:\ %%i in (*.txt) do echo %%i
5for /r /d用于文件夹搜索(遍历)
基本格式:for /r 目录 /d %%i in (文件夹通配) do command
注:/r如果没有指定目录,则默认当前脚本执行目录
实例:
递归遍历当前脚本执行目录下所有以file开头的文件夹,并打印
for /r /d %%i in (file*) do echo %%i
6for /f用于解析文本
基本格式:
for /f %%i in (文件路径) do command
for /f %%i in ('命令语句') do command
for /f %%i in ("字符串") do command
选项与参数:delims,tokens,skip,eol,usebackq
A)"delims=符号列表"用于切分字符串(不指定符号则默认以空格或跳格键分隔)
提取每行第一个逗号之前的内容
for /f "delims=," %%i (test.txt) do echo %%i
提取每行第一个逗号或点号之前的内容
for /f "delims=,." %%i (test.txt) do echo %%i
B)tokens定点提取
提取每行第三和第四个逗号分隔的内容
for /f "delims=, tokens=3,4" %%i in (test.txt) do echo %%i
提取每行第一和第四个逗号分隔的内容以及第四个逗号之后所有内容
for /f "delims=, tokens=1-4,*" %%i in (test.txt) do echo %%i
C)skip=n跳过无关内容,n是一个正整数
跳过前两行内容,从第三行开始解析
for /f "skip=2" %%i in (test.txt) do echo %%i
D)eol=单个字符,忽略指定字符打头的行
解析文本时,忽略以";"符号开头的行
for /f "eol=;" %%i in (test.txt) do echo %%i
E)usebackq的使用,目前只了解到"文件路径"这样修改的作用,避免文件名中带空格,&等字符
基本格式:
for /f "usebackq" %%i in ("文件路径") do command
for /f "usebackq" %%i in (`命令语句`) do command
for /f "usebackq" %%i in ('字符串') do command
F)延迟变量setlocal enabledelayedexpansion
for命令中变量的赋值和计算,不能直接用%var%来提取,需要setlocal enabledelayedexpansion然后变量用!var!来提取

dir命令
dir /s/b/a-d

goto跳转
:next
echo next
if exist test.txt goto next

函数
if exist test.txt call:fun
:fun
command
goto:eof

find--字符串搜索工具
基本格式:find [options] "string" 文件名
选项与参数:
/V 反向匹配
/C 统计包含字符串的行数
/N 显示行号
/I 忽略大小写
实例:
find "string" d:\test.txt 在test.txt中搜索包含字符串"string"的行
find /i "string" d:\test.txt 搜索时忽略大小写
find /n "string" d:\test.txt 显示行号
find /c "string" d:\test.txt 统计行数
find /v "string" d:\test.txt 反向匹配,显示不包含"string"的行

findstr--字符串搜索工具,find的拓展,支持正则
基本格式:findstr [options] "string" 文件名/(文件目录,例:c:\*)
选项与参数:
/V 反向匹配
/N 显示行号
/I 忽略大小写
/S 遍历目录
/C: 全部字符串匹配
实例:
findstr "string" d:\test.txt 在test.txt中搜索包含字符串"string"的行
findstr "string1 string2" d:\test.txt 在test.txt中搜索包含字符串"string1""string2"的行
findstr /c:"string1 string2" d:\test.txt 在test.txt中搜索包含字符串"string1 string2"的行
findstr "string" d:\* 在D盘一级目录搜索包含字符串"string"的行
findstr /s "string" d:\* 深度遍历D盘包含字符串"string"的行
findstr /s "string" d:\*.txt 深度遍历D盘下txt结尾的包含字符串"string"的行

字符串处理
a=abcdefghijklmnopqrstuvwxyz
b=www. bbc .
c=com
1)截取
基本格式:%a:~[m[,n]]%
%a:~3% = defghijklmnopqrstuvwxyz 偏移量3,从第四位开始截取到最后
%a:~-3% = xyz 偏移量-3,从倒数第三位开始截取到最后
%a:~1,2% = bc 偏移量1,从第二位开始截取两位
%a:~1,-2% = bcdefghijklmnopqrstuvwx 偏移量1,从第二位开始截取到最后第三位
%a:~-10,2% = qr 偏移量-10,从倒数第十位开始截取两位
%a:~-10,-2% = qrstuvwx 偏移量-10,从倒数第十位开始截取到最后第三位
2)替换
基本格式:%b:str1=str2%
%b: =% = www.bbc. 空格替换成空
3)合并
基本格式:%b%%c%
%b%%c% = www. bbc .com
4)拓展
注:需满足1.该字符串为一个文件路径 2.变量可以用%x或%%x来表示,例如%0,%1或者for命令%%l
%~0 删除任何引号",扩充%0
%~f0 将%0扩充到一个完全合格的路径名
%~d0 仅将%0扩充到一个驱动器号
%~p0 仅将%0扩充到一个路径
%~n0 仅将%0扩充到一个文件名
%~x0 仅将%0扩充到一个文件扩展名
%~a0 将%0扩充到文件的文件属性
%~t0 将%0扩充到文件的日期/时间
%~z0 将%0扩充到文件的大小
组合使用:
%~dp0 仅将%0扩充到一个驱动器号和路径
%~nx0 仅将%0扩充到一个文件名和扩展名
等。

批处理命令--choice,可用于交互界面设计
选项与参数:
/c:参数,c:后应写提示可输入的字符或数字,之间无空格
/m:参数,m:后应写提示说明语
实例:
choice /c:123 /m:"please select"
if %errorlevel%==1 goto one
if %errorlevel%==2 goto two
if %errorlevel%==3 goto three
:one
command
goto end
:two
command
goto end
:three
command
goto end
echo goodbye

批处理输出到excel
需要输出到CSV格式的文件中
CSV是文本文件,用记事本和excel都能打开,用记事本打开显示逗号,用excel打开,没有逗号了,逗号用来分列
XLS是二进制文件只有用excel才能打开
实例:
echo aaa,bbb>test.csv
注:","逗号用于分列
复制代码

 

posted @   jason8826  阅读(10)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示