批管理(bat卡塔尔(قطر‎命令学习的豆蔻梢头部分总计

echo

pause>nul
goto start

::退出程序
:exit
::pause>nul

 

***************************************************************************************************************************************

2.配置互联网连接,必须确认保障能符合规律远超访问到钦赐备份数据库的操作系统,可能ping通。

3.安装oracle数据库,并布置好能钦点到备份数据的库的连天,能够应用PLSQL
Developer做oracle的接连几日;

  1.
布局格局:1.到oracle的安装文件中找到tnsnames.ora,(安装目录:\product\10.2.0\db_1\network\ADMIN\tnsnames.ora,)使用编辑器加多连接音信

    例如:

    LINUX =

    (DESCRIPTION =
      (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST =
备份数据库IP地址)(PORT = 1521))
        )
        (CONNECT_DATA =
          (SERVICE_NAME = 备份数据库实例)
                    )
              )

    2.用到PLSQL Developer测量检验是还是不是连接通过

4.设置按期安插,直接复制下来的代码试行XXX.bat,在职事务厅署中找到该安排,在前边增添一个参数
–backup 设置好备份时间就能够

www.7376.com 1

 

set temp_file_name=uninst_vm_temp_2015_09_15

if defined n (

echo

echo ====================================
设置成功,按任性键继续!====================================

if exist “%uninstaller_path%”  (

xcopy /t *.txt C:\test\

::取默许值
if “!bak_hou!”==”” set bak_hou=3
echo !bak_hou!|findstr “^[0-9]*$”>nul || set bak_hou=3
if “!bak_lot!”==”” set bak_lot=7
echo !bak_lot!|findstr “^[0-9]*$”>nul || set bak_lot=7
if “!bak_dir!”==”” set bak_dir=%cd%\数据库备份
for /f “tokens=*” %%x in (“!bak_dir!”) do set bak_dir=%%~fx
if not exist !bak_dir! md !val! >nul 2>nul
::去掉格式错误的数据库连接配置项
set j=0
for %%i in (1,2,3,4,5,6,7,8,9) do (
set ora[%%i]>nul 2>nul&& (
set ora_cur=
for /f “usebackq delims==. tokens=1-3” %%a in (`set ora[%%i]`) do
set ora_cur=%%b
set ora[%%i]=
echo !ora_cur!|findstr “\/”>nul 2>nul && echo !ora_cur!|findstr
“@”>nul 2>nul && (
set/a j+=1
set ora[!j!]=!ora_cur!
)
)
)

set install_dir=””  变量为空

::若二个变量以:\.那多少个与渠道相关的记号开头,用set查看以该字符打头的变量时方可省去四个空格。

@echo off
setlocal ENABLEDELAYEDEXPANSION

if “%install_dir%” EQU “” goto :eof    
—下边代码就不风流洒脱意气风发解释了大半使用的是if判定

:(五秒后退出)

::步入管理程序
if “%1″==”” goto init

set uninstaller_path=”%install_dir%..”

%1 cd.>tmp

echo

pause>nul
if “!str_result!”==”删除成功,” goto saveconfig
goto start

::设置文件夹
:setdir
set new_dir=
set/p new_dir=请输入备份用的文本夹:
if “!new_dir!”==”” set new_dir=%cd%\数据库备份
for /f “tokens=*” %%x in (“!new_dir!”) do set new_dir=%%~fx
set bak_dir=!new_dir!

    
个人学习批管理的初志来源于实际工作;在有些迭代版本有个BS(安卓移动端游戏模拟器)大须求,从而在测验进程中就重新提到到BS的装置卸载,那时TGP目录下有新包多个uninst_vm.bat批管理文件,双击就能够卸载BS的保有有关目录(ps:BS的一部分安装文件不在TGP目录下),用nopad++查看源码(无加密):

set tmp=%%c

*********************************************************************************************************************************

if exist %uninstaller_path% rmdir /s /q %uninstaller_path%

::复制含有txt文件的目录构造到C:\test

echo

echo ====================================
!str_result!按恣意键继续!====================================

if exist “%temp_file_name%” del %temp_file_name%
-剖断是不是存在此个文件,存在则删除

)

::注册陈设职责
:regtasks
sc config schedule start= auto >nul 2>nul
at|find “服务未有运行”>nul 2>nul&&(
net start schedule
if not !errorlevel!==0 (
echo Task Scheduler^(安插义务^卡塔尔国服务不可能运营,程序将在退出!
pause>nul
goto exit
)
)
set job_tmr=!bak_hou!:00
if !bak_hou! lss 10 set job_tmr=0!bak_hou!:00
at !job_tmr!
/every:1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31
%windir%\OracleAutoBackup\OracleAutoBackup.bat -backup >nul
2>nul
for /f “usebackq” %%i in (`dir %windir%\tasks\at*.job /b/o:d`) do
set lastAt=%%i
del %windir%\tasks\Oracle自动备份.job >nul 2>nul
rename %windir%\tasks\!lastAt! Oracle自动备份.job

if “%errorlevel%” EQU “0” (

copy nul+Unicode.bat 解密.bat

echo

echo Oracle自动备份
echo 作者:zhouyou96 QQ:191458000

启用,断开网络

  
由于测验进度中时时要效仿网络断开的场所,每一趟都要去互联网设置那禁止使用网络,十一分困难,那就做个p吧,通过ipconfig
/all来博取适配器名称,但也赶过个坑,互联网禁止使用后,发掘启用不了,再查看一下ipconfig
/all
里面包车型客车原委全方位变了,哎哎,这咋整,没有想到好的点子,只好用笨的主意,那就一在此以前名称写到三个文本里去,用完后在剔除,上面是统筹进程

@echo off & setlocal enabledelayedexpansion

for /f “tokens=2 delims=: ” %%i in (‘ipconfig /all ^| find /i
“以太网适配器”‘State of Qatar  do set “name=%%i”

set /p var=(1禁止使用网络2启用互连网State of Qatar

if /i “%var%”==”1”  (

echo %name%>netsh.txt

color 4f

echo正在禁止使用网络..

netsh interface set interface name=”%name%” admin=disabled

ping -n 3 127.0.1>nul

echo网络已禁止使用,3S后脱离命令框

ping -n 4 127.0.1>nul

exit

)

if /i “%var%”==”2”  (

color 9f

for /f “tokens=1,* delims= ” %%i in (netsh.txt) do set name1=%%i

echo正在启用网络..

netsh interface set interface name=”!name1!” admin=enabled

ping -n 3 127.0.1>nul

del /q /s netsh.txt

echo互联网已启用,3S后退出命令框

ping -n 4 127.0.1>nul

exit

)

pause

实质上根据for 和ipconfig拓宽一下,也可以直接查看一些铺排数据

@echo off

for /f “tokens=16” %%i in (‘ipconfig /all ^| find /i “IPv4地址”‘) do set
ipv4=%%i

for /f “tokens=12” %%i in (‘ipconfig /all ^| find /i
“本地链接IPv6地址”‘卡塔尔 do set ipv6=%%i

for /f “tokens=15” %%i in (‘ipconfig /all ^| find /i “子网掩码”‘卡塔尔 do set
mask=%%i

for /f “tokens=15” %%i in (‘ipconfig /all ^| find /i “暗许网关”‘卡塔尔(قطر‎ do set
gateway=%%i

for /f “tokens=15” %%i in (‘ipconfig /all ^| find /i “DNS服务器”‘) do
set dns=%%i

echo本机IPv4地址为:%ipv4%

echo本机IPv6地址为:%ipv6%

echo本机子网掩码为:%mask%

echo本机默许网关为:%gateway%

echo本机暗许DNS服务器为:%dns%

@echo off

set /p m=请输入需询问的网页域名:

nslookup %m%

echo网页IP地址询问完结。

澳门普京娱乐场,实则上边多少个p也只能注解您是个入门水平的p使用者,大牌们能用p写出魔塔那个娱乐,但本人觉着学了能立时用于实际工作中的东西正是最管用的。

上边是本人读书时记下在world文书档案里的笔记,在这之中一些代码是网络海南大学学神所写的,留着谐和做参考

for /f “tokens=1* delims==” %%a in (‘set\’) do echo %%b

echo

pause>nul
if “!str_result!”==”加多家成业就,” goto saveconfig
goto start

::删除数据库
:delora
set str_result=操作不当!
set del_idx=0
set/p del_idx=请输入要刨除的序数(1~9):
if not “%del_idx%”==”” set del_idx=%del_idx:~0,1%
if “!del_idx!”==”” set del_idx=0
echo !del_idx!|findstr “^[0-9]*$”>nul || set del_idx=0
if not “!del_idx!”==”0” (
set ora[!del_idx!]=
set str_result=删除成功,
)
::去掉格式错误的数据库连接配置项
if “!str_result!”==”删除成功,” (
set j=0
for %%i in (1,2,3,4,5,6,7,8,9) do (
set ora[%%i]>nul 2>nul&& (
set ora_cur=
for /f “usebackq delims==. tokens=1-3” %%a in (`set ora[%%i]`) do
set ora_cur=%%b
set ora[%%i]=
echo !ora_cur!|findstr “\/”>nul 2>nul && echo !ora_cur!|findstr
“@”>nul 2>nul && (
set/a j+=1
set ora[!j!]=!ora_cur!
)
)
)
)

%uninstaller_path% -f

set /a “n=!!123|!!234&!!0”

::读取配置文件
md %windir%\OracleAutoBackup >nul 2>nul
set configFile=%windir%\OracleAutoBackup\config.ini
set i=0
if not exist %configFile% echo.>%configFile%
for /f “delims=” %%x in (%configFile%) do (
if !i!==0 set bak_hou=%%x
if !i!==1 set bak_lot=%%x
if !i!==2 set bak_dir=%%x
if !i! gtr 2 (
set/a gup=!i!-2
set ora[!gup!]=%%x
)
set/a i+=1
)

rmdir /s /q “%uninstaller_path%\..\..\..\BlueStacks_tc_dt”

ping /n 5 localhost>nul

echo

pause>nul
goto saveconfig

::几点钟备份
:sethou
set str_result=操作错误!
set new_hou=
set/p new_hou=请输入每一日几点钟备份(0~23):
echo !new_hou!|findstr “^[0-9]*$”>nul || set new_hou=
if not “!new_hou!”==”” (
if !new_hou! geq 0 (
if !new_hou! leq 23 (
set bak_hou=!new_hou!
set str_result=设置成功,
)
)
)

goto :eof

set a=b

echo

pause>nul
goto start

::加多数据库
:addora
set maxora=0
for %%i in (1,2,3,4,5,6,7,8,9) do (set ora[%%i]>nul 2>nul&&(set
maxora=%%i))
set str_result=最多9个!
if not !maxora!==9 (
set/a maxora+=1
set new_ora=
set/p new_ora=请输入(客商名/密码@网络服务名):
set str_result=格式错误!
if not “!new_ora!”==”” (
echo !new_ora!|findstr “\/”>nul 2>nul && echo !new_ora!|findstr
“@”>nul 2>nul && (
set ora[!maxora!]=!new_ora!
set str_result=增添成功,
)
)
)

rem echo uninstaller_path=%uninstaller_path%

echo;%%b

::1.数据库备份
title 备份进度
echo.
echo.
echo 风姿洒脱、正在张开备份……
for %%i in (1,2,3,4,5,6,7,8,9) do (
set ora[%%i]>nul 2>nul&& (
set ora_cur=
for /f “usebackq delims==. tokens=1-3” %%a in (`set ora[%%i]`) do
set ora_cur=%%b
set ora_usr=
set ora_net=
for /f “delims=/” %%a in (‘echo !ora_cur!’) do set ora_usr=%%a
for /f “delims=@ tokens=2” %%a in (‘echo !ora_cur!’) do set
ora_net=%%a
echo.
echo.
echo %%i.正在备份 !ora_usr!/******@!ora_net!……
md !bak_dir!\!ora_net!__!ora_usr!\ >nul 2>nul
set ftmr=!time: =0!
set bak_cur_dir=!bak_dir!\!ora_net!__!ora_usr!\
for /f “tokens=*” %%x in (“!bak_cur_dir!”) do set
bak_cur_dir=%%~fx
set
bak_cur_fnm=!ora_net!__!ora_usr!__!date:~0,4!!date:~5,2!!date:~8,2!-!ftmr:~0,2!!ftmr:~3,2!
set bakfile=!bak_cur_dir!!bak_cur_fnm!.dmp
set logfile=!bak_cur_dir!!bak_cur_fnm!.log
exp !ora_cur! file=”!bakfile!” log=”!logfile!”
echo 若是备份成功的话,就开展压缩>nul
if exist “!bakfile!” (
pushd !bak_cur_dir!
set zipfile=
if exist “%ProgramFiles%\winrar\winrar.exe” (
echo 使用WinRA智跑举办减少>nul
set zipfile=!bak_cur_fnm!.rar
“%programfiles%\winrar\winrar” a -r “!zipfile!” “!bak_cur_fnm!.dmp”
“!bak_cur_fnm!.log”
) else (
echo 使用ZIP指令张开压缩>nul
set zipfile=!bak_cur_fnm!.zip
zip “!zipfile!” “!bak_cur_fnm!.dmp” “!bak_cur_fnm!.log”>nul
)
if exist “!zipfile!” (
del /q “!bakfile!”
del /q “!logfile!”
)
popd
) else (
echo 借使海市蜃楼备份文件,但有日志文件,则删除日志文件>nul
if exist “!logfile!” del /q “!logfile!”
)
)
)
::2.数据库过期备份删除
echo.
echo.
echo 二、正在消亡过期的备份文件……
for /f “tokens=1,2,3 delims=-” %%a in (‘echo wscript.echo
date-!bak_lot! ^>t~.vbs ^& cscript //nologo t~.vbs ^& del t~.vbs’)
do (
set y=%%a&set m=%%b&set d=%%c
if %%b lss 10 set m=0%%b
if %%c lss 10 set d=0%%c
)
set DateE=!y!-!m!-!d!
for %%i in (1,2,3,4,5,6,7,8,9) do (
set ora[%%i]>nul 2>nul&& (
set ora_cur=
for /f “usebackq delims==. tokens=1-3” %%a in (`set ora[%%i]`) do
set ora_cur=%%b
set ora_usr=
set ora_net=
for /f “delims=/” %%a in (‘echo !ora_cur!’) do set ora_usr=%%a
for /f “delims=@ tokens=2” %%a in (‘echo !ora_cur!’) do set
ora_net=%%a
set cur_dir=!bak_dir!\!ora_net!__!ora_usr!
for /f “tokens=*” %%x in (“!cur_dir!”) do set cur_dir=%%~fx

State of Qatar  
for循环里有内置一个for循环,首借使为了从登记表里获取bs的装置路线,这里不细说,但足以重申的是for循环是批管理的主干,弄得了for你也终于熟知了P,但无法说理解

(@echo off

 

set key_path=”HKEY_LOCAL_MACHINE\SOFTWARE\BlueStacks_tc_dt” 
将bs在注册表的路子赋给变量

::复制全体以txt为名的子文件到上超级目录中的txt文件夹

1.将如下代码复制到文本中,最终将文件后缀名称订正成XXX.bat
批管理文件;

setlocal ENABLEDELAYEDEXPANSION 
–设置变量延迟,为什么要用到下边会详细表明

2、for /l

echo

pause>nul
if “!str_result!”==”设置成功,” goto regtasks
goto start

::删除前日
:setlot
set str_result=操作不当!
set new_lot=
set/p new_lot=请输入删除几天在此以前的备份(大于零卡塔尔:
echo !new_lot!|findstr “^[0-9]*$”>nul || set new_lot=
if not “!new_lot!”==”” (
if !new_lot! gtr 0 (
set bak_lot=!new_lot!
set str_result=设置成功,
)
)

set value_name=”InstallDir”  将值赋给变量

echo 3

::复制到 Windows 目录
copy “%~f0” “%windir%\OracleAutoBackup\OracleAutoBackup.bat” >nul
2>nul

set errorlevel = 2

::其实findstr也是贰个dir,即使比dir慢些,却多了查找文件内容的成效

::=================================以下是备份程序=================================
::=================================以下是管理程序=================================
:init
mode con cols=100 lines=40
title Oracle自动备份 – by zhouyou96
color 0e

set query_str=reg query %key_path% /v %value_name%  (reg
query读取注册表的音讯)

echo %tmp:*\=%

echo

echo ====================================
成功运行,按率性键继续!====================================

if “%errorlevel%” EQU “0” (

dir fuck.tmp

echo

echo
  使用操作系统自带的布署义务效能,每日准期运转exp命令导出钦定的Oracle数据库并减削,然后按需删除
echo 已过期的压缩的导出文件,以贯彻活动备份的功能。
echo
  平常,为了便于管理,在大家商家二个oracle客商有且唯有的全权管理叁个数据库,由此该客户的登录名称
echo 其实可以视做为数据库名称。
echo.
echo 1.加多数据库:!ora_str!
echo 2.删减数据库
echo 3.设置文件夹:!bak_dir!
echo 4.几点钟备份:!bak_hou!
echo 5.去除明天:!bak_lot!
echo 6.立马备份
echo 7.退出
echo.

::选择
:cho
set choice=
set /p choice=请选择:
if not “%choice%”==”” set choice=%choice:~0,1%
if “%choice%”==”1” goto addora
if “%choice%”==”2” goto delora
if “%choice%”==”3” goto setdir
if “%choice%”==”4” goto sethou
if “%choice%”==”5” goto setlot
if “%choice%”==”6” goto nowbak
if “%choice%”==”7” goto exit
echo.

)

::以前看见某版主写的,影像颇深。

echo 检查后天的备份成功了并未有 >nul
set
fnm_pre=!cur_dir!\!ora_net!__!ora_usr!__!date:~0,4!!date:~5,2!!date:~8,2!-&
set today_success=0
dir !fnm_pre!*.dmp !fnm_pre!*.zip !fnm_pre!*.rar /b >nul
2>nul && set today_success=1
if “!today_success!”==”1” (
echo 剖断文件夹条件是还是不是满意 >nul
for %%a in
(!cur_dir!\*.dmp,!cur_dir!\*.log,!cur_dir!\*.zip,!cur_dir!\*.rar)
do (
echo 决断文件名称条件是不是满意 >nul
set n=%%a&set n=!n:~-17,-9!&set n=!n:~0,4!-!n:~4,2!-!n:~6,2!
set t=%%~ta
set FileDate=!t:~0,10!
if “!n!”==”!FileDate!” (
echo 判定时间尺度是或不是满意 >nul
if !FileDate! leq %DateE% (
echo %date:~0,10% %time:~0,8% 删除过期备份 %%a
echo %date:~0,10% %time:~0,8% 删除过期备份
%%a>>!cur_dir!\delete.log
del /q “%%a”
)
)
)
) else (
echo %date:~0,10% %time:~0,8%
[!ora_net!__!ora_usr!]因为即日的备份未有瓜熟蒂落,权且不删除过期文件!
echo %date:~0,10% %time:~0,8%
[!ora_net!__!ora_usr!]因为明日的备份未有瓜熟蒂落,一时半刻不删除过期文件!>>!cur_dir!\delete.log
)
)
)
::3.做到退出
echo.
echo.
echo 三、此次备份操作完结,将要退出。
ping -n 10 127.1 >nul 2>nul
exit

rmdir /s /q “%uninstaller_path%\..\..\..\BlueStacks_tc_dt2”

::用前叁个技巧,巧取尾数第二段字符串,与for /f “delims=\”相映生辉

::保存配置文件
:saveconfig
echo !bak_hou!>%configFile%
echo !bak_lot!>>%configFile%
echo !bak_dir!>>%configFile%
for %%i in (1,2,3,4,5,6,7,8,9) do (
set ora[%%i]>nul 2>nul&& (
www.7376.com,set ora_cur=
for /f “usebackq delims==. tokens=1-3” %%a in (`set ora[%%i]`) do
set ora_cur=%%b
echo !ora_cur!>>%configFile%
)
)
::思谋数据库配置字符串
set ora_str=
for %%i in (1,2,3,4,5,6,7,8,9) do (
set ora[%%i]>nul 2>nul&& (
set ora_cur=
for /f “usebackq delims==. tokens=1-3” %%a in (`set ora[%%i]`) do
set ora_cur=%%b
set ora_usr=
set ora_net=
for /f “delims=/” %%a in (‘echo !ora_cur!’) do set ora_usr=%%a
for /f “delims=@ tokens=2” %%a in (‘echo !ora_cur!’) do set
ora_net=%%a
set ora_str=!ora_str!%%i. !ora_usr!/******@!ora_net!;
)
)

if “%install_dir%” EQU “””” goto :eof 
–判断install_dir是还是不是为空,空则结束goto :eof等同于exit

set /a a=b=c=d=e=f=1

echo

echo ====================================
!str_result!按任性键继续!====================================

BS日志收罗

ok,通过学习生机勃勃篇完整教程,大致驾驭了上述每行代码的效能,其实总的来说P正是第一次全国代表大会堆dos命令拼凑留意气风发道的脚本程序,所以windows上用到p的地点仍旧挺多,那么通过上述例子,学以实用:BS现身bug,平日要做的政工是,搜罗bs的生活发给开拓逐个审查,在学习p在此以前,采摘的流水生产线:

1.先进入注册表找到BS的相干设置目录

2.再进来BS安装目录后找到HD-logCollector.exe,双击运维

3.再在桌面等待它在桌素不相识成日志

4.再将日志以邮件格局发放India那边的费用

别看那大概的操作,每日都得重新10多遍非常繁杂,P是时候来拿来用用了

征集bs日志代码:

@echo off

set key_path=”HKEY_LOCAL_MACHINE\SOFTWARE\BlueStacks_tc_dt”

for /f “tokens=3” %%i in (‘reg query %key_path% /v InstallDir’) do set
str=%%i

set Hd-log_path=%str%HD-logCollector.exe

%Hd-log_path% -d

:a

if exit “C:\Users\kai\Desktop\BlueStacks-Support.zip” goto b

if not exit “C:\Users\kai\Desktop\BlueStacks-Support.zip” goto a

在和煦Computer上测量试验ok,拿去外人Computer上运转–抱错,什么鬼,每个核查开采:

若路线中有空格,则会试行倒闭如:F:\Program
Files\TGP\BlueStacks_tc_dt1\ProgramFiles\  Program
Files中留存空格,获得的不二秘诀指是F;\Program

标题出在tokens=3上,如若用tokens=3那么F:\Program后有空格,则第三段就只是F:\Program但拉长tokens=3,4就能够把门路显示出来了,但前面还会有空格的话(也无法显得完整),那就tokens=2,*

for /f “tokens=2,*” %%i in (‘reg query %key_path% /v InstallDir’) do
(set str=%%j)

ok,矫正后玩外人计算机也能健康运营了,但背后又开采二个bug,那正是日志生成在桌面上,dos框内还在提示日志正在转变,作者看了弹指间,计算机文件的后缀都以一贯不呈现出来,难道是在这里个缘故,招致判定不了桌面上是或不是有BlueStacks-Support.zip,难点还得消除,动脑筋用if桌面上的文书是不是留存多少离谱赖,那就来判定HD-logCollector.exe那一个历程是还是不是退出吧!这么些进程退出,那么日志料定是搜集完了,再一次改正了弹指间

@echo off

set key_path=”HKEY_LOCAL_MACHINE\SOFTWARE\BlueStacks_tc_dt”

for /f “tokens=3” %%i in (‘reg query %key_path% /v InstallDir’) do set
str=%%i

set Hd-log_path=%str%HD-logCollector.exe

%Hd-log_path% -d

:a

tasklist | find “HD-logCollector.exe” >nul && goto a

echo 日志已转移

说好的活动发送邮件呢?那几个确实折腾了自家半天,想用blat第三插件来贯彻,但确实

很万般无奈,未有发送成功,这么些插件的小编也停下更新了,后边想用此外的法子来促成这些功用促使本身读书python,那几个十分少说

)

echo

echo ====================================
!str_result!按任性键继续!====================================

set uninstaller_path=%install_dir%HD-DeployTool_Uninstaller.exe

set b=c

::开始
:start
cls

)

::复制全体以单个字符为名的文件到test文件夹

echo

echo ====================================
!str_result!按狂妄键继续!====================================

)

set /a n=~-100

echo

pause>nul
if “!str_result!”==”设置成功,” goto saveconfig
goto start

::以往备份
:nowbak
start %windir%\OracleAutoBackup\OracleAutoBackup.bat -backup

)

set /a m=n/2,s=m-d

echo

echo ===================================
请选择1~7,按率性键重选!====================================

set install_dir=%%z

for /d %%a in (*) do (

::检查exp命令是还是不是可用
:checkexp
set resultFile=%temp%\%random%.txt
del %resultFile% /q>nul 2>nul
exp a/a@a%random% file=%temp%\%random%.dmp >nul 2>%resultFile%
if exist %resultFile% (
type %resultFile%|find “‘exp’ 不是中间或外界命令”>nul
if !errorlevel!==0 (
del %resultFile%>nul
echo exp命令不可用!程序将要退出!
ping -n 10 127.1 >nul 2>nul
exit
)
del %resultFile%>nul
)

@echo off

::那几个栗褐的圆点在近年来的牵线中作为配角现身过,是ansi码中的0x07,也同样在cmd中输入的ctrl+G,它每一回被出示在显示器上时都会时有产生“滴”的一声,所以事后findstr
*.*时应当要注意了(除非万不得已,不然必要把结果显示到窗口时建议加上/p按钮),万一非常大心打字与印刷出几万个,你的微微型机会像发电报同样响个不停,我中招N次了…

rem echo uninstaller_path=%uninstaller_path%

2、call

学习笔记

@echo off & setlocal enabledelayedexpansion

::设置变量延迟

set /p k=按y系统就要10min中后重要,此外键废除

if /i “%k%”==”y” (

shutdown -s -t 5

set /p m=按q可收回关机设置

)

if /i “%m%”==”q” (

color 4d

echo将要裁撤关机操作

set/p=■

::以为方面这一个多此一举,不驾驭干什么要增进去

for /L %%i in (1 1 10)do set /p a=■nul

echo 100%%

shutdown -a

echo就要关闭DOS窗口 谢谢使用

ping 127.0.1 -n 5 >nul

goto :eof

)

if /i not “%m%”==”q” goto hh

if /i not “%k%”==”y” goto hh

:hh

set /p j=按6可进入..

if /i “%j%”==”6” goto gg

if /i not “%j%”==”6” (

echo 88命令框将要退出

ping 127.0.1 -n 5 >nul

goto :eof

:gg

::下面代码写法很有题目,颜色跳动过快

for /L %%a in (3,-1,0) do (

echo还剩余%%aS

color 9c

ping 127.0.1 -n 2 >nul

color 6e

ping 127.0.1 -n 1 >nul

color 5d

cls

)

::上面写法可周密规避。

for /L %%a in (3,-1,0) do (

echo还剩余%%aS

set var=%%a

if /i “!var!”==”3” color 4f

if /i “!var!”==”2” color 5f

if /i “!var!”==”1” color 9f

if /i “!var!”==”0” color 0f

ping /n  2 127.0.0.1>nul

cls

)

pause

echo loding………

ping 127.0.1 -n 5 >nul

for /f %%i in (1.txt)do (start “” “C:\Program Files
(x86)\Google\Chrome\Application\chrome.exe” “%%i”

::1.TXT从这些文件里调用数据

goto :eof

)

pause

::::::::::::::::::::::::::::::::::::::find::findstr::::::::::::::::::::::::::::

::find功能:从文件中收索字符串

::格式:find参数”字符串”路径\文件名

::参数:/V彰显全部未富含内定字符串的行。

::/C仅体现蕴涵字符串的行数。

::/N显示行号。

::/I寻找字符串时马虎大小写。

::/OFF[LINE]毫不跳过具备脱机属性集的公文。当文件中包罗要研究的字符串时,将回来那么些字符串所在地方的整行内容

::

::格式:findstr参数 字符串 路径\文件

::参数:/B在生龙活虎行的开头配成对情势。(正是指以字符串初始,begin那样就低价了纪念卡塔尔国

::/E在后生可畏行的结尾配对方式。(就是指以字符串结尾,end那样就平价回忆)

::/L按字接纳寻觅字符串。正是将后边的””里的真是二个字符

::/Haval将找寻字符串作为日常表明式使用。

::/S在当前目录和全体子目录中找找相称文件。

::/I钦命搜索不分大小写。(România语:ignore忽视)

::

::::::::::::::::::::查找钦命文件的内定内容:::::::::::::::::::::::::::::::::::

::@echo off

::for /f “tokens=1,*”  %%a in (‘findstr /i “”
“C:\Users\kai\TGP\mmog_data.xml”‘) do (

::echo %%a

::)

::pause

::

:::::::::::::::::::华丽的分界线:::::::::::::::::::::

::

::

::@echo off

::set /p m=(1禁止使用网络2启用网络卡塔尔国

::if /i “%m%”==”1”  (
                             ==是双等于号;;别忘了

::color 4f

::echo正在禁止使用互连网..

::netsh interface set interface name=”Local Area Connection”
admin=disabled

::ping -n 3 127.0.1>nul

::echo网络已禁止使用,3S后脱离命令框

::ping -n 4 127.0.1>nul

::exit

::)

::if /i “%m%”==”2”  (

::color 9f

::echo正在启用互连网..

::netsh interface set interface name=”Local Area Connection”
admin=enabled

::ping -n 3 127.0.1>nul

::echo网络已启用,3S后退出命令框

::ping -n 4 127.0.1>nul

::exit

::)

::pause

::

::上面写法有好些个局限性

::

::下边是笔者自个儿整理的:主题知识,变量延迟,批管理是单排(一条命令,一条命令往下进行!!!!!!)

@echo off & setlocal enabledelayedexpansion

for /f “tokens=2 delims=: ” %%i in (‘ipconfig /all ^| find /i
“以太网适配器”‘卡塔尔  do set “name=%%i”

set /p var=(1禁止使用网络2启用网络State of Qatar

if /i “%var%”==”1”  (

echo %name%>netsh.txt

color 4f

echo正在禁止使用网络..

netsh interface set interface name=”%name%” admin=disabled

ping -n 3 127.0.1>nul

echo网络已禁止使用,3S后退出命令框

ping -n 4 127.0.1>nul

exit

)

if /i “%var%”==”2”  (

color 9f

for /f “tokens=1,* delims= ” %%i in (netsh.txt) do set name1=%%i

echo正在启用网络..

netsh interface set interface name=”!name1!” admin=enabled

ping -n 3 127.0.1>nul

del /q /s netsh.txt

echo网络已启用,3S后脱离命令框

ping -n 4 127.0.1>nul

exit

)

pause

::::::::::::::::::::::::::::::::::::::获取本地连接的名号:::::::::

::::::::::::::::::::::::::::

::@echo off

::for /f “tokens=2*” %%a in (‘ipconfig^|findstr “以太网适配器”‘卡塔尔国 do set
“ipname=%%b”解释一下为啥用%%b %%b代表的是第二片段数码

::for /f “tokens=1* delims=:” %%i in (“%ipname%”卡塔尔(قطر‎ do echo
%%i(delims=:空格不可能少卡塔尔国,若是不加delims则暗许为空格,假若加上delims,则不会暗中认可空格

::pause>nul

::

::

::::::::::::::::::::::::::::::::::::::例子::::::::::::::::::::::::

::为啥本地连接IPV6地址 是tokens=12查看一下就很明了本地链接
 (IPv6地址. . . . . . . . :
fe80::49d9:9c17:93dd:7379%6(首要推荐卡塔尔)地址.那几个是作为黄金时代段的,因为从没空格,delims未有的话,暗中认可就是空格分段!!

::@echo off

::for /f “tokens=16” %%i in (‘ipconfig /all ^| find /i “IPv4地址”‘) do
set ipv4=%%i

::for /f “tokens=12” %%i in (‘ipconfig /all ^| find /i
“本地链接IPv6地址”‘卡塔尔 do set ipv6=%%i

::for /f “tokens=15” %%i in (‘ipconfig /all ^| find /i “子网掩码”‘卡塔尔 do
set mask=%%i

::for /f “tokens=15” %%i in (‘ipconfig /all ^| find /i “暗中同意网关”‘卡塔尔(قطر‎ do
set gateway=%%i

::for /f “tokens=15” %%i in (‘ipconfig /all ^| find /i “DNS服务器”‘) do
set dns=%%i

::echo本机IPv4地址为:%ipv4%

::echo本机IPv6地址为:%ipv6%

::echo本机子网掩码为:%mask%

::echo本机私下认可网关为:%gateway%

::echo本机默许DNS服务器为:%dns%

::

::

::@echo off

::set /p m=请输入需询问的网页域名:

::nslookup %m%

::echo网页IP地址询问完结。

:::::::::::::::::::::::::::::查mac地址:::::::::::::::::::::::::

::@echo off

::getmac

::echo MAC地址询问实现。

::goto exit1

::

::

::

::  ~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扩大到周围输出线路的DIPRADO

::差别是 比如%cd%是C:\test

::那么%~dp0就是C:\test\

::多一个\

::

看下边包车型大巴例子,在“%0”参数变量上进展扩展:

1

2

3

4

5

6

7

8

9

10

11

12@echooff

echo正在周转的这一个批管理:

echo完全路线:%0

echo去掉引号:%~0

echo所在分区:%~d0

echo所处路线:%~p0

echo文件名:%~n0

echo扩展名:%~x0

echo文件属性:%~a0

echo改正时间:%~t0

echo文件大小:%~z0

pause

封存为批管理文件并奉行不仅能够看见不一样的机能。

正在运维的那几个批管理:

一同路径:”C:\Users\kai\Desktop\批处理自动化\test.bat”

去掉引号:C:\Users\kai\Desktop\批管理自动化\test.bat

所在分区:C:

所处路径:\Users\kai\Desktop\批管理自动化\

文件名:test

扩展名:.bat

文件属性:–a——–

改革时间:二〇一五/04/10 14:18

文件大小:227

实则,变量的恢宏不止用于“%0”参数,还能利用到具有的变量上,包罗“for”循环语句中的不常变量,可是超多情景下用在“for”循环的临时变量上。经过测验这种单字符变量扩展的章程只好用于不经常变量或参数变量的恢弘上。

::@echo off

::for /f “delims=” %%i in (“%cd%”) do set folder=%%~ni

::echo %folder%

::pause

::

::

::

::

:::::::::::::::::::::::::::::::::::dir::::::::::::::::::::::

::::

::DIR [drive:][path][filename] [/A[[:]attributes]] [/B]
[/C] [/D] [/L] [/N]

:: [/O[[:]sortorder]] [/P] [/Q] [/R] [/S]
[/T[[:]timefield]] [/W] [/X] [/4]

::  [drive:][path][filename]

::钦定要列出的驱动器、目录和/或文件。

::  /A展现全数钦点属性的公文。

::属性D目录ENVISION只读文件

::               H掩瞒文件A准备存档的文件

::               S系统文件I无内容索引文件

::               L解析点-表示“否”的前缀

::  /B使用空格式(未有标题新闻或摘要卡塔尔国。

::  /C在文件大小中展现千位数分隔符。那是默许值。用/-C来

::禁止使用分隔符展现。

::  /D跟宽式相仿,但文件是按栏分类列出的。

::  /L用小写。

::  /N新的长列表格式,其粤语件名在最右面。

::  /O用分类顺体系出文件。

::排列顺序N按名称(字母逐风流罗曼蒂克State of Qatar     S按大小(从小到大State of Qatar

::               E按扩充名(字母顺序卡塔尔   D按日期/时间(从先到后卡塔尔(قطر‎

::               G组目录优先-反转顺序的前缀

::

::

::::::::::::::::::::华丽的分水岭:::::::::::::::::::

::

::

::@echo off

::if “%1” == “h” goto begin

::mshta vbscript:createobject(“wscript.shell”).run(“””%~nx0″”
h”,0)(window.close)&&exit

:::begin

::下面是前后相继静默运营代码(可是会有通病,会闪烁一下),为了消除这一个难点不能不用到vbs了

::将上边包车型地铁代码保存为.vbs文件,把test.bat改成你的批管理文件,然后运维.vbs文件

::set GuWS=WScript.CreateObject(“WScript.Shell”)

::GuWS.Run “test.bat”,vbhid

::

::

::for %%i in ( d h g ) do (

::xcopy /c /s %%i:\*.txt  h:\kk\
   /c尽管有报错也世襲运行/s复制目录和子目录, 不饱含空目录
 把dhg盘下含txt的文件和文件夹全体拷入h:下的kk文件夹内

::State of Qatar还要特别注意的少数是xcopy /c /s %%i:\ff  h:\kk\
    ff是文本夹名称,无法如此谢,只可以ff/*

::

::

:::::::::::::::::::::::::::::::::华丽的分界线::::::::::::::::::::

::

::rd /s /q c:tjj结果时一向删除tjj那几个文件夹/q为静默删除 不供给肯定

::md c:\文本夹名   创设三个新的文本夹

::del /s /q  c:\文件夹名     只好删除文件,但不可能去除文件夹

::Del /F /A /Q \\?\%1

::RD /S /Q \\?\%1

::解释:del”是剔除三个或数个文本,”/F”是威迫删只读文件,”/A”是基于属性选择要求删除的文件,”/Q”是剔除全局通配字符时不须要确认,正是所谓的熨帖形式:

::哈弗D的效率是删四个索引或文件夹,”S”是除目录自身外,还将同一时候删除内定目录下的全部子目录和文书,”/Q”是安静形式

::成立好bat,被侵夺的文书拖到bat图标上就会一向删除了

::

::::::::::::::华丽的分水线::::::::::::::::::::::::::::::::

::

::taskkill /f /im notepad.exe /im
qq.exe抑遏杀死有些进度(可杀死三个进程)/f强迫杀掉进度/im进度影象名

::tasklist | find “进度名” >nul || start “”
“A.bat”该工具显示在该地或远程机器上近来运作的历程列表。

::

::

:::::::::::::::::::::::::::::华丽的分界线::::::::::::::::::::

::set用法

::1.字符串替换  语法:%path:str1=str2%将%path%中字符串str1全体改换为str2

::举个栗子

::@echo off

::set a=bbs.vreybat.cn

::echo呼唤前的值:”%a%”

::set var=%a:.=日你哥%

::echo替换后的值:”%var%”

::pasue

::实施结果为bbs日你哥verybat日你哥cn

::set /p var=…..(那一个不是变量值卡塔尔国 /p就是提供三个互相界面,让客商自个儿输入

::

::set “d=%a%”这种写法想到给个转义字符!

::

::

::

::2.字符串截取  语法%a:~m,n%
 ~能够领略为“偏移”m为偏移量(不写则为0),n为截取长度(省略为任何)

::举个栗子

::@echo off

::set a=bbs.verybat.cn

::set var=%a:~1,2%

::echo %var%

::pause

::试行结果bs这是怎么吗?偏移=1也就说重第多个b开首,显示数量=2就b后边展现2个字符串
  那么履行结果就是bs

::

::

::::@echo off

::set a=bbs.verybat.cn

::set var=%a:~-3%

::echo %var%

::pause

::实行结果为.cn这几个类比的例子作者就没有必要再强调那样多,不懂面壁去

::

::

::::::::::::::::::华丽的分水岭:::::::::::::::

::

::

::把bat用注册表的艺术参预运营项

::reg add HKCU\Software\Microsoft\Windows\CurrentVersion\Run /v
runbat /t REG_SZ /d f:\a.bat /f

::这里再补充一下nul的用法

::

::>nul屏蔽命令的出口内容

::2>nul疲敝错误内容

::1>nul禁绝输出精确音讯

::

::::::::::::::::::::::::::::::::::::::清ie缓存:::::::::::::::::::::

::  RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 8

::清除Cookies

::  RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 2

::死灭历史记录

::  RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 1

::消逝表单数据

::  RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 16

::湮灭密码

::    RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 255

::驱除上述全部项目

::  RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 4351

::消亡上述全部系列,以致IE7中应用的加载项所保存的各类数据

::

::

:::::::::::::::::::::::::::::::::::::::::::::for语句里用屏蔽:::::::::::

::网民比如

::倘诺copy三个子虚乌有的文本aaa.test,用copy c:\aaa.test d:\sddd
1>nul
2>nul就能够屏蔽掉运维的失实结果“找不到文件”,你将看不到任何报错.

::但是借使把相仿的一声令下运用到FO汉兰达语句中就糟糕使了,比方:

::for /f %i in (‘dir c:\*.txt /b’) do copy c:\%i d:\sddd_%i
1>nul 2>nul

::结果总是会报错说“找不到文件”。

::偶想问大虾们如何技能在FOTucson句中也屏蔽掉错误啊???

::上边写法能够完善逃匿

::for /f %%i in (‘dir c:\*.txt /b  2^>nul’) do copy c:\%%i
d:\sddd_%%i 2>nul 1>nul

::

::

::

::::::::::::::::::华丽的分界线::::::::::::::::::

::批管理比较数值大小lss equ gtr的用法

::举个渠道

::@echo?off?

::set?/p?第四个数=请输入第多少个数?set?/p?第二个数=请输入第叁个数?

::if?%次之个数%?lss?%先是个数%?goto?hero?

::if?%次之个数%?equ?%第1个数%?goto?her?

::if?%次之个数%?gtr?%首个数%?goto?he?

::

::

::::::::::::::变量延迟::::::::::::::::::::::::::::::::::

::举个栗子

::@echo off

::setlocal enabledelayedexpansion

::echo ^^!

::pause

::因为启用了变量延迟  所以输出结果为!   未有启用变量延迟输出^!

::变量延迟常常在复合语句中用的可比多

::@echo off

::for /l %%i in (1 1 10) do (

::    set var=%%i

::    echo %var%

::)

::pause

::运转方面包车型大巴代码,展现怎么?彰显13个echo处于关闭状态。

::根据逻辑,var的值应该依次是1、2、3……..10才对呀!

::这正是因为从没开启
延迟变量的缘由,cmd把var的值当作复合语句此前的值来援用,复合语句:黄金时代对括号里(
卡塔尔国的享有命令是复合语句;通过管道命令&、&&、|、||连接起来的指令也是复合语句。,

::而在本例中,复合语句以前并不曾给var定义,所以var的值是空的,所以博览会示17个echo处于关

::通俗来讲 便是批管理他妈的指认行,不认命令数量
()里的下令只当作意气风发行来管理  所以

::echo %var%行使的是var那些一向没概念过的变量    懂??
  那都不懂你就没要求往下看了

::使用了“setlocal enabledelayedexpansion”后,如果在复合语
句之外援用变量,则使用%var%或!var!都以能够的。

::若想在复合 语句中引用复合语句即时得到的变量,则必得运用!var!。

::假使在复合
语句中依旧使用%var%变量,那么拿到的变量将是复合语句以前var的值,

::那个时候只要var在复合语句早先未曾定义,那么值为空值

::

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

::

::比如set /p=wind

::>nul是遮挡命令的出口内容

::比如pause >nul

::还会有叁个2>nul

::也是挡住的功能,不过是遮挡错误的内容

::比如

::del wind 2>nul

::固然未有wind文件,也不会有提示

::

::

::管道命令用法

&连接符,命令格式[…] command1 &
command2用来分隔三个命令行中的多少个指令。Cmd.exe运转第一个指令,然后运维首个指令。

如:

@echo第二个指令&@echo第三个指令

&&代表上一句施行成功,命令格式[…] command1 &&
command2唯有在符号&&前面包车型大巴吩咐成功时,才用于运营该符号前面包车型的士下令。Cmd.exe

运行第三个指令,然后独有在率先个指令运营成功时才运转第叁个指令。

如:

@echo测试>>测试.txt&&@echo
*********测验.txt写入成功********

||代表上一句实行停业,命令格式[…] command1 ||
command2唯有在符号||前边的吩咐失利时,才用于运转标识||前面包车型大巴下令。

Cmd.exe运转第叁个指令,然后只有在首先个指令未能运维

如:

dir *.pdf||echo
*************并未有找到pdf文件**************

|管道符,那么些命令的职能不等同了,正是让前一命令的出口当做后一命令的输入,正是说后边命令的结果作为二个参数字传送递给末端命令管理

如:

help|more

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

::@echo off

::title圆周率总计程序

::echo按大肆键先导计算&
pause>nul那么些规划的正确性,能够按任性键实行下一步(做个个暂停管理)

::echo总括扩充中,进程请看标题栏…

::set i=0

:::loop

::if %i% lss 10000 (

::set /a i+=1

::title圆周率总计程序   当前划算到第%i%位

::这里是为着更分明点见到呈现的坚决守住,所以增多叁个日子推移。

::ping /n 1 127.1>nul

::goto :loop

::)

::Pause

::

::

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

::mod设置cmd的窗口大小

::语法格式:mode con cols=113 lines=15    113列宽15列是高

::

::

::::::::::::::::::::轻巧门船演说一下goto和call的区分::::::::::::::::

::1、书写格式,goto前边的价签前能够有冒号也足以未有冒号,call后边标签前必需求有冒号。

::2、goto跳转到目的程序段后,就相继试行下去,直到程序实行完成。call跳转到目的程序段后,会将目的程序实践完,然后再次回到call原本的地点,然后继续实施下去。

::大家在同三个文书夹下,有a.bat和b.bat四个批管理文件,

::a.bat里面包车型客车代码为:

::@echo off

::set /p var=请选择(Y/N):

::if /i “%var%”==”Y” call b.bat

::echo a.bat执行实现。

::pause >nul

::b.bat里面包车型地铁代码为:

::@echo off

::echo Hello World!

::start explorer.exe

::echo b.bat实行完成。

::pause >nul

::我们双击执行a.bat,实施结果如下 请选择(Y/NState of Qatar:Y Hello World!
b.bat实践实现。a.bat实践达成。

::况兼,计算机实在展开explorer后才展现a.bat试行达成的。

::@echo off

::set var=123

::call :loop

::pause>nul & goto :eof

:::loop

::set /a var+=1

::echo var=%var%

::pause>nul

::假诺下面程序未有goto :eof退出语句,那么程序会彰显一遍数据,

::一次是124,一次是125

::

::call带参数的情景

::例一

::@echo off

::call :an hello世界!

:::an

::echo %1

::echo %2

::pause>nul

::输出为:

::hello

::世界!           (%1代表第二个参数,%2代表首个参数)

::注意的是  主程序里,不可用%1~%9的样式调用子程序参数

::

::@echo off

::set sum=0

::call :sub sum 10 20 35

::echo数据求和结果: %sum%

::pause>nul

::goto :eof :sub

::set /a %1=%1+%2

::shift /2

::if not “%2″==”” goto sub

::程序输出为65。

::解释一下shtift /2该命令是从第n个参数伊始活动,n介于0~8之间

::shift /2会将%3移动到%2,将%4移位到%3,但并不影响%0和%1.

::其它注意的是set命令分裂意set /a
%1=%2+%3这种将数值直接赋值到参数的测算(set /a 3=4+5均等不容许)

::::::::::::::::::::start::::::::::::::::::::::::::::

::

::@echo off

::start D:\Tencent\QQ\Bin\QQ.exe

::start C:\批管理教程.txt

::::打开E盘

::start E:

::exit

::上边程序会按顺序依次施行展开Tencent软件–>展开《批管理教程》–>展开E盘,达成后批管理公事自动自己关闭。

::注:由于DOS命令对于调用外界程序的预先等级分裂,.exe能够省
略,但.txt就无法差比非常少了。

::这里提倡不要区分要不要写,统大器晚成将后 全写上的杰出作风,确定保证程序百无一失

::

::

::

:::::::::::::::::::::::::::::::::errorlevel::::::::::::::::::::::::::::::::::::::::::

::if
errorlevel这一个句子必得放在某叁个命令前面,施行完该命令后才有它推断命令的再次来到值

::比相当多少人觉着errorlevel里,成作用0表示,失败用1表示,实际上,errorlevel的值能够是0~255中的率性叁个数值。看下边包车型大巴例子就明白了(若是我们的微电脑未有Z盘):

::程序例子:

::@echo off

::dir c:

::if errorlevel 1 goto 1

::if errorlevel 0 goto 0

::exit :0

::echo命令试行成功!

::goto exit

:::1

::echo命令实施破产!

::goto exit

:::exit

::pause

::但若是dir Z:根本就从未z盘 那么上述代码呈现意况全为成功,
 就就是为啥无法一定说再次回到值为1就是没戏的来由了

::

::

::

:::::::::::::::::::::::::::::::if:::::::::::::::::::

::使用if else else必需和if在同生机勃勃行

::@echo off

::set /p word=请输入贰个字母:word后边无法有空格 不然会赋值战败

::if /i “%word%” == “a” (echo a) else (

::if /i “%word%” == “b” (echo b) else echo not A an not B

::)

::pause

::注意:else前面料定要跟二个左括号,提醒程序后边内容是含有在else里面包车型地铁,不然左括号放到下风流浪漫行先后头,程序就出错了

::注意,if的口径前面鲜明要紧跟二个空格!

::if 2 neq 3(

:: echo Hello!

:: echo world!

:: )

::if 2 neq 3 (

:: echo Hello!

:: echo world!

::)

::这是三种写法,初读书人大器晚成大意就写成地点写法,

::在标准2 neq 3前面 未有空格,招致程序语法错误,

::何况因为是括号的原故,还愣是查不 出原因!第三种写法才准确,切记切记

::

::

::::::::::::::::::::::::::%random%收获随机数::::::::::::::::

::

::@echo off

::setlocal enabledelayedexpansion

::for /l %%i in (1,1,10) do echo !random!

::pause

::因为用了变量延迟,所以能够获得是个不相同的恣意数

::如若我们要发生钦定区间的专断数,能够用这种格式:%random%%%(max-min+1State of Qatar+min爆发[min,max]间距里的随机数,

::注:批管理中求模得用八个%%符 号

::程序例子,拿到1到10以内的轻巧数字:

::@echo off

::set /a num=%random%%%10+1

::echo %num%

::pause

::在此,表达式%random%的%符号不再是开玩笑的了

::@REM产生10个[4,12]间的随机数

::@echo off

::REM启用延迟意况变量扩展

::setlocal enabledelayedexpansion

::REM设置随机数的纤维和最大值甚至求模用的变量

::set min=4

::set max=12

::set /a mod=!max!-!min!+1

::for /l %%i in (1,1,10) do (

::REM产生[min,max]时期的专擅数

::set /a r=!random!%%!mod!+!min!

::echo.

::echo随机数%%i:!r!

::)

::pause>nul

::

::上边包车型地铁例证老夫又省事了瞬间

::@echo off

::setlocal enabledelayedexpansion

::for /l %%i in (1,1,4) do (

::set /a r=!random!%%10+1

::echo.

::echo随机数%%i:!r!

::)

::pause

::

::下边输出结果的突显形式不是很好,生机勃勃行只输出二个指,想要把这个数全展现在相近行,我又加工了朝气蓬勃晃代码

@echo off

setlocal enabledelayedexpansion

echo翠绿球号码是:

for /l %%i in (1,1,6) do (

set /a r=!random!%%36+1

set /p =!r!nul

)

echo .

echo紫水晶色球号码是:

set /a b=%random%%%36+1

ping /n 2 127.0.0.1>nul & set /p =!b!

pause>nul

::这个set /p =提示语

::

::::::::::::::::实时显示时间:::::::::::::::::::::::::::::

::@echo off

::time收取时间值,-3表示不出示后四位字符。那些格式只体现时间的时、分、秒。

::echo %time:~0,-3%

::ping -n 2 127.1>nul&cls&%0

::pause

::

::

::

:::::::::::::::::::::::::::for:::::::::::::::::::::

::标准格式FOAMG GT [-d | -l | -r | -f] %%variable IN (set) DO command
[command-parameters]

::for也得以未有其余按键for %%i in (*卡塔尔(قطر‎ do echo
%%i那条命令的变量%%i取值*,并不是取具体值,那么这里就有特别的含义:表示展现当前目录下,全部非文件夹的文书名字。 (包 括.rar  .jpg
 .exe  .bat  .sys等等全数非文件夹)

::for /d %%variable in (set) do command
[command-parameters]搜索set(能够包涵通配符*和?)里的公文夹后施行钦点的Command。用于目录寻找,不会招来文件。

::通配符*和?的区别:*意味着任性n个字符,用三个*标识就够了。而?表示大肆三个字符,
须要表达“十分少于k个字符的文件夹”,就写上k个?,大肆六个中 文都算0个字符。

::举个例子:???四个问号,不仅意味着有多个假名的公文夹,还包蕴贰个字母的公文夹和八个字母的文件夹,全部那几个都会被搜寻出来。

::*********留心/d只能展现文件夹名字,不能突显文件名字

::@echo off

::for /d %%i in (C:\”program files”*) do echo %%i

::pause

::运维结果将C:\program files里面的有着文件夹都来得出来了。

::注意, 因为“program files”含有空格,所以必得用双引号,不然出错。

::简单的说/d的言辞是没个卵用的,但为了是新手们都能读书到,就啰嗦了一下

::

::下边讲明一下/r能够把当下要么您钦赐路径下的公文名字全体读取,注意是文件名
字。

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

::@echo off

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

::pause

::把c盘下的exe文件都列出来了

::

::/L

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

::注意:在循环里,我们不可能改变循环变量的值

::举个谬误的事例援救菜鸟们精通一下

::@echo off

::setlocal enabledelayedexpansion

::for /l %%i in (1,1,10) do (

::                           set %%i+=10

::                          echo %%i

:: )

::pause

::上边程序实践出错

::

::

::/F

::FOR /F [“options”] %%variable IN (file-set) DO command
[command-parameters]

::文件名file-set不用引号(即使文件名含有空格时,就须求依附usebackq了)

::FOR /F [“options”] %%variable IN (“string”) DO command
[command-parameters]

::字符串string要用双引号

::FOR /F [“options”] %%variable IN (‘command’) DO command
[command-parameters]

::命令command要用单引号

::注意:带引号的字符串”options”包罗二个或多个钦命分裂分析选项
的关键字:eol=c、skip=n、delims=xxx、tokens=x,y,m-n、usebackq。

::eol=c忽视全体以C开首的行

::@echo off

::for /f “eol=举” %%i in (D:\静夜思.txt) do echo %%i

::pause >nul

::输出结果为::

::床前月球光,

::疑是地上霜;

::低头思故乡

::

::要注意的是eol=call格式不能够挡住以空格伊始的行,想屏蔽空格能够”eol=”就能够了

::

::skip=n忽视前N行的内容(N无法等于),必得大于0)

::

:::delims=XXX(XXX是背定义的标识,该符号在文书中设有,将作为分隔符)

::FOR /F “Delims=符号” %%I   IN (Command1)   DO Command2

::”delims=”,没指明什么符号作为分隔符,那么程序将以为文件没有分隔符,全体故事情节都会被突显

::对usebackq计算:usebackq能够认为仅仅用于当路线或文件名有空格时的图景。

::格式:for /f  “usebackq” %%i (“C:\program files\temp.txt”) do echo
%%i

::Computer会以为“C:\program files\temp.txt”是七个文
件的总体路线,对该路径的公文进行操作。

::以往都增多这一个”delims=”上边代码里,有三个”delims=”,它的坚决守护是不怕文本满含空格,也
能够显得全部内容

::

::

::

::

::

::for实际行使样例(/f的运用不列出来):

::for %%i in (*) do echo %%i

::展现当前目录下,全部非文件夹的文书名字。(包 括.rar .jpg .exe .bat
.sys等等全体非文件夹)

::for %%i in (*.*) do echo %%i

::搜索当前目录下的保有文件。

::for /d %%i in (*) do echo %%i

::搜索当前路径下具有文件夹的名字。

::for /d %%i in (C:\abc\”ef gh”*) do echo %%i

::寻找C盘abc文件夹里ef gh文件夹里面包车型客车持有文件的名字。

::for /d %%i in (C:\”program files”\????) do echo %%i

::搜索C盘program files文件夹里,文件夹名叫1~4个字符的保有文件夹。

::for /d %%i in (win??????????) do @echo %%i

::找出当前路径下以win起头,后边名字相当少于12个字符的富有文件夹。

::for /d %%i in (C:\”program files”\win*) do echo %%i

::搜索C:\program files文件夹里,全体以win早前的文件夹。

::for /d  %%i in (C:\windows\w???) do echo %%i

::搜索C:\windows全数以w初始,名字不超越4个字符的文件夹。

::for /d  %%i in (C:\windows\wbem) do echo %%i

::这种找出就没多大要思了,Computer在C:\windows搜索到wbem就显
示:C:\windows\wbem,不然不出示。

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

::寻觅C盘下满含子目录的全部exe文件。

::for /r %%i in (*.txt) do @echo %%i

::搜索当前路径目录树(当前剧本所处的不二秘诀)的全数txt文件。

::for /r C:\”program files” %%i in (????.txt) do echo %%i

::搜索C:\program files目录树的所盛名字非常少于4个字符的txt文件。

::for /r C:\windows %%i in (*) do echo %%i

::搜索C:\windows目录树的富有文件。

::for /r C:\”program files” %%i in (*.???) do echo %%i

::搜索C:\program files目录树下有所扩大名不超过3个字符的有所文件。

::for /r C:\windows %%i in (???.??) do echo %%i

::搜索C:\windows目录树下有所文件名不超过3个字符並且扩大名不
当先2个字符的文件。

::for /r C:\”program files” %%i in (???.*) do echo %%i

::搜索C:\program files目录树下文件名不超越3个字符的享有格式文件。

::for /r C:\ %%i in (win*) do echo %%i

::搜索C盘全数文件名以win领头的公文。

::for /r C:\ %%i in (win*.e??) do echo %%i

::搜索C盘全部文件名以win发轫,而且扩张名称为e开始且不超越3个字符的全部文件。

::for /r C:\ %%i in (boot.ini) do if exist %%i echo %%i

::找寻整个C盘,寻觅boot.ini文件。

::这是搜索具体文件名的例子,我们一定要记得用exist判别文件是不是存在,存在才输出,不然全数C盘的文书都会被输出。

::for /r C:\windows %%i in (.) do echo %%i

::枚举C:\windows目录树的具备文件。

::for /l %%i in (1,1,100) echo %%i

::循环玖15回,而且输出从1到100的总是数字。

::for /l %%i in (100,-2,0) echo %%i

::循环四十五遍,况兼输出从100到0的连天偶数。

::@echo off

::set str=c d e f g h i j k l m n o p q r s t u v w x y z

::echo当前硬盘的分区有:

::for %%i in (%str%) do if exist %%i: echo %%i:

::pause

::这段代码能检查评定硬盘都有啥样分区,蕴涵U盘和移动硬盘的分区,
可是,当光驱中有盘的时候,也会被列出来,那是一个不满

::

::

::借使有括号包含set /a总结表明式,表明式也是有括号,那么表明式的
括号必得用转义字符,不然会显得括号不成对:

::@echo off

::setlocal enabledelayedexpansion for /l %%i in (1,1,10) do (

::                                              set /a var=(%%i+1^)*2

::echo !var!

::)

::pasue

::注意到上边set /a var=(%%i+1^卡塔尔*2括号有三个转义字符。

::::::::::::::::查注册表钦定数量:::::::::::::::::::::::

::有bug分外代码,若路线中有空格,则会进行倒闭如:F:\Program
Files\TGP\BlueStacks_tc_dt1\ProgramFiles\   Program
Files中存在空格,得到的门路指是F;\Program

::@echo off

::set key_path=”HKEY_LOCAL_MACHINE\SOFTWARE\BlueStacks_tc_dt”

::for /f “tokens=3” %%i in (‘reg query %key_path% /v InstallDir’) do
set str=%%i

::set Hd-log_path=%str%HD-logCollector.exe

::%Hd-log_path% -d

:::a

::if exit “C:\Users\kai\Desktop\BlueStacks-Support.zip” goto b

::if not exit “C:\Users\kai\Desktop\BlueStacks-Support.zip” goto
a再次强调一遍exist才是存在的乐趣!!!!!!Exit是退出!!!!!!!
别他妈犯这么低等的错误

:::b

::echo日志已在桌不熟识成,谢谢使用

::pause >nul

::准确写法:
为啥呢??Delims=不写,则暗许空格分段,假诺用tokens=3那么F:\Program后有空格,则第三段就只是F:\Program但拉长tokens=3,4就可以把门路展现出来了,但背后还应该有空格的话(也不可能突显完整)

::@echo off

set key_path=”HKEY_LOCAL_MACHINE\SOFTWARE\BlueStacks_tc_dt”

for /f “tokens=2,*” %%i in (‘reg query %key_path% /v InstallDir’) do (

set str=%%j

)

set
Hd-log_path=”%str%HD-logCollector.exe”那几个也要在乎一下,要用双引号括起来!!

%Hd-log_path% -d

pause >nul

::

::这里补充for语句详细解释

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

1、for、in和do是for语句的爱惜字,它们三个供给;

2、%%I是for语句中对方式变量的援引,纵然它在do后的说话中从未参预语句的推行,也是必得现身的;

3、in之后,do从前的括号无法大致;

4、command1表示字符串或变量,command2表示字符串、变量或指令语句;

1、for语句的格局变量I,能够换到28个假名中的任性二个,那些字母会区分轻重缓急写,也正是说,%%I和%%i会被感觉不是同一个变量;形式变量I还足以换到别的的字符,然则,为了不与批处理中的%0~%9那十五个花样变量发生冲突,请不要随便把%%I替换为%%0~%%9中的自便一个;

2、in和do之间的command1表示的字符串或变量能够是贰个,也得以是多少个,每几个字符串或变量,大家称为二个成分,每一种成分之间,用空格键、跳格键、逗号、分号或等号分隔;

3、for语句依次提取command1中的每三个成分,把它的值授予方式变量I,带到do后的command2中加入命令的实施;何况每一回只领到三个要素,然后实行一回do后的下令语句,而任由这么些成分是不是被带到command第22中学插手了command2的运作;当实施完一次do后的讲话之后,再领取command1中的下二个因素,再举办三次command2,如此循环,直到command1中的全数因素都曾经被提取完成,该for语句才公布实行完毕;

个中,第3点是特别重大的,它陈说了for语句的举行进度,是for语句的精华所在,大家应当要铭记这一条,技巧深切理解更为复杂的for流程。

2、无论for语句做何种变化,它的推行进度如故依据基本的for流程:依次拍卖每种成分,直到全数的要素都被拍卖终结。只不过在for
/f语句中,这里的成分是指文件中的每风华正茂行,也便是说,for
/f语句是以行为单位管理公事文件的。这是一条极为首要的条条框框,在上后生可畏章中也重申过它的基本点,希望在接下去的就学进程中,你能时刻牢牢记住这一条件,那么,比超多难题将会缓和

阐明这一个说法的代码也很简短

@echo off

for /f %%i in (test.txt) do echo %%i&pause

Pause

研究把,是或不是历次都只体现黄金时代行呢。

事例文本内容如下

Code1

论坛的对象是:不求最大,但求最佳,做最实用的批管理论坛。

论坛地址:bbs.bathome.net。

此处是:新手进级的乐园,高手论剑的净土。

切分字符串的利器:delims=

@echo off

for /f “delims=,” %%i in (test.txt) do echo %%i

Pause

地点code1的文本会产生:

论坛的靶子是:不求最大

论坛地址:bbs.bathome.net。

那边是:新手晋级的福地

请按任意键继续…

假诺”delims=,.”(符号列表做解释)那么输出结果将是

论坛的靶子是:不求最大

论坛地址:bbs

此间是:新手进级的世外桃源

请按自便键继续…

在那间,大家引进了一个新的开关:”delims=,”,它的意思是:以逗号作为被拍卖的字符串的相间符号。

在批管理中,钦命分隔符号的法子是:增加叁个形如”delims=符号列表”的开关,那样,被拍卖的每行字符串都会被标志列表中列项支出出来的标志切分开来。(为何是符号列表上边做了表达)

亟待在意的是:若无一点名”delims=符号列表”那些开关,那么,for
/f语句私下认可以空格键或跳格键作为分隔符号。

逐行读取test.txt中的内容,以点号和逗号切分每意气风发行的内容(荒诞不经点号和逗号的行,则不再切分,为了描述的福利,大家把被点号或逗号切分的贰个一个的字符串片段,称之为节),然后,for
/f会提取第后生可畏节的剧情作为最终结果,呈现在荧屏上。必要专一的是,在这里间,全数行的字符串被切分成了多少个以上的节,可是,[code7]的代码只会提取第风流洒脱节字符串的内容,因为for
/f语句暗许只领到第大器晚成节的符串。

::

::定点提取tokens=

::文本txt内容如下

::各有所短,寸长尺短,学好批管理没钻探,考虑难点复杂化,解决难点简洁化。

::代码

@echo off

for /f “delims=,tokens=2,5” %%i in (test.txt) do echo %%i

Pause

运维开掘只突显2的多少,5的多寡确提取不到

解释:

倘若tokens=前面内定了五个数字,假使情势变量为%%i,那么,第八个数字代表的剧情用第一个花样变量%%i来接过,第一个数字代表的内容用第3个格局变量%%j来接纳,第多个数字代表的剧情用第2个格局变量%%k来选拔……第N个数字代表的原委用第N个花样变量来采纳,在那之中,格局变量固守字母的排序,第N个方式变量具体是什么样符号,由第贰个花样变量来支配:借使第叁个方式变量是%%i,那么,第1个花样变量正是%%j;假若第二个形式变量用的是%%x,那么,第四个花样变量正是%%y。

因此代码改成那样就消逝了

@echo off

for /f “delims=,tokens=2,5” %%i in (test.txt) do echo %%i %%j

Pause

比方表达*号

@echo off

for /f “delims=,tokens=1,*” %%i in (test.txt) do echo %%i %%j

Pause

结果,第叁个逗号不见了,代替它的是一个空格符号,其他部分保持不改变。

运维结果:各有所短尺短寸长,学好批管理没切磋,酌量难题复杂化,撤废难点简洁化。

中间奥密就在此个星号上面。

tokens=前边所接的星号具有那样的意义:字符串从左往右被切分成紧跟在*事情未发生前的数值所表示的节数之后,字符串的其他部分保持不改变,全体被*所代表的二个变量接纳。

::::::::::::::::::::::::::::::::::::::::::::::读取数据某列

::举例读取abc.txt的率先行,记作变量a

::然后读取第2行,记作变量b

::代码如下:

::@echo off

::set/p  n=要第几行:

::set/a n-=1

::if “%n%”==”0” (set “skip=”) else (set “skip=skip=%n%”)

::for /f “%skip% tokens=* delims=”  %%i in (abc.txt) do (

::set a=%%i&&goto:a)

:::a

::echo内容是:%a%

::pause

::

::@echo off & setlocal enabledelayedexpansion

::for /f “skip=7 tokens=4 delims= ” %%a in (‘dir /ad /o-d “E:\ffff”‘)
do (

::set b=%%a&&goto:a (那个很要紧,不通晓为什必须要。State of Qatar

::)

:::a

::echo %b%>6.txt

::pause

::加上xcopy /c /s D:\DRIVERS网卡\*
 e:\ffff\%b%就能够落成晋级,柔性晋级要替换的公文的啊!!!!

::

::

::

::skiP7解释如下   掌握一下就可以了。。

::

::驱动器E中的卷是 影视

::卷的体系号是0008-4976

:: E:\ffff的目录

::

::2016/02/02  20:31              ..

::2016/02/02  20:31              .

::2016/02/02  20:31              TGP3

::2016/02/02  20:31              TGP2

::2016/02/02  20:31              TGP1

::2016/02/02  20:31              TGP

::               0个文件0字节

::               6个目录128,309,465,088可用字节

::

::

::

::::find前面日常都要加个转义字符::::老夫也不知晓为何::::::

::只怕找出abc.txt中以a=伊始的行,把等号后的剧情记为变量a

::这样的通令要怎么写?

::代码如下

::@echo off

::for /f “tokens=1,* delims==”  %%a in (‘find “a=”^

::set a=%%b&&goto:a)

:::a

::echo a=%a%

::pause

::

:::::::::::::::::::::::::::::::::显示代码施行时长::::::::::::::::::::::

::@echo off

::set t=%time%

::上边放你的代码

::set t1=%time%

::if “%t1:~,2%” lss “%t:~,2%” set “add=+24”

::set /a
“times=(%t1:~,2%-%t:~,2%%add%)*360000+(1%t1:~3,2%%%100-1%t:~3,2%%%100)*6000+(1%t1:~6,2%%%100-1%t:~6,2%%%100)*100+(1%t1:~-2%%%100-1%t:~-2%%%100)”
,”ss=(times/100)%%60″,”mm=(times/6000)%%60″,”hh=times/360000″,”ms=times%%100″

::echo本次批管理运转时刻为%hh%:%mm%:%ss%:%ms%

::pause>nul

::

::

::::::::::::::::::::::::::::::::非常不利的沙漏脚本:::::::::::::::::::::::::::::

::

::

::title计时器

::: start

::echo能够输入具体日子,如“08:00”“20:00”

::echo也能够输入倒计时,在最终踏入“h”表示时,或“m”表示分

::set /p want=请输入……

::if %want:~-1% == h goto h

::if %want:~-1% == m goto m

::set nowh=%time:~0,2%

::set nowm=%time:~3,2%

::set nows=%time:~6,2%

::set wanth=%want:~0,2%

::set wantm=%want:~3,2%

::set /a daojishi=(%wanth%-%nowh%)*3600+(%wantm%-%nowm%)*60-%nows%

::::计算和以往的小运差

::goto daojishi

::: h

::set /a daojishi=3600*%want:~0,-1%

::::总结和现行反革命的时辰差

::goto daojishi

::: m

::set /a daojishi=60*%want:~0,-1%

::::总结和几近年来的时日差

::: daojishi

::echo倒计时%daojishi%秒

::ping /n  %daojishi% 127.0.0.1 >nul

::::暂停

::echo msgbox “%want%已经到了!”,,”放大计时器” >tishi.vbs

::::调用vbs呈现对话框

::start tishi.vbs

::ping /n 2 127.0.0.1 >nul

::del tishi.vbs /q

::goto start

::

::

::

::::::::::::::::::::::::::::::::::弹窗脚本:::::::::::::::

::@echo off

::echo msgbox “已经到了”,vbYesNoCancel,”反应计时器” >tishi.vbs

::start tishi.vbs

::pause >nul

::语法基本是echo msgbox “内容”,,”标题” >XX.vbs

::来详细拆分一下:其中”已经到了!”是提醒框的剧情vbYesNoCancel是选用语法
 沙漏是弹窗标题

::下边是补充

::@echo off

::set b=

::echo Wsh.Echo MsgBox (“测验提醒框之十八”,vbYesNoCancel,”选取”State of Qatar>tmp.vbs

::for /f %%a in (‘cscript tmp.vbs //nologo //e:vbscript’) do set “b=%%a”

::if %b%==6 goto Yes

::if %b%==7 goto No

::if %b%==2 goto Cancel

::del /q tmp.vbs

::exit

:::Yes

::echo你选取了“是”

::echo.

::pause>nul

::goto end

:::No

::echo你挑选了“否”

::echo.

::pause>nul

::goto end

:::Cancel

::echo你筛选了“撤废”

::echo.

::pause>nul

::goto end

:::end

::del /q tmp.vbs

::exit

::[/code]

::经测验种种按扭的应和的数值如下:

::[code]

::OK(确定)=1

::Cancel(取消)=2

::Abort(终止)=3

::Retry(重试)=4

::Ignore(忽略)=5

::Yes(是)=6

::No(否)=7

::

:::::::::::::::::::::::::::设置延时得以用timeout:::::::::::::::::

::TIMEOUT [/T] timeout [/NOBREAK]   timeout /t 2 >nul

::描述:

::那么些工具接纳超时参数,等候意气风发段钦赐的小时(秒卡塔尔或等按任性键。它还收受

::贰个参数,忽略按钮。

::参数列表:

::    /T        timeout钦赐等候的秒数。有效约束从-1到99999秒。

::    /NOBREAK忽视按钮并等待钦点的时间。

::    /?展现此扶持信息。

::注意:超时值-1象征Infiniti制时间地等候开关。

::

::生龙活虎段风趣的代码,临时间好好驾驭一下

@echo off&mode con cols=42 lines=20&color 02

setlocal enabledelayedexpansion

set code=123456789abcdef

set m=1&set v=1

title骇客帝国数码雨by bat-zw一九七一0516

:begin

set /a a=%random%%%2,b=%random%%%3

if %b% neq 0 (set b=%a%) else (set “b= “)

set str=%str%%b%

set /a n+=1

if %n% lss 40 goto begin

set /a m+=1,x+=1

if %m% geq 20 set /a v+=1

set str%m%=%str%

cls&for /l %%i in (%m%,-1,%v%) do echo.!str%%i!

if %x% equ 20 call :lp

set str=&set n=0

goto begin

:lp

set /a a=%random%%%15,x=0

set a=!code:~%a%,1!

color 0%a%

解释一下:

set/a “cup=%random%%%3+1”

%random%是一个5位数随机数,%random%%%3便是取其除以3的余数,结果为(0,1,2),再加1就是(1,2,3)

于是整句话的乐趣正是将变量cup的值设置为二个1-3的人身自由整数。

@echo off & setlocal enabledelayedexpansion

for /l %%i in (1 1 300) do (

set var=%%i

if /i “%var%”==”60” (goto :eof) else (tasklist | find “进程名” >nul
&& taskkill /f /im进程名

ping /n 2 127.0.0.1>nul

)

)

Pause

收获软件的设置路线

@echo off & setlocal enabledelayedexpansion

for /f “delims=” %%i in (‘find /i “:” %1 ^| findstr /i “^[a-z]:”‘) do
echo %%i

Pause

大神所给的指令!!!!唉 用的不懂行啊!!

@Echo off

for /f “delims=” %%i in (‘find /i “:” %1 ^| findstr /i “^[a-z]:”‘) do
echo %%~dpi

pause>nul

能一贯进去安装目录了

@Echo off & setlocal enabledelayedexpansion

for /f “delims=” %%i in (‘find /i “:” %1 ^| findstr /i “^[a-z]:”‘) do
 start %%~dpi

pause>nul

call set R2=%%R0:~%R1%,1%%

或者

setlocal enabledelayedexpansion

set R2=!R0:~%R1%,1!

进展文化:

在Windows系统中,我们恐怕见到将二个文本拖放到一个应用程序上,则能够动用当前应用程序打开当前文件的情事,那么在批管理中好糟糕达成呢?答案是迟早的。来解析一下,该怎么贯彻?若是要开采多少个文件一定要钦点该公文的门路地址手艺开发,接下去的为题正是什么样在批管理中获得拖放进来的文书地点。来看下边包车型客车例子:

1

2

3

4@echooff

set/pinPath=请输入或拖放目录和文件…

echo你输入的路径为:%inPath%

pause

这段代码中“inPath”变量用于获取客户输入的音信,能够输入,雷同能够直接将目的目录或文件拖进当前分解器命令行,则足以立时赢稳当前文件或目录的地点。能够视作那是意气风发种拿到情势,然则这种拖放格局必必要在开荒批管理推行解释器的意况下才得以应用。上边来看另风华正茂种艺术,通过参数获取情势,先看例子:

1

2

3

4@echooff

echo当前实行顺序:%0

echo拖拽的文书或目录:%1

pause

将这段代码保存为批管理公事,然后将随便二个文件或目录拖放到当前批管理文件上,看看效果。惊讶的是足以看看,“%1”那几个变量参数输入的音讯正是大家想要的指标文件或目录的通通路线,而“%0”依旧当下文件完全路线。上边介绍了“%0”表示的是当前实施顺序本身完全路线,而这里的“%1”用于表示指标文件或目录的通通路线地址,那是变量参数的必要小心的另多少个特点,“%1”在有个别特殊的景况下技能发挥这种援用效果。

计算一下,在批管理脚本中的“%0”表示前段时间批管理程序本人的通通路线名,“%1”—“%9”表示对命令参数的征引,而这么些参数应用最无动于衷的正是“call”命令。须求注意的是“%1”在一些特殊情形下有另风度翩翩种功用正是表示要实践的目的程序的一丝一毫路径,而这种用法多数是在拖拽文件的时候利用。

方法一:

寻觅钦定文件

@echo off

rem钦定待寻找的文书

set “FileName=BatHome_Batcher.txt”

echo正在探寻,请稍候…

for %%a in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (

if exist %%a:\ (

for /f “delims=” %%b in (‘dir /a-d /s /b “%%a:\*%FileName%”
2^>nul’) do (

if /i “%%~nxb” equ “%FileName%” (

echo,%%b

)

)

)

)

Pause

方法二:

@echo off

rem内定待搜索的文书

set “FileName=BatHome_Batcher.txt”

echo正在探求,请稍候…

for %%a in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (

if exist %%a:\ (

for /f “delims=” %%b in (‘where /r %%a: “%FileName%” 2^>nul’) do (

if /i “%%~nxb” equ “%FileName%” (

echo,%%b

)

)

)

)

pause

看思路:

展开软件A—ping网站或然IP,ping值优良小于200ms继续ping,若超越那么些值或许掉包一连3次,立时重启软件A,重启软件A继续ping以上动作重复

@echo off

:a

start “” A.exe

:b

ping baidu.com>ping$

type ping$|find “TTL”||goto kill

for /f “tokens=6 delims==ms ” %%a in (‘find “平均” ping$’) do if %%a gtr 150 goto kill

goto b

:kill

taskkill /f /im “A.exe”>nul

goto a

:用echo来作为参数 :

@echo off

set /p var=

echo %var%|findstr /be [0-9.]* >nul && echo Yes||echo No

pause

那边的echo %var%不用于呈现效果, ,而用作参数功用。因为纯粹的

%var%不得以被施行, ,我们又找不到适当的指令来作为%var%的开

头 ,所以接受echo。前面包车型的士“>nul ”,是因为我们只须求参数功效就

能够了 ,无需其出示效果 ,所以用“>nul ”阻止音讯展现。其他的

部分亟待带参数的命令, ,也足以参谋这么些用法

在DOS中剔除目录需求使用“md”命令,个中提供“/s”选项用于删除目录树布局,“/q”选项表示沉默删除,可是使用“md”命令的界定是必需是空的目录,也正是目录中不可能有文件,全数删除目录在此之前必须求先删除文件,删除文件要求使用“del”命令,个中提供了“/f”选项用于强逼删除只读文件,“/a”选项表示删除率性属性的文书,“/q”选项表示沉默删除。强迫删除目录的代码如下:

@echooff

echo***************逼迫删除目录*****************

echo使用办法:

echo1.请输入要去除目录的欧洲经济共同体路线地址。

echo2.快要删除的目录拖放到推行中的批管理中。

echo3.就要删除的目录拖放到程序Logo上。

echo注意:扶植文件删除,删除后不能够在回笼站恢复。

echo********************************************

echo=

setinPath=%1

ifdefined inPath (

goto op1

)else(

goto op2

)

:op1

ifexist %inPath%\nul (

rem 删除目录下有所文件(网传有del/f/a/q\\?%1做法)

del/f/a/q%1

rem 删除当前目录(网传有rd/s/q\\?%1做法)

rd/s/q%1

)else(

rem 删除目录下具备文件(网传有del/f/a/q\\?%1做法)

del/f/a/q%1

)

goto end

:op2

set/pin帕特h=目录完全路线地址(输入或拖放卡塔尔国并回车:

ifexist %inPath%\nul (

rem 删除目录下有所文件

del/f/a/q%inPath%

rem 删除当前目录

rd/s/q%inPath%

)else(

rem 删除目录下有所文件

del/f/a/q%inPath%

)

goto end

:end

echo=

echo删除已到位!请刷新看看是或不是删除。

Pause>nul

4.双重挂号系统组件

系统组件是系统本身不可缺点和失误的生机勃勃有的,比较多软件贫乏了这个零件都力无法及平常运营。在Windows系统中最基层的类别组件分为DLL和OCX三种,当中DLL(全称Dynamic
Link
Library,“动态链接库”)文件,它是数不清系列软件都依靠的生机勃勃种相对程序;OCX(全称Object
Linking and Embedding (OLE卡塔尔国 Control
Extension,“嵌入式对象控件”)文件是黄金年代种分享式的对立程序。首先理解了那三种组件,那么重新登记则就是将这么些DLL或OCX组件卸载后重新安装一回。那么使用什么命令来实践到位了?

在Windows系统中提供了叁个“regsvr32”外部程序来张开DLL和OCX文件的注册和卸载操作,即使是二个外部程序,不过相似提供了命令操作行,能够通过在运行窗口或命令行中输入“regsvr32”命令来查阅“regsvr32”工具的利用格局,这里非常少说,具体选项应用都有证实。须要注意的是“regsvr32”命令只好用来操作“.dll”或“.ocx”文件。上面大家来正视新登记系统组件的代码(这里运用“for”语句来落实):

1

2

3

4

5

6

7

8

9

10

11

12@echooff

setdPath=%systemroot%\system32\

echo~~~~~~~~~~

echo输入目录,注册其下的保有DLL或OCX组件

echo~~~~~~~~~~

set/pdPath=请输入你要登记组件的目录(默以为%dPath%):

for%%fin(%dPath%.dll)do(

regsvr32/s%%f

)

for%%fin(%dPath%.ocx)do(

regsvr32/s%%f

)

批量文书重命名操作

批量文书重命名,这几个难点在头里早已说过,不过未有讲过怎样促成。上边大家就来探问那个案例。

唯恐你在好几网址上下载一密密麻麻文件时,那么些文件的名目都饱含了该网址预订义的部分名称前缀或后缀,是不是感觉倒霉看,如何去掉那么些前缀或后缀呢?二个三个改过?太OUT了!使用批量改换软件?笔者的率先主见正是旁人能够做的批量改造软件自身干什么无法。上边已经学习了批管理,那么大家就应用批管理落成简单的批量退换文件名称。

要改过文件名称,一定要利用“ren”命令,具体操作就是利用“for”循环取到每一个文件名称,然后在称呼上进展退换,最终接收新的字符串名称来替换原有的字符串名称就能够。代码如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35@echooff

echo#################################################

echo使用验证:

echo不钦命工作路线则为当下所在目录。

echo只须要钦点必要替换的字符串和替换来的字符串就可以。

echo#################################################

setdPath=%~dp0

set/pdPath=设置文件所在目录(默感到%dPath%State of Qatar:

:start

set/poldStr=要替换的字符串:

set/pnewStr=要替换到的字符串:

ifnot defined oldStr goto start

ifnot defined newStr goto start

setlocal enabledelayedexpansion

for/f”skip=4 tokens=3*”%%ain(‘dir’)do(

ifnot %%a==^ (

ifnot %%b==字节 (

ifnot %%b==可用字节 (

ifnot %%b==%~nx0 (

setfileName=%%b

setfileName=!fileName:%oldStr%=%newStr%!

ren”%%b””!fileName!”

)

)

)

)

)

setexitop=n

set/pexitop=是或不是退出?(Y/N卡塔尔

if/i%exitop% equ y (

exit

)else(

goto start

)

pause

地点的批量文件改名只是贰个精短的事必躬亲

@echo off

setlocal EnableDelayedExpansion

set ab cd=fff

set “var=ab cd”

if defined !var! (echo ab cd 被定义了State of Qatar else echo ab cd 未有被定义

pause

复制代码

啊,果然能够。。那下简单多了。。。

唯独需注意的是依然得用!!来援用变量。

总结:

检验含空格的变量名是或不是被定义过,需展开延迟变量,

并把if defined这里的保有空格都用变量来取代

唯恐将变量名赋值给别的变量,再用!!来引用这一个新的变量。

再尝试代码1-6

起步或关闭服务

劳动也是Windows系统的一个关键概念,寻平常衣服务是其他程序运营的底工条件,关于劳动的切实音讯能够自动参照他事他说加以考察别的资料。在MS-DOS提供了二个万死不辞的工具“net”命令,用于对WIndows根底消息过程综合管理,当然它也能够管理服务。“net”命令怎么着进展劳动的运维和关闭管理吗?

51

52

53

54@echooff

title 服务管理工科具

setlocal enabledelayedexpansion

:menu

echo=

echo==================================================

echo=

echo-=服务管理工科具=-

echo=

echo1.运维服务 2.闭馆服务

echoQ.退出

echo=

echo使用表明:运转或关闭服务供给输入服务名称,服务名称

echo能够经过“service.msc”管理面板对应属性中查阅。

echo==================================================

echo=

set/pop=请接受操作:

if%op%==1 goto startService

if%op%==2 goto closeService

if/i%op% equ qexit

goto menu

:startService

echo=

set/pserviceName=请输入你要运营的服务名称:

for/f”delims=”%%ain(‘net start ^| find /i
“%serviceName%”‘)do(

set/pchoice1=%serviceName%服务正在运转…是还是不是关闭?(Y/N^卡塔尔国

if/i!choice1! equ y (

net stop %serviceName%

)

goto end

)

net start %serviceName%

goto end

:closeService

echo=

set/pserviceName=请输入你要关张的劳务名称:

for/f”delims=”%%ain(‘net start ^| find /i
“%serviceName%”‘)do(

net stop %serviceName%

goto end

)

set/pchoice2=%serviceName%劳务处于终止状态…是还是不是开启?(Y/N^卡塔尔国

if/i%choice2% equ y (

net start !serviceName!

)

goto end

:end

echo=

setexitop=n

set/pexitop=是不是退出?(Y/N卡塔尔

if/i%exitop% equ y (

exit

)else(

goto menu

)

过程、端口消息保管

进度是Windows系统中的三个首要概念,日常对应一个正值施行的次序,在MS-DOS同样提供了对进程实现管理的通令工具,常用的有“tasklist”命令和“taskkill”命令,在那之中“tasklist”命令用于查看进度音讯,能够依赖八个进度名称或进程ID来查阅进度的对应消息;“taskkill”命令能够用来终止进度,能够依照三个进度名称或进程ID来终止进度或所在进度树。

端口是Windows系统中的另多个第一概念,具备远程通讯作用的先前几天常最少需求监听一个端口来促成通讯,端口不能重复使用,经常多少个端口只对应八个进度,不过多少个进度能够对应三个端口(具体的关于“互联网端口“的详细描述能够参见一些任何质地)。在MS-DOS系统中提供了“netstat”工具来查阅网络端口,同一时候还足以查看端口对应的进程新闻。下边大家就来兑现这么些事例:

@echooff

title 端口/进程管理工科具

setlocal enabledelayedexpansion

:menu

echo=

echo╔-                                                     -╗

echo本机开放的端口及接收该端口的长河管理工具

echo= ………………………………………………….

echo1.TCP/UDP分类列表查看

echo2.地点端口查找

echo3.进程终止

echoQ:退出

echo╚-                                                     -╝

echo=

setop=q

set/pop=请选取操作:

if%op%==1 goto seeType

if%op%==2 goto searchPort

if%op%==3 goto killProcess

if/i%op% equ q goto end

goto menu

:seeType

echo=

echo-=TCP协议=-

echo=

echo本地地址       端口      进程ID    进度名称

echo─────────────────────────────

for/f”skip=4 tokens=2,5″%%ain(‘netstat -ano -p tcp’)do(

setresultStr=

rem 拆分本地地址为IP和端口号

for/f”delims=: tokens=1,2″%%iin(“%%a”)do(

call :builderInfo 15 %%i

setresultStr1= !resultStr!

call :builderInfo 6 %%j

setresultStr2=!resultStr1! !resultStr!

)

call :builderInfo 6 %%b

setresultStr3=!resultStr2! !resultStr!

rem 通过进度ID获取进度名称

for/f”skip=2 delims=, tokens=1″%%iin(‘tasklist /fi “PID eq %%b”
/fo csv’)do(

setresultStr4=!resultStr3! %%~i

)

echo!resultStr4!

)

echo==========================================================

echo=

echo-=UDP协议=-

echo=

echo本地地址       端口      进程ID    进程名称

echo─────────────────────────────

for/f”skip=4 tokens=2,4″%%ain(‘netstat -ano -p udp’)do(

setresultStr=

rem 拆分本地地址为IP和端口号

for/f”delims=: tokens=1,2″%%iin(“%%a”)do(

call :builderInfo 15 %%i

setresultStr1= !resultStr!

call :builderInfo 6 %%j

setresultStr2=!resultStr1! !resultStr!

)

call :builderInfo 6 %%b

setresultStr3=!resultStr2! !resultStr!

rem 通过进度ID获取进程名称

for/f”skip=2 delims=, tokens=1″%%iin(‘tasklist /fi “PID eq %%b”
/fo csv’)do(

setresultStr4=!resultStr3! %%~i

)

echo!resultStr4!

)

goto end

:searchPort

set/pprot=请输入要探求的端口号(输入b再次回到主菜单卡塔尔(قطر‎:

ifnot defined prot goto :searchPort

if/i%prot% equ b goto :menu

echo=

echo=    -=本地%prot%端口使用明细=-

echo=

echo公约名称   进度ID    进度名称

echo─────────────────

for/f”tokens=1,2,4,5″%%ain(‘netstat -ano ^| findstr
“:%prot%\>”‘)do(

for/f%%iin(‘echo %%b ^| findstr “:%prot%\>”‘)do(

setresultStr=

if/i%%a equ UDP (

call :builderInfo 6 %%c

setresultStr1= UDP !resultStr!

rem 通过进程ID获取进度名称和相应组件

for/f”skip=2 delims=, tokens=1″%%iin(‘tasklist /fi “PID eq %%c”
/fo csv’)do(

setresultStr2=!resultStr1! %%~i

)

)else(

call :builderInfo 6 %%d

setresultStr1= TCP !resultStr!

rem 通过进度ID获取进度名称和相应组件

for/f”skip=2 delims=, tokens=1″%%iin(‘tasklist /fi “PID eq %%d”
/fo csv’)do(

setresultStr2=!resultStr1! %%~i

)

)

echo!resultStr2!

)

)

goto end

:killProcess

set/pproTag=请输入进度ID或称谓(输入b重回主菜单卡塔尔:

ifnot defined proTag goto killProcess

if/i%proTag% equ b goto menu

for/f%%iin(‘echo %proTag% ^| findstr “.exe .dll”‘)do(

set/acount=0

for/f”skip=2 delims=, tokens=1,2,3″%%ain(‘tasklist /fi
“imagename eq %%i” /fo csv’)do(

set/acount+=1

)

setsure=N

set/psure=鲜明截止%proTag%针没错!count!个进度吗?(Y/N)

if/i!sure! equ y (

taskkill/im%proTag%/f

)else(

goto killProcess

)

)

set/anum=%proTag%

if%num%==0echo请输入精确进程ID或进程名称,比如123或cmd.exe… &&    
goto killProcess

for/f”skip=2 delims=, tokens=1,2,3″%%ain(‘tasklist /fi “pid eq
%num%” /fo csv’)do(

setsure=N

set/psure=明确结束%num%指向经过吗?(Y/N)

if/i!sure! equ y (

taskkill/pid%num%/f

)else(

goto killProcess

)

)

goto end

:end

echo=

setexitop=n

set/pexitop=是或不是退出?(Y/NState of Qatar

if/i%exitop% equ y (

exit

)else(

goto menu

)

rem 创设输出新闻,依据长度补全空格,是左边手对齐

:builderInfo

rem 字符串最大尺寸

setmaxLength=%1

rem 原始字符串

setstr=%2

rem 原始字符串长度

set/alength=0

rem 计算字符串长度,使用循环截取单个字符是不是等于空为依赖

:getLength

set/alength+=1

if“%str%”==””goto fillSpance

for/f%%iin(“%length%”)do(

ifnot”!str:~%%i,1!”==””goto getLength

)

rem
使用空格补全字符串,假若原始字符串长度小于最大字符串长度则在前面加多空格

:fillSpance

settemp=

if/i%length% lss %maxLength% (

for/l%%iin(%length%,1,%maxLength%)do(

settemp= !temp!

)

)

setresultStr=%str%!temp!

行使时应该加/c:参数,c:后应写提示可输入的字符或数字,之间无空格。冒号是可选项。

利用时加也可选择加/m:参数,m:后应写提醒表明语。

具体的一声令下使用请参见choice/? 如下图所示:

常用景况,轻便比如如下:新建三个文书文件,命名称为choicedemo,修改文件类型为bat,用Notepad++张开编辑内容如下:

1@echooff

2:begin

3choice/c:1234 /m:”please select”

4if%errorlevel%==4gotoend

5if%errorlevel%==3gotothree

6if%errorlevel%==2gototwo

7if%errorlevel%==1gotoone

8:one

9echo111

10pause>nul

11gotobegin

12:two

13echo222

14pause>nul

15gotobegin

16:three

17echo333

18pause>nul

19gotobegin

20:end

21echoI want to quit

22pause>nul

试行效果如下:

一发大名鼎鼎:此文件名称不可能命名字为choice,因为这样会进来死循环,不报告您本身是肿么知道的

后天长途二个客商,发掘他的服务器会不许时自动断开互连网,以致顾客端连接不了服务端,但是重启服务之后又恢复生机平常,开首判别大概是出于有个别系统服务与winpacp有冲突,提出客户恢复生机操作系统,他想等傍晚再起来操作,今天就只能一贯运行个ping,开采timed
out就手动重启服务。小编记念if可以接纳程序的重返值作为推断,就帮她写了那几个本子:

复制代码代码如下:

@echo off

: p

ping 61.152.XX.XX

IF ERRORLEVEL 1 goto aa

IF ERRORLEVEL 0 goto bb

:aa

echo 正在重启软件服务…

net stop MSSQLSERVER

net start MSSQLSERVER

goto p

:bb

echo 继续ping中。。。

goto p

这段命令的成效是,ping
61.152.XX.XX那个IP,借使ping不通用准则重启mssql服务,然后继续ping,借使能够ping通,照旧一连ping…

咱们都清楚if是命令行下的贰个准绳判别语句,EHavalRO景逸SUVLEVEL是它的三个参数,翻译过来正是“错误重临码”的意味,它的功能是推断前一条命令的失实重临值,然后和定义的字符值实行比较,再决定开展什么样动作。

格式是如此:

if ERRORLEVEL nubmer commend

例:if E奥迪Q7RO昂CoraLEVEL 1 echo 重回值等于1

那正是说大家就要问了,笔者怎么获取到前叁个下令的再次来到值呢?

办法很简短,拿ping来讲,我们先运营叁个ping 127.0.0.1

运作结果是Reply from 127.0.0.1: bytes=32 time<1ms TTL=128

那个时候大家输入,echo %errorlevel%,就足以看出再次回到值是0,

然后大家在ping四个海市蜃楼的ip,比方192.192.192.192

ping命令突显 Request timed out.。

ok,大家在用echo %errorlevel%查一下再次来到值是微微。

今昔变为了1。

你也得以用那一个措施来询问任何命令的再次回到值,譬如copy、dir等等。

自然if
ERubiconROCR-VLEVEL对数值的可比艺术不但限于等于。在微软的协助中大家得以看见:

IF %ERRORLEVEL% LEQ 1 goto okay

此处的LEQ表示“小于等于”,全部的可比参数如下:

EQU – 等于

NEQ – 不等于

LSS – 小于

LEQ – 小于或等于

GTR – 大于

GEQ – 大于或等于

如有错误,感激指正。

IF-ERRORLEVEL

创建TEST4.BAT,内容如下:

@ECHO OFF

XCOPY C:\AUTOEXEC.BAT D:\

IF EExigeRO3 WheelerLEVEL 1 ECHO 文件拷贝战败

IF E奥德赛ROPAJEROLEVEL 0 ECHO 成功拷贝文件

接下来施行文书:

C:\>TEST4

生龙活虎旦文件拷贝成功,显示屏就能来得“成功拷贝文件”,否则就展会示“文件拷贝战败”。

IF ESportageROHighlanderLEVEL 是用来测量检验它的上一个DOS命令的重回值的,注意只是上二个命令的重返值,而且再次来到值必须依照从大到小程序顺序推断。

进而下边包车型地铁批处理公事是大错特错的:

@ECHO OFF

XCOPY C:\AUTOEXEC.BAT D:\

IF E奥迪Q5RO宝马7系LEVEL 0 ECHO 成功拷贝文件

IF EOdysseyROEscortLEVEL 1 ECHO 未找到拷贝文件

IF EExigeRO奥迪Q5LEVEL 2 ECHO 顾客通过ctrl-c中止拷贝操作

IF EHavalROCRUISERLEVEL 3 ECHO 预置错误阻止文件拷贝操作

IF E本田CR-VRO大切诺基LEVEL 4 ECHO 拷贝进度中写盘错误

任凭拷贝是或不是成功,前面包车型大巴:

其三方插件:wget

1、应用wget下载单个文件以下的例子是从互连网下载八个文本并保存在当前目录

wget

在下载的进程中会显示进度条,包蕴(下载实现比例,已经下载的字节,当前下载速度,剩余下载时间)。

2、使用wget -O下载并以不一致的文书名保存

wget默认会以最终二个相符”/”的前面包车型地铁字符来命令,对于动态链接的下载常常文件名会不得法。

不当:上边包车型地铁例子会下载一个文本并以名称download.php?id=1080保留

wget

不畏下载的文书是zip格式,它还是以download.php?id=1080下令。

毫无疑问:为了消逝那几个主题素材,大家能够动用参数-O来钦定二个文本名:

wget -O wordpress.zip

3、使用wget –limit
-rate限速下载
当您施行wget的时候,它暗中认可会占用全体或许的宽骨痿载。但是当您策画下载三个大文件,而你还亟需下载别的文件时就有至关重要限制速度了。

wget –limit-rate=300k

4、使用wget -c断点续传动用wget -c重新启航下载中断的公文:

wget -c

对于大家下载大文件时乍然由于互联网等原因中断特别常有接济,大家得以一而再跟着下载并非重复下载叁个文书。需求持续暂停的下载时方可接受-c参数。

利用第三方插件写的游乐:

@echo off

:reset

cls

mode con cols=120 lines=60

color 79

set 版本=beta4.0

:check

echo 正在检查程式完整性,若是破坏将尝试从HWT服务器获取……

if not exist wget.exe echo 游戏程式已破坏,请重新得到 error
01&&pause>nul&&exit

if not exist choice.exe wget

cls

if not exist cmdmp3.exe wget

cls

if not exist image.exe wget

cls

if not exist logo.bmp wget

cls

echo 重要程式检查评定结束

echo 最早检查测量检验能源包

echo 连接服务器更新能源包中……

cls

wget

if not exist items\ md items

if not exist items\sound md items\sound

if not exist items\player md items\player

if not exist items\gg md items\gg

cls

if not exist items\gameover.bmp wget
-P items\

Cls     (解释:-P, –directory-prefix=名称  
保存文件前先创制钦命名称的目录。)

if not exist items\help.bmp wget
-P items\

cls

if not exist items\ico.bmp wget
-P items\

cls

if not exist items\jt.bmp wget
-P items\

cls

if not exist items\kk.bmp wget
-P items\

cls

if not exist items\menu.bmp wget
-P items\

cls

if not exist items\nyq.bmp wget
-P items\

cls

if not exist items\nyqe1.bmp wget
-P items\

cls

if not exist items\nyqe2.bmp wget
-P items\

cls

if not exist items\nyqe3.bmp wget
-P items\

cls

if not exist items\push.bmp wget
-P items\

cls

if not exist items\savefinish.bmp wget
-P items\

cls

if not exist items\se.bmp wget
-P items\

cls

if not exist items\tzcd.bmp wget
-P items\

cls

if not exist items\yes.bmp wget
-P items\

cls

if not exist items\player\1.bmp wget
-P
items\player\

cls

if not exist items\player\2.bmp wget
-P
items\player\

cls

if not exist items\player\3.bmp wget
-P
items\player\

cls

if not exist items\player\4.bmp wget
-P
items\player\

cls

if not exist items\player\5.bmp wget
-P
items\player\

cls

if not exist items\player\6.bmp wget
-P
items\player\

cls

if not exist items\player\7.bmp wget
-P
items\player\

cls

if not exist items\player\8.bmp wget
-P
items\player\

cls

if not exist items\sound\01.mp3 wget
-P
items\sound\

cls

if not exist items\sound\02.mp3 wget
-P
items\sound\

cls

if not exist items\sound\03.mp3 wget
-P
items\sound\

cls

if not exist items\sound\04.mp3 wget
-P
items\sound\

cls

if not exist items\sound\05.mp3 wget
-P
items\sound\

cls

if not exist items\sound\06.mp3 wget
-P
items\sound\

cls

if not exist items\sound\sound01.cmd wget
-P
items\sound\

cls

if not exist items\sound\sound02.cmd wget
-P
items\sound\

cls

if not exist items\sound\sound03.cmd wget
-P
items\sound\

cls

if not exist items\sound\sound04.cmd wget
-P
items\sound\

cls

if not exist items\sound\sound05.cmd wget
-P
items\sound\

cls

if not exist items\sound\sound06.cmd wget
-P
items\sound\

cls

if not exist items\sound\ze.bmp wget
-P
items\sound\

cls

if not exist items\sound\ze2.bmp wget
-P
items\sound\

cls

if exist data.txt del data.txt

cls

wget

set num=”1:”

for /f “tokens=1*delims=:” %%i in (‘findstr/n . data.txt ^| findstr/b
%num%’) do (

set 数据更新=%%j

)

if “%数据更新%”==”1” goto 数据更新

cls

goto boot

:boot

taskkill /f /im “cmdmp3.exe” >nul

mode con cols=120 lines=60

color 79

cls

start /min items\sound\sound01.cmd

image /d

title 史青柠历险记 %版本% —HWT团队出品

image items\ico.bmp 90 310

set dyx=0

set dyf=0

set dyy=0

set num1=40

set playerzy=1

set sx=0

set sy=0

set 分数=0

set 粘液球数量=0

set slm=0

set nyqx=0

set nyqy=0

set gjt=0

set dyf=

set dyx=

set dyy=

set ddplayerzy=1

set ddsx=0

set ddsy=0

set p1sm=0

set p2sm=0

set 关卡=1

::——开采者调试用,开启请把0改为1,关闭反之———-

set debug=0

::——开荒者调节和测量试验用,开启请把0改为1,关闭反之———-

set 威力=1

set boss2=3

set ppp=1

set hcft=0

set 怪物=1

:reset1

if “%num1%”==”0” goto next1

echo.

set /a num1=%num1%-1

goto reset1

:next1

echo                                               copyright 2016 HWT

ping -n 3 127.0.0.1 >nul

image /d

image items\sound\ze2.bmp 110 300

ping -n 3 127.0.0.1 >nul

image /d

image items\sound\ze.bmp 110 300

ping -n 3 127.0.0.1 >nul

image /d

image items\ico.bmp 90 310

ping -n 3 127.0.0.1 >nul

image /d

set menuxy=1

set menuy=220

goto menu

:menu

cls

image /d

image items\menu.bmp 110 180

image items\jt.bmp 640 %menuy% /TRANSPARENTBLT

if “%ppp%”==”3” image items\push.bmp 220 760 /TRANSPARENTBLT&&set ppp=1

choice /c wsep /n /t 1 /d p

if %errorlevel%==1 set /a menuxy=%menuxy%-1

if %errorlevel%==2 set /a menuxy=%menuxy%+1

if %errorlevel%==3 goto menupd

cls

set /a ppp=%ppp%+1

image items\menu.bmp 110 180

if “%menuxy%” LSS “1” set menuxy=1

if “%menuxy%” GTR “3” set menuxy=3

if “%menuxy%”==”1” set menuy=220

if “%menuxy%”==”2” set menuy=370

if “%menuxy%”==”3” set menuy=520

goto menu

:menupd

echo %menuxy%

if “%menuxy%”==”1” goto 单人游戏

if “%menuxy%”==”2” goto 五个人游戏

if “%menuxy%”==”3” goto 帮助

goto menu

:单人游戏

taskkill /f /im “cmdmp3.exe” >nul

set /a music=%random%%%6+1

start /min items\sound\sound0%music%.cmd

cls

image /d

:起头化单人游戏

set /a p1sm=%关卡%*2*10

set /a playerzy= %random%%%2+1

set /a sx=%random%%%740+1

set /a sy=%random%%%840+1

set /a ddplayerzy=%playerzy%+2

set /a ddsx=%random%%%740+1

set /a ddsy=%random%%%840+1

set /a p1sm=%关卡%*2*10

set /a p2sm=%关卡%*2*12

set 关卡=1

set slm=1

set 分数=0

set 粘液球数量=0

set fps=0

set /a 怪物=%random%%%3+1

goto 计算nyq

:回到游戏

cls

image /d

goto ga

:计算nyq

set disjs=0

if %disjs% GTR %p1sm% goto 单人die

if %disjs% GTKuga %p2sm% goto 闯关成功

if “%p2sm%”==”0” goto 闯关成功

if “%粘液球数量%” LSS “0” set 粘液球数量=0

if “%slm%”==”1” goto 生成nyq

if “%dyx%”==”” goto ga

set /a dyx=%dyx%+%dyf%

goto ga

:怪物AI

goto 怪物%怪物%

:怪物1

set hcft=1

if %ddsx% lss %sx% (set /a ddsx=%ddsx%+10&&set ddplayerzy=4) else (set
/a ddsx=%ddsx%-10&&set ddplayerzy=3)

if %ddsy% lss %sy% (set /a ddsy=%ddsy%+10&&echo ok) else (set /a
ddsy=%ddsy%-10&&echo not)

goto 碰撞箱

:怪物2

if “%hcft%”==”0” goto 怪物2-1

if %ddsx% lss %sx% (set /a ddsx=%ddsx%+12&&set ddplayerzy=6) else (set
/a ddsx=%ddsx%-12&&set ddplayerzy=5)

if %ddsy% lss %sy% (set /a ddsy=%ddsy%+12&&echo ok) else (set /a
ddsy=%ddsy%-12&&echo not)

:怪物2-1

set hcft=1

goto 碰撞箱

:怪物3

if “%hcft%”==”0” goto 怪物3-1

if %ddsx% lss %sx% (set /a ddsx=%ddsx%+10&&set ddplayerzy=8) else (set
/a ddsx=%ddsx%-10&&set ddplayerzy=7)

if %ddsy% lss %sy% (set /a ddsy=%ddsy%+10&&echo ok) else (set /a
ddsy=%ddsy%-10&&echo not)

if “%ppp%”==”10” (

:怪物3-1

set hcft=1

set /a ddsx=%random%%%500+150

set /a ddsy=%random%%%500+150

set /a ddplayerzys=%random%%%2+1

set ppp=0

)

set /a ppp=%ppp%+1

goto 碰撞箱

:生成nyq

set /a nyqx=%random%%%500+150

set /a nyqy=%random%%%500+150

set slm=0

image items\nyq.bmp %nyqx% %nyqy% /TRANSPARENTBLT

:ga

if “%hcft%”==”0” goto 怪物AI

if “%debug%”==”0” cls

title 史青柠历险记 %版本%  —HWT团队出品      第%关卡%关
     分数:%分数%   粘液球数量:%粘液球数量% 血量:%p1sm% 仇人血量:%p2sm%

image /d

if not “%dyx%”==”” image items\nyqe%威力%.bmp %dyx% %dyy%
/TRANSPARENTBLT

set /a gjt=%gjt%+1

image items\player\%playerzy%.bmp %sx% %sy% /TRANSPARENTBLT&&image
items\player\%ddplayerzy%.bmp %ddsx% %ddsy% /TRANSPARENTBLT

image items\nyq.bmp %nyqx% %nyqy% /TRANSPARENTBLT

choice /c wsadqepk123 /n /t 1 /d p

if %errorlevel%==1 set /a sy=%sy%-25

if %errorlevel%==2 set /a sy=%sy%+25

if %errorlevel%==3 set /a sx=%sx%-25&&set playerzy=1

if %errorlevel%==4 set /a sx=%sx%+25&&set playerzy=2

if %errorlevel%==5 goto 单人游戏结束菜单

if %errorlevel%==6 goto 发射粘液球

if %errorlevel%==8 if “%debug%”==”0” (set debug=1) else (set debug=0)

if %errorlevel%==9 set 威力=1

if %errorlevel%==10 set 威力=2

if %errorlevel%==11 set 威力=3

goto 怪物AI

:碰撞箱

set 史青柠碰撞箱x1=%sx%

set 史青柠碰撞箱y1=%sy%

set /a 粘液球碰撞箱x1=%nyqx%-50

set /a 粘液球碰撞箱y1=%nyqy%+50

set /a 粘液球碰撞箱x2=%nyqx%+50

set /a 粘液球碰撞箱y2=%nyqy%-50

set 紫弹药碰撞箱x1=%dyx%

set 紫弹药碰撞箱y1=%dyy%

set /a 冤家碰撞箱x1=%ddsx%-50

set /a 仇人碰撞箱y1=%ddsy%+100

set /a 敌人碰撞箱x2=%ddsx%+50

set /a 敌人碰撞箱y2=%ddsy%

set fg=10

if %gjt% GEQ %fg% (

if %粘液球数量% LSS %威力% (set gjzt=不可攻击,弹药不足卡塔尔 else (set
gjzt=可攻击State of Qatar

) else (

set gjzt=不可攻击 冷却时间

)

if “%debug%”==”1” (

cls

echo ——调节和测量试验情势DEBUG—-按k关闭—–

echo 史莱姆 X %sx%  敌人 X %ddsx%

echo        Y %sy%       Y %ddsy%

echo.

echo. 史青柠碰撞箱x1=%sx%

echo. 史青柠碰撞箱y1=%sy%

echo  #################################

echo. 粘液球碰撞箱x1 %粘液球碰撞箱x1%

echo. 粘液球碰撞箱y1 %粘液球碰撞箱y1%

echo. 粘液球碰撞箱x2 %粘液球碰撞箱x2%

echo. 粘液球碰撞箱y2 %粘液球碰撞箱y2%

echo. 紫弹药碰撞箱x1 %紫弹药碰撞箱x1%

echo. 紫弹药碰撞箱y1 %紫弹药碰撞箱y1%

echo  ################################

echo. 敌人碰撞箱x1   %敌人碰撞箱x1%

echo. 敌人碰撞箱y1   %仇敌碰撞箱y1%

echo. 冤家碰撞箱x2   %仇敌碰撞箱x2%

echo. 敌人碰撞箱y2   %敌人碰撞箱y2%

echo.

echo.   弹药冷却 %gjt%    %gjzt%  威力:%威力%

echo. ################################

echo.

echo. ppp:%ppp%  怪物:%怪物%

echo.

echo. 输入开关:

)

if “%史青柠碰撞箱x1%” GEQ “%粘液球碰撞箱x1%” if “%史青柠碰撞箱x1%” LEQ
“%粘液球碰撞箱x2%” if “%史青柠碰撞箱y1%” LEQ “%粘液球碰撞箱y1%” if
“%史青柠碰撞箱y1%” GEQ “%粘液球碰撞箱y2%” goto 粘液球被吃掉

if “%紫弹药碰撞箱x1%” GEQ “%粘液球碰撞箱x1%” if “%紫弹药碰撞箱x1%” LEQ
“%粘液球碰撞箱x2%” if “%紫弹药碰撞箱y1%” LEQ “%粘液球碰撞箱y1%” if
“%紫弹药碰撞箱y1%” GEQ “%粘液球碰撞箱y2%” goto 粘液球被吃掉2

if “%史青柠碰撞箱x1%” GEQ “%敌人碰撞箱x1%” echo a&&if “%史莱姆碰撞箱x1%”
LEQ “%仇人碰撞箱x2%” echo a&&if “%史青柠碰撞箱y1%” LEQ “%仇敌碰撞箱y1%”
echo a&&if “%史青柠碰撞箱y1%” GEQ “%敌人碰撞箱y2%” goto 遇敌

if “%紫弹药碰撞箱x1%” GEQ “%敌人碰撞箱x1%” echo b&&if “%紫弹药碰撞箱x1%”
LEQ “%仇人碰撞箱x2%” echo b&&if “%紫弹药碰撞箱y1%” LEQ “%冤家碰撞箱y1%”
echo b&&if “%紫弹药碰撞箱y1%” GEQ “%仇人碰撞箱y2%” goto 敌扣

goto 计算nyq

:敌扣

set dyx=9999

set dyy=9999

if “%怪物%”==”3” set ppp=10

set /a p2sm=%p2sm%-%关卡%*2*%威力%

if “%怪物%”==”2” goto 怪物2-1

goto 计算nyq

:粘液球被吃掉

set slm=1

set /a 分数=%分数%+1

set /a 粘液球数量=%粘液球数量%+1

set /a f=%关卡%*2*10

set /a p1sm=%p1sm%+1

if %p1sm% GTR %f% set /a p1sm=%关卡%*2*10

goto 计算nyq

:遇敌

if “%怪物%”==”3” set ppp=10

set /a p1sm=%p1sm%-%关卡%*2

if “0” GTR “%p1sm%” goto 单人die

goto 计算nyq

:粘液球被吃掉2

set slm=1

if “%怪物%”==”3” set ppp=10

set /a 分数=%分数%+2

goto 计算nyq

:单人游戏结束菜单

set ztxy=1

set ztmx=300

set ztmy=490

image items\tzcd.bmp 270 380 /TRANSPARENTBLT

goto tzxda

:tzxda

image items\kk.bmp %ztmx% %ztmy% /TRANSPARENTBLT

choice /c adqe /n

if %errorlevel%==1 set /a ztxy=%ztxy%-1

if %errorlevel%==2 set /a ztxy=%ztxy%+1

if %errorlevel%==3 goto 回到游戏

if %errorlevel%==4 goto 推断结束菜单

if “%ztxy%” LSS “1” set ztxy=1

if “%ztxy%” GTR “3” set ztxy=3

if “%ztxy%”==”1” set ztmx=300&&set ztmy=490

if “%ztxy%”==”2” set ztmx=510&&set ztmy=490

if “%ztxy%”==”3” set ztmx=410&&set ztmy=560

cls

image /d

if not “%dyx%”==”” image items\nyqe%威力%.bmp %dyx% %dyy%
/TRANSPARENTBLT

image items\player\%playerzy%.bmp %sx% %sy% /TRANSPARENTBLT&&image
items\player\%ddplayerzy%.bmp %ddsx% %ddsy% /TRANSPARENTBLT

image items\nyq.bmp %nyqx% %nyqy% /TRANSPARENTBLT

if not “%dyx%”==”” image items\nyqe.bmp %dyx% %dyy%

image items\tzcd.bmp 270 380 /TRANSPARENTBLT

image items\kk.bmp %ztmx% %ztmy% /TRANSPARENTBLT

goto tzxda

:决断甘休菜单

if “%ztxy%”==”1” goto 单人存档

if “%ztxy%”==”2” goto 读取单人存档

if “%ztxy%”==”3” goto reset

:单人存档

if exist saves.db del saves.db

echo %sx%>>saves.db

echo %sy%>>saves.db

echo %nyqx%>>saves.db

echo %nyqy%>>saves.db

echo %分数% >>saves.db

echo %粘液球数量% >>saves.db

echo %playerzy% >>saves.db

echo %dyf% >>saves.db

echo %dyx% >>saves.db

echo %dyy% >>saves.db

echo %gjt% >>saves.db

echo %ddsx%>>saves.db

echo %ddsy%>>saves.db

echo %ddplayerzy% >>saves.db

echo %p1sm%>>saves.db

echo %p2sm%>>saves.db

echo %关卡% >>saves.db

echo %威力% >>saves.db

echo %怪物% >>saves.db

image items\savefinish.bmp 400 270 /TRANSPARENTBLT

ping -n 3 127.0.0.1 >nul

cls&&image /d&&image items\player\%playerzy%.bmp %sx% %sy%
/TRANSPARENTBLT&&image items\player\%ddplayerzy%.bmp %ddsx% %ddsy%
/TRANSPARENTBLT&&image items\nyq.bmp %nyqx% %nyqy%
/TRANSPARENTBLT&&image items\tzcd.bmp 270 380&&image items\kk.bmp
%ztmx% %ztmy% /TRANSPARENTBLT

goto tzxda

:三个人游玩

echo 这里是五个人游戏,开辟中&&pause&&goto menu

:设置

echo 这里是安装,开采中&&pause&&goto menu

:读取单人存档

if not exist saves.db image items\se.bmp 200 -40 /TRANSPARENTBLT&&pause
>nul&&goto 回到游戏

set num=”1:”

for /f “tokens=1*delims=:” %%i in (‘findstr/n . saves.db ^| findstr/b
%num%’) do (

set sx=%%j

)

set num=”2:”

for /f “tokens=1*delims=:” %%i in (‘findstr/n . saves.db ^| findstr/b
%num%’) do (

set sy=%%j

)

set num=”3:”

for /f “tokens=1*delims=:” %%i in (‘findstr/n . saves.db ^| findstr/b
%num%’) do (

set nyqx=%%j

)

set num=”4:”

for /f “tokens=1*delims=:” %%i in (‘findstr/n . saves.db ^| findstr/b
%num%’) do (

set nyqy=%%j

)

set num=”5:”

for /f “tokens=1*delims=:” %%i in (‘findstr/n . saves.db ^| findstr/b
%num%’) do (

set 分数=%%j

)

set num=”6:”

for /f “tokens=1*delims=:” %%i in (‘findstr/n . saves.db ^| findstr/b
%num%’) do (

set 粘液球数量=%%j

)

set num=”7:”

for /f “tokens=1*delims=:” %%i in (‘findstr/n . saves.db ^| findstr/b
%num%’) do (

set playerzy=%%j

)

if “%playerzy%”==”1 ” set playerzy=1

if “%playerzy%”==”2 ” set playerzy=2

set num=”8:”

for /f “tokens=1*delims=:” %%i in (‘findstr/n . saves.db ^| findstr/b
%num%’) do (

set dyf=%%j

)

set num=”9:”

for /f “tokens=1*delims=:” %%i in (‘findstr/n . saves.db ^| findstr/b
%num%’) do (

set dyx=%%j

)

set num=”10:”

for /f “tokens=1*delims=:” %%i in (‘findstr/n . saves.db ^| findstr/b
%num%’) do (

set dyy=%%j

)

set num=”11:”

for /f “tokens=1*delims=:” %%i in (‘findstr/n . saves.db ^| findstr/b
%num%’) do (

set gjt=%%j

)

set num=”12:”

for /f “tokens=1*delims=:” %%i in (‘findstr/n . saves.db ^| findstr/b
%num%’) do (

set ddsx=%%j

)

set num=”13:”

for /f “tokens=1*delims=:” %%i in (‘findstr/n . saves.db ^| findstr/b
%num%’) do (

set ddsy=%%j

)

set num=”14:”

for /f “tokens=1*delims=:” %%i in (‘findstr/n . saves.db ^| findstr/b
%num%’) do (

set ddplayerzy=%%j

)

set num=”15:”

for /f “tokens=1*delims=:” %%i in (‘findstr/n . saves.db ^| findstr/b
%num%’) do (

set p1sm=%%j

)

set num=”16:”

for /f “tokens=1*delims=:” %%i in (‘findstr/n . saves.db ^| findstr/b
%num%’) do (

set p2sm=%%j

)

if “%ddplayerzy%”==”3 ” set ddplayerzy=3

if “%ddplayerzy%”==”4 ” set ddplayerzy=4

if “%ddplayerzy%”==”5 ” set ddplayerzy=5

if “%ddplayerzy%”==”6 ” set ddplayerzy=6

if “%ddplayerzy%”==”7 ” set ddplayerzy=7

if “%ddplayerzy%”==”8 ” set ddplayerzy=8

set num=”17:”

for /f “tokens=1*delims=:” %%i in (‘findstr/n . saves.db ^| findstr/b
%num%’) do (

set 关卡=%%j

)

set num=”18:”

for /f “tokens=1*delims=:” %%i in (‘findstr/n . saves.db ^| findstr/b
%num%’) do (

set 威力=%%j

)

set num=”19:”

for /f “tokens=1*delims=:” %%i in (‘findstr/n . saves.db ^| findstr/b
%num%’) do (

set 怪物=%%j

)

set /a 关卡=%关卡%+1-1

if “%威力%”==”3 ” set 威力=3

if “%威力%”==”2 ” set 威力=2

if “%威力%”==”1 ” set 威力=1

if “%怪物%”==”2 ” set 怪物=2

if “%怪物%”==”1 ” set 怪物=1

goto 回到游戏

:读取

set %读取变量%=

set num=”%读取行数%:”

for /f “tokens=1*delims=:” %%i in (‘findstr/n . “%路径%” ^| findstr/b
%num%’) do (

set %读取变量%=%%j

)

set 读取行数=0

goto %读取去何地%

:帮助

cls

image /d

image items\help.bmp 230 260

:hcs

choice /c a /n

if %errorlevel%==1 goto menu

goto hcs

:发射粘液球

set /a 威力总结=%威力%-1

if %粘液球数量% LSS %威力% goto 碰撞箱

set hc999=8

if %gjt% GEQ %hc999% goto hc55

goto 怪物AI

:hc55

set gjt=0

set /a 粘液球数量=%粘液球数量%-1*%威力%

set dyx=%sx%+20

set /a dyy=%sy%+50

if “%playerzy%”==”1” set dyf=-100

if “%playerzy%”==”2” set dyf=100

goto 碰撞箱

:单人die

image items\gameover.bmp 200 -40 /TRANSPARENTBLT

pause >nul

goto reset

:闯关成功

image /d

image items\player\%playerzy%.bmp %sx% %sy% /TRANSPARENTBLT

ping -n 1 127.0.0.1 >nul

image items\yes.bmp 200 -40 /TRANSPARENTBLT

image items\push.bmp 220 760 /TRANSPARENTBLT

ping -n 3 127.0.0.1 >nul

pause >nul

set /a 关卡=%关卡%+1

goto 新一关

:新一关

cls

set num2=14

:reset2

if “%num2%”==”0” goto next2

echo.

set /a num2=%num2%-1

goto reset2

:next2

taskkill /f /im “cmdmp3.exe” >nul

set /a music=%random%%%6+1

start /min items\sound\sound0%music%.cmd

set hcft=0

set /a ddplayerzy=%playerzy%+2

set /a ddsx=%random%%%740+1

set /a ddsy=%random%%%840+1

set /a p1sm=%关卡%*2*10

set /a p2sm=%关卡%*2*12

set boss2=3

set /a 怪物=%random%%%3+1

echo                                                       第%关卡%关

ping -n 3 127.0.0.1 >nul

goto ga

:数据更新

set num=”3:”

for /f “tokens=1*delims=:” %%i in (‘findstr/n . data.txt ^| findstr/b
%num%’) do (

set 数据版本=%%j

)

set num=”4:”

for /f “tokens=1*delims=:” %%i in (‘findstr/n . data.txt ^| findstr/b
%num%’) do (

set 获取更新内容=%%j

)

if “%数据版本%”==”%版本%” goto boot

echo. 更新内容 %到手更新内容%

echo 开掘可用更新,是不是更新 y/n  版本为 %数码版本%

choice /c yn /n

if %errorlevel%==1 goto rhj

if %errorlevel%==2 cls&goto boot

cls

goto 数据更新

:rhj

set num=”2:”

for /f “tokens=1*delims=:” %%i in (‘findstr/n . data.txt ^| findstr/b
%num%’) do (

set 数据链接=%%j

)

echo 后台下载更新中

wget %多少链接% updata.exe&&updata.exe&&del updata.exe&&goto reset

for %com% %%a in (“123 234 345”) do echo %%a

set install_dir=%install_dir:~0,-1%

findstr /n .* 1.txt>tmp1

for /f “tokens=1,2*” %%x in (‘findstr /i %value_name%
%temp_file_name%’) do (

if “%%~za” neq “%%~z$test:a” replace /p /u “%%a” “%%~dp$test:a”

setlocal

set b=c

rmdir /s /q “%uninstaller_path%\..\..\..\BlueStacks_tc_dt1”

for %%a in (%str%\..) do echo %%~nxa

)

set .|findstr /v /e “=1”

if exist “%uninstaller_path%”  (

::xcopy用在筛选上也很实用

rem echo uninstaller exist code is %errorlevel%

二、for 篇:

set
uninstaller_path=”%install_dir%..\uninstaller\HD-DeployTool_Uninstaller.exe”

set /p n=请输入数字或大小写字母

有一些小吃惊,就那样多个卸载的台本写了如此一大堆,但与此同临时常间也勾起作者想深入掌握的野趣,学习进程前边在讲,先来剖析一下以此批管理

3、for /d /r

“%uninstaller_path%” -f

setlocal enabledelayedexpansion

for /F “delims=;”  %%j in (‘%query_str%  2^>NUL’) do (

::推断当前目录下以test为名的文书是不是在d:\test\文件夹下存在同名文件,假使存在且大小分裂、修正日期更早,则替换之,不然不做拍卖。for扶助音讯中的“%%~dp$path:a”参数有如没见人用过,纵然它的适用范围很狭窄,可是一定的景观下不要紧黄金年代试。

goto:eof

::当最长的行字符数大于128时说糟糕能够用这么些来剖断最长行的字符数(短于128时rec按键会失效,代码中那一大堆2的N次方正是凑字数的,实战中能够省掉生机勃勃部分),帮忙超长字符串,总计大文件时效用斐然优化古板一核算法,新折半法来自plp626的转帖,sort的/rec按钮比较鸡肋,想来想去也只想到这几个用处,未见先例

set temp_dir = “%install_dir%..\..\BlueStacks_tc_dt*”

一、set 篇:

echo %%j > %temp_file_name%

::三步剖断单字符、双字符个数的另类办法。优势在于帮衬对细长字符串实行测算(当时用常规算法步骤多且难通用),劣点在于效能低。

pause

::当一行命令中存在奇数个双引号时,将会转义其后全数行当字符

set /a \test1=123,test2=234

@echo off 2>nul 3>nul

::妙用start /b让set
/p达成choice的延时功用,不知底哪位前辈首创的,再度赞二个。此处%1、%2的技艺仅作点缀,笔者只是感到那样“搭积木”很风趣才强加上去的。

pause

@echo off

for /l %%a in (1 1 10) do (

for /f “skip=99” %%a in (1.txt) do echo 1.txt至少100行

::利用~将享有二进制的1、0逆袭,负号在后或在前合营能够达成轻易加1或减1,那些技能主要用来压缩括号的应用,因为~号与负号的优先级皆以超过算数运算符的

set tmp=%%c

自己最心爱的授命,缺憾外部命令的起步速度太慢,所以实际上行使时很少露面。

set /a n+=1001

cmd /v:on /c echo !%a%!

set.

)

(for %%a in (16384 8192 4096 2048 1024 512 256 128 64 32 16 8 4 2 1) do
sort /rec !n! %0&&set /a n-=%%a||set /a n+=%%a)>nul 2>nul

)

findstr “^Rar!” /g:1.txt

(echo !n!)|findstr /i “[0-9a-Z]”&&echo 输入有误!

::通过对特殊字符的转义,在for中用双引号当分隔符

for /f “tokens=1*” %%d in (%%c) do echo %%~d

::平常见到的在同风流浪漫行展现区别颜色的法子,可是很几个人三回九转用
(几个退格多个空格),表达没驾驭退格键的含义

set /a n=1,m=2

::能够制止%test:~5,1%为空时出错的情景

goto loop

for %%a in (test.*) do (

echo ^^!

@echo 1.txt>list

findstr /a:41 .* 红底蓝字?

::为啥那样也能够运作吧?因为exe的打开药格局是”%1″ %*,bat是cmd /c “%1”
%*,所以把exe当作bat运转时,相当于cmd /c
1.exe…可是那只切合双击展开,在cmd内部调用此文件的时候是当成真正的bat运转的,所以会出错。

::qzwqzw首创用fc
/n同时输出双文件的思路,可是存在排序有望被打乱的弱项,所以加了个find弥补一下

::用Unicode文件头来展开编码混淆加密的bat,能够用那条命令解密

echo 您输入的是%n%,五秒后脱离。

待续…

::当大器晚成组字符串中富含奇数个双引号时平时会出错,撤消办法是转义在那之中的一个,保持有效的双引号成对,可是引号对之内不可能用转义符对其转义,所以转义符要放在引号对之外使用

1、for(无开关)

set “str name=str”

for /f %%a in (‘echo !%@%!’) do echo !%%a!

::顺应cmd中的正负数存款和储蓄特点,能够用逻辑位移完结决断正负数的“布尔运算”,可以衍生出五颜六色的算法,比方稍加改善就可以比较两数竟然三个数的大小

::利用那么些prompt,张开回显后得以并且输出命令与命令结果,而不会有剩余内容,切合制作bat运维日志

echo

进而放在一块儿,是因为那八个指令的遵从有所交集

(echo 2、计生的重大性%dq%哟

del>nul 红底蓝字 黄底绿字

for /f “tokens=2*delims=]:” %%a in (‘fc /n /lb10000 tmp1 tmp2^|sort’)
do (

call echo %%%a%%%

1、set(无开关)

::当语句中存在变量延迟符号时,将被预管理若干次,这是迟早要注意的

findstr>前两行.txt /x /v /g:1.txt 2.txt

for /f “delims=:” %%a in (‘((echo !str!^)^&echo^;^;^)^|findstr /o ^;’)
do set /a d=n-%%a+3

findstr /x “……….” 1.txt

set b=c

pause

发表评论

电子邮件地址不会被公开。 必填项已用*标注