dos 批处学习笔记
dos 批处理
@ 只显示命令结果
echo 回显
pause 暂停
del 删除
set 查看系统变量
>nul 正确命令输入空洞
2>nul 错误命令输入空洞
dir 显示目录和文件
&& 第一条成功,执行第二条
|| 第一条失败,执行第二条
| more 传递的结果,一屏一屏看
> 输出到文件或者硬盘
>> 追加
<
*.log * 通配符
? 任意一个字符
%0 无限循环
^ 转义符
echo %date% 显示一个变量用%%
“” 目录名中间有空格用“” 引起来
setx 设置永久变量
1% 2% 3% 4% 5%
@echo off set 设置一个变量
set var1=D:\desktop\文档记要
echo %var1%
pause
@echo off
set /p var1=请输入您要查找的英文名或者RTX号码:
type "C:\Program Files\Tencent\RTXServer\Logs\Security\Security_%date:~0,4%%date:~5,2%%date:~8,2%.log" | find "%var1%"
%0
pause
IF [NOT] ERRORLEVEL number command
IF [NOT] string1==string2 command
IF [NOT] EXIST filename command
echoo %errorlevl% 显示执行成功还是失败
@echo off
net user
if %errorlevel% == 0 echo 上一条命令执行成功了!
pause
@echo off
set /p var=请随便输入一个命令:
%var%
if %errorlevel% == 0 goto yes
goto no
:yes
echo %var%执行成功了
pause
exit
:no
echo 基本执行失败了
pause
*************************************
@echo off
set /p var=随便输入个命令:
%var%
if %ERRORLEVEL% == 0 (echo %var%执行成功了) ELSE echo %var%执行失败了!
pause
***************************************
@echo off
set /p var1=请输入一个字符
set /p var2=请输入一个字符
if “%var1%” == “%var2%” (echo 我们相等) ELSE echo 我们不相等
pause
*******************************************
@echo off
if exist "c:\01.text" (echo 存在文件) ELSE echo 不存在此文件!
pause
*******************************************
@echo off
if /I a == A (echo 我们相等) ELSE echo 我们不等!
pause /I 代表不区分大小写
**********************************************
set /a a=1+1,b=2+1,c=3+1 可以,隔开,避免重赋值
set /a var = %var% + 1 在原有的基础上+1
set 定义变量,截取指字字符
**************************************************
for /d %%i in (*) do echo %%i 只显示目录
for /d %%i in (???) do echo %%i 只显示3个字符的文件夹
for /d %%i in (window?) do echo %%i 匹配一个字符
for /r c:\ %%i in (*.txt) do @echo %%i 打印c盘下面所有的txt文件
for /r %%i in (*.txt) do @echo %%i 以当前文件夹递归搜索
for /l %%i in (1,1,5) do echo %%i 定义一个数组,然后打印出来,每次+1,输入为12345
for /l %%i in (1,2,9) do echo %%i 定义一个数组,每次+2打印出来,输出为13579
for /l %%i in (1,2,5) do start cmd 输出135 ,打开三个cmd窗口
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]
eol=c - 指一个行注释字符的结尾(就一个)
skip=n - 指在文件开始时忽略的行数。
delims=xxx - 指分隔符集。这个替换了空格和跳格键的
默认分隔符集。
tokens=x,y,m-n - 指每行的哪一个符号被传递到每个迭代
的 for 本身。这会导致额外变量名称的分配。m-n
格式为一个范围。通过 nth 符号指定 mth。如果
符号字符串中的最后一个字符星号,
那么额外的变量将在最后一个符号解析之后
分配并接受行的保留文本。
usebackq - 指定新语法已在下类情况中使用:
在作为命令执行一个后引号的字符串并且一个单
引号字符为文字字符串命令并允许在 file-set
中使用双引号扩起文件名称。
OR /F "eol=; tokens=2,3* delims=, " %i in (myfile.txt) do @echo %i %j %k eol=;忽略以分号打头的那些行tokens=2,3打印第二列和第三列 delims=, 以 ,为分隔符
for /f "tokens=2 delims=^ " %%i in (a.txt) do echo %%i 读取excel的第二列,excel必须另存为txt
for /f "delims=" %%i in (C:\xop.txt) do echo %%i "delims="默认以空格为分隔符,现在不以任何为分隔符号,标点符号只能为英文格式
for /f "delims=" %%i in ('net user') do echo %%i 单引号标示,以单引号里面的输出结果,然后再次分列
for /f "tokens=1,2-4 delims=、-." %%i in (歌曲列表.txt) do echo %%i %%j %%k %%l “tokens=1,2-4”中的“2-4”表示第二至第四列。
for /f "tokens=1,2 delims=^ " %%a in (c:\rtx.txt) do @echo %%a %%b
%~I - 删除任何引号("),扩展 %I
%~fI - 将 %I 扩展到一个完全合格的路径名
%~dI - 仅将 %I 扩展到一个驱动器号
%~pI - 仅将 %I 扩展到一个路径
%~nI - 仅将 %I 扩展到一个文件名
%~xI - 仅将 %I 扩展到一个文件扩展名
%~sI - 扩展的路径只含有短名
%~aI - 将 %I 扩展到文件的文件属性
%~tI - 将 %I 扩展到文件的日期/时间
%~zI - 将 %I 扩展到文件的大小
%~$PATH:I - 查找列在路径环境变量的目录,并将 %I 扩展
到找到的第一个完全合格的名称。如果环境变量名
未被定义,或者没有找到文件,此组合键会扩展到
空字符串
可以组合修饰符来得到多重结果:
%~dpI - 仅将 %I 扩展到一个驱动器号和路径
%~nxI - 仅将 %I 扩展到一个文件名和扩展名
%~fsI - 仅将 %I 扩展到一个带有短名的完整路径名
%~dp$PATH:I - 搜索列在路径环境变量的目录,并将 %I 扩展
到找到的第一个驱动器号和路径。
%~ftzaI - 将 %I 扩展到类似输出线路的 DIR
for /f "delims=" %%i in (C:\xop.txt) do echo %%~i #删除txt中的引号,但不一定全部能删除
for /f "delims=" %%i in ('dir /b') do @echo %%~fi #dir /b 文件中的文件名,打印绝路径
for /f "delims=" %%i in ('dir /b') do @echo %%~di #只打印驱动器号
for /f "delims=" %%i in ('dir /b') do @echo %%~pi #只打印一个路径
for /f "delims=" %%i in ('dir /b') do @echo %%~ni #只打印文件名
for /f "delims=" %%i in (""net.exe"") do @echo %%~$PATH:i #有点像搜索
********************************************************************
@echo off
for /l %%i in (1,1,10) do (
set "str=%%i"
echo %str%
)
pause>nul
输出了10条错误的信息
********************************************************************
@echo off&setlocal enabledelayedexpansion
for /l %%i in (1,1,10) do (
set "str=%%i"
echo !str!
)
pause>nul
set:设置
local:本地(环境变量)
enable:能够
delayed:延迟
expansion:扩展
setlocal enabledelayedexpansion就是扩展本地环境变量延迟,
比较两段代码就可以知道,一个变量可以引用另一个变量
*****************************************************************
findstr
where