无忧启动论坛

标题: bat教程分享 不定时更新 [打印本页]

作者: 有阴也有阳    时间: 2017-12-27 16:02
标题: bat教程分享 不定时更新
本帖最后由 有阴也有阳 于 2017-12-27 17:05 编辑

转帖者的话:这个教程太基础了,适合我这样的0基础的小白,大神请飘过,不喜勿喷!

从bat吧搬运而来,原帖地址:http://tieba.baidu.com/p/3528806494?pn=1

教程1:
echo
echo英文意思是回声,在bat里面就是显示什么东西打个比方
::开始代码
@echo off
echo 你好
pause
::结束代码
这样就会显示你好
还有一些代码以后会教
写好是这样的




echo教程系列2
echo [off/on]
echo off指的是关闭运行时显示的东西
echo on不用说了,指的是打开运行时显示的东西
比如
@echo off
echo 你好
pause
或者
@echo off
echo 你不好
@echo on
echo 你好
pause
这两个是有区别的


set系列1
set大家都知道,意思是设置,这里现讲最简单的一个
set就是把一个东西设为一个东西打个比方
@echo off
set a=你好
echo %a%
pause
这里显示的就不是a了,而是上面定义的“set a=” ,假如好看一点就是这样
set (你要定义的东西)=(你要把它设定成的东西)
至于%%这个东西么,后面会有附加的


附加(1)
pause
pause的英文意思是暂停,和前面一样也是,bat里面和这个意思差不多,我们来看一下
pause其实就是在这个页面暂停,具体理解还是要用代码的
@echo off
echo 你好
假如是这样的代码的话,那么就会直接闪退,但假如是这样的话
@echo off
echo 你好
pause
这样就不一样了,pause比较简单,就到这里


附加(2)
上面讲到%%,其实这并不难只是一个值,打个比方
@echo off
set a=b
echo a
pause
这样显示的是a而不是b
但假如这样
@echo off
set a=b
echo %a% (重要)
pause
这样子的话就会显示b,因为你echo a,这里不是一个值,就是一个普通的字母,但假如你加了%%,那么%a%就是一个值,而不是一个字母了


set系列2
开始继续讲set,上面讲道set把一个字母变成一个值,但是自己不能选择,所以这次我们将一下set的小变形——set /p ,其实这也不难,只要解释一下你就全懂了set /p这里你可以自己控制这个值,还是用代码解释吧
@echo off
set /p a=请写你要替换的值 (温馨提示:这里不用改)
echo %a%
pause
这里就可以写你要的值,比如你想把值设为b,那么你在显示“请写你要替换的值”这里后面写下b,下面就会显示b,假如还不懂,请看下公式
公式是这样的
@echo off
set /p (你要定义的东西)=(你要人别人看到的东西
echo %(你定义的东西)%
pause
但我要提示一下,下面不一定必须用echo,也可用其他东西
而=后面是显示的东西,让被人定义,而不是你自己定义的东西
还有一定要在set 后面加/p哦


装饰小代码1
title
大家好,这个教程是讲如何给程序设个题目,所以今天我们将用到title
title的英文意思是题目,本命令比较简单,一般人一看都能会,开始进入正题
title就是给你运行的东西设个题目,一般的话,CMD窗口上面是这样的:

如何给它加个题目呢,我们得用title命令,那我们加入下面的代码
title 你好
CMD窗口上面就变成了:

公式是这样的
@echo off
title (你想设的题目)
(命令)
pause
程序就这么多(比较简单,那么我们来看一点里面的介绍吧
==========================================================
代码大介绍:
echo off (显示关闭)
title (设置题目)
pause (暂停画面)
==========================================================
拜拜


goto指令
goto的意思是去哪,所以其实这个命令就是去某个地方
goto指令是由两个地方组成的,一是goto,二是:
goto是去到一个标记位,:是一个标记位,代码如下
@echo off
:a
echo 你好
goto a
这里就会死循环
公式的话如下
@echo
goto (去的标记位)
(命令)
:(去的标记位)
温馨提示:必须在:(去的标记位)这里打上:,否则就用不了
================================================================
代码大介绍
@echo off (关闭系统显示)
goto (去某个标记位)
: (标记位)
=================================================================



lesson 8
代码开始==================================
@echo off
:b
set /a rd=%random%%%2
if %rd% lss 1 goto b
if %rd%==1 goto a
:a
set /a a=1+1
echo %a%
echo 按任意键退出
pause>nul
exit
代码结束===================================
新代码
set /a =====================================
set /a 其实就是个计算机,我们用set /p或直接用set比如
@echo off
set a=1+1
echo %a%
pause
他这里显示的是1+1而不是2,我们用set /a的话
@echo off
set /a a=1+1
echo %a%
pause
这里显示的就是2了
===========================================
random随机数
随机数就得用random了
我们看一下最简单的代码
@echo off
set /a rd=%random%%%11
eco %rd%
pause
它就会显示10以内的数了,random%%%后面这个,本人直接理解成最大数+1了,这样更好理解
============================================
大于小于等于——小于
这里出现了 lss这个词,其实lss就是less,less就是小于的意思
我们在代码里写的是 if lss 1 goto b,其实这里是指小于1的话就回到b标记位(if后面会讲)
lss一般都会和if在一起
============================================
判断if
if的意思大家应该都懂,是假如的意思,if指令其实还有一个好朋友——else,但我们这次先不讲(我的核心文件不知道怎么了,正在修复)我们在课文里是这样的
if %rd% lss 1 goto b
if %rd%==1 goto a
我们得稍微再把random给加进去(否则很难懂)
:b
set /a rd=%random%%%2
if %rd% lss 1 goto b
if %rd%==1 goto a
我来讲一下,随机数上面讲了,set也将了,那么我们直接看这里
:b
if %rd% lss 1 goto b
if %rd%==1 goto a
这里的意思联系上文——set /a rd=%random%%%2
可以知道 rd的值就是随机的那个数,那么假如随机数小于1我们会到b标记位,假如随机数等于1去a标记位
:a
set /a a=1+1
echo %a%
echo 按任意键退出
pause>nul
exit
所以if就是这么用的,假如什么是什么做什么,公式
@echo off
if (判断的东西) (怎么了) (干什么)
pause
还有if是一种比较开放的程序,没有太大的限制,所以搞创新记得用上它
============================================
任意键继续pause>nul
pause>nul就是可以按任意键继续,这个程序一般是让别人看见东西,然后再显示,一般和cls在一起,代码公式如下
@echo off
(命令)
pause>nul
(命令)
pause
就这么多,比较简单
=============================================
代码复习
echo 显示
@echo off 关闭系统显示(@其实也是一种东西,我们后面会讲
pause 暂停页面
goto 去标记位
:a 标记位
==============================================
就这么多了(累死我了)


整人代码
================================================
电脑直接卡机的,保存为zr.bat即可
@echo off
:a
cd C:\Users\Lenono\desktop\
start zr.bat
goto a
=================================================
计算机的速度
=================================================
发现有新代码,强迫症——必须立刻教
=================================================
start英文意思是开始的意思,在这的意思是启动,就是启动一个文件,代码解释
@echo off
start 1.txt
pause
这就是打开1.txt,我们再来看一下上面的代码
start zr.bat
就是打开zr.bat
公式
@echo off
start (文件)
pause
===================================================
cd这个命令我觉得很奇怪——没有cd这个词(肯能我没学过)
不管了,我们来吧
假如你在桌面放一个XXX.bat在这那里面是cd 你好(文件夹没扩展名)然后你就到了你好这个文件夹,但是你想出来怎么办呢?我们用绝对值,比如说去桌面(我是win8肯能不一样)
@echo off
cd C:\Users\Lenono\Desktop\
pause
你就到了桌面,其实假如想清楚一点可以不用@echo off,这样
cd C:\Users\Lenono\Desktop\
pause
(其实不加@echo off我就不习惯)
cd 就是这么的容易
===================================================
整人代码解释
永远打开zr.bat,而且是两倍两倍的成——1变2,2变4,4变8,8变16......
你电脑不卡机才怪,再想想电脑运行的速度
====================================================


代码开始=================================================吓人代码
@echo off
@title 史上最坑爹的东西
echo 已帮你下载Windows更新文件,按任意键可以退出
pause>nul
cls
pause>nul
cls
echo 哈哈,你上当了,你完了,你中了病毒,哈哈哈,你不行打开一个网页给你看看
pause>nul
start http://www.baidu.com
cls
shutdown -s -t 10000
:z
cls
set /p pass=相信了吧,可是我还没玩完呢,我要给你搞个关机病毒,10000秒后关机,只有输入密码才行(密码提示:密码其实就是:密码)
if %pass%==密码 goto ng
:error
cls
echo 错了错了,都说了密码是 密码 了,而且还剩几分钟呀,按任意键重新来
pause>nul
goto z
:ng
shutdown -a
cls
echo 嘻嘻,我还没有厉害到做病毒呢,只是跟你玩玩,拜拜
pause
代码结束=================================================
代码大介绍================================================
新词:
shutdown
shutdown是一个关机指令(当然也有别的),我们在教程里看到的是‘
shutdown -s -t 10000,这里是10000秒后关机,我们来看一下他后面的两个
-s 的意思就是关机,但是我们为什么在电脑里运行的时候是166分钟后关机呢,因为后面还有-t
-t 是拖延时间(只在shutdown这里才可以用),而后面跟的是秒数
那么这条指令是不是感觉弱爆了呀,意思不就是10000秒后关机
shutdown -a
shutdown -a是什么,其实假如你学了一下那也是弱爆了,shutdown 只是为后面提供的(并不是说有都是)有点想你吃饭要筷子,但那不是重要的东西,而shutdown在这就是筷子,所以搞清楚后面的才是最重要的
-a 其实是取消关机程序,一般是单独的(一般不会过一会再取消),不过和上面一样,他也可以和-t在一起,但本人不推荐
全部说完了,该放公式了
@echo off
shutdown -[a\t\s] (后面还有其他的)
pause
===================================================
start的奇怪 变形,有没有发现我这里打开来的不是一个浏览器而是一个网站——http://www.baidu.com,其实这个变形是地球人的都能看懂,start 不单单是打开文件还可以打开网站
公式
@echo off
start 网址
pause
说道start我突然想起了一个东西,很多人都不能打开那个文件(加了路径的),所以大家暂时先用cd代替,我先研究一下
=====================================================
cls
cls其实就是个清屏指令,比如画面太乱就可以用它记得不要这样哦
@echo off
echo 你好
cls
pasue
这样你一说就会被清掉,公式
@echo off
(命令)
cls
pause
======================================================
旧词复习
set 设置
title 题目
if 判断
goto 去某个标记位
=======================================================
结束


复习小作业
=================================================
大家用上面教过的命令,写一个计算机(可以不支持小数)
提示:用set /a
=================================================


for 1
大家好,好久没更新了,今天我们来学习for
for 是一个循环,其实就是一个有限循环,我们用goto 做无限循环,但是他还做不到有限循环,所以今天我来给大家教大家有限循环——for
先上代码
=======================================代码上来
@echo off
for /l %%a in (1,1,3) do echo %%a
pause>nul
========================================
我们看到的结果是1 2 3
为什么呢
我们看看这个代码的结构吧
=======================================代码结构
前面的for /l 不用说了,就是基础basic,那 %%a in (1,1,3) do echo %%a
这是什么什么意思呢???
我们先看看 %%a
这里其实就是定义a,但是切记 是%%a不是%a%
我们再看看 in
其实没什么就是一个basic
我们看看(1,1,3)这里
(1,1,3)←最后一个数
↑ ↑
↑ 每次加多少
开始
好了
主要的部分做完了
我们来看看do
这里其实是做什么,你要循环没动作这怎么可以呢???
所以我们就echo %%a 就是显示a的值
但是有些人说 一行不够,我该怎么办
别着急
你可以用 () 这个其实在很多地方都可以
就是这样
%%a in (1,1,3) do (
内容
)
这样子
=============================================公式
公式
@echo off
for /l %%(一个字母) in (开始的数,每次加几,最后的数) do 东西
pause
==============================================
就这么多啦


好久没有更新了,我今天给大家带来 大于小于等于 的完整版
我们前面应该也讲过吧,但是我们还是复习一下,所以我们这次全讲了
========================================================
小于——lss
========================================================
小于是什么呢
我们数学里面的是>
可我们在编程里面是用>是不可以的
我们得用3个字母lss
先简介一下,我们先看代码
-------------------------------------------------------------------------------------------
@echo off
set a=0
if %a% lss 2 echo 小于&pause&exit
echo 大于
pause
exit
----------------------------------------------------------------------------------------------
这个代码包括了一个我们没学的东西,但是我们今天就只学lss
回到正题
上面的代码是什么
我来翻译一下
-------------------------------------------------------------------------------------------------
系统显示关闭
把a设为0
假如a 小于(重要)2 输出小于,暂停,退出
不是的话
输出大于
暂停
退出
----------------------------------------------------------------------------------------------------
大家应该可以理解吧,那么我们的lss其实就是编程里的小于号
下期再看 大于小于等于家族 的第二个人——equ
===============================================================


exit小扩展
代码
=============================
@echo off
echo 你好
pause
exit
echo 不好
pause>nul
==============================
这个代码执行一下,我们会发现这里不会显示不好,只会显示你好
这是因为中间加了exit,exit就是退出本程序,而这个都已经退出了
还怎么显示不好,这个代码比较简单,就先到这里


好久没更新了,今天,我来教大家如何在一行内解决多行的用处
我们得用到&了
先放代码
==========================================================
@echo off&echo 神不神奇?&pause>nul&exit
==========================================================
代码很短是不是,我们现在把代码的&去掉,换成空行,我们得到了这个代码
==========================================================
@echo off
echo 神不神奇
pause>nul
exit
===========================================================
这个代码的意思大家都懂
显示神不神奇, 然后再按一下就退出
但是当我们运行一开始的代码的时候,也可以实现,这是为什么呢???
原来&是可以继续运行的意思
翻译成中文就是 然后运行
也就是说可以在一行里搞很多东西,但是实际用处是什么呢???我来给大家
看一个代码
===========================================================
for /l %%a in (1,1,10) do echo %%a >%%a.txt&echo 加载成功&pause>nul&exit
===========================================================
这个代码就不用写do ()之类的,而且do很容易系统运行错误之类的,这个一般
不会
============================================================
今天就讲到这,&的更多用处等你自己探索
88


大家好,今天我教大家的是的>> 和 >
>> 和 >是什么,为了保密,我先放代码
=================================
echo a >a.txt
=================================
看看是不是做了一个a.txt,打开来看看
是不是了一个a在里面
好了,就是说,>是可以生成一个东西的
他可以把前面要显示的东西放到一个文件里面
但是,我们想在第一行输入a 第二行输入b
第三行输入c呢,来先试试
==================================
echo a >a.txt
echo b >a.txt
echo c >a.txt
===================================
来看看,发现生成的a.txt里面是c而不是a b c
原来>只能生成,并不能添加
那这个呢
===================================
echo a >a.txt
echo b >>a.txt
echo c >>a.txt
发现,这个就可以了
原来 >>是添加内容,不能生成,而>是生成
还有,注意一点,>会覆盖原本的文件,就是
比如你有一个a.txt里面是123,你再
echo a >a.txt
他就是a了
不会出错的,ok这讲就这么多,下次再见


大家好,今天我教大家的是的>> 和 >
>> 和 >是什么,为了保密,我先放代码
=================================
echo a >a.txt
=================================
看看是不是做了一个a.txt,打开来看看
是不是了一个a在里面
好了,就是说,>是可以生成一个东西的
他可以把前面要显示的东西放到一个文件里面
但是,我们想在第一行输入a 第二行输入b
第三行输入c呢,来先试试
==================================
echo a >a.txt
echo b >a.txt
echo c >a.txt
===================================
来看看,发现生成的a.txt里面是c而不是a b c
原来>只能生成,并不能添加
那这个呢
===================================
echo a >a.txt
echo b >>a.txt
echo c >>a.txt
发现,这个就可以了
原来 >>是添加内容,不能生成,而>是生成
还有,注意一点,>会覆盖原本的文件,就是
比如你有一个a.txt里面是123,你再
echo a >a.txt
他就是a了
不会出错的,ok这讲就这么多,下次再见


前面似乎漏了很多,那么我们来看看if 的更多吧,先上代码
================================================
@echo off
set /a a=%random%%%3
if %a%==1 (
echo 1
)else if %a%==2 (
echo 2
)else(
echo 3
)
=================================================
第一个是random,也就是从3里面随机一个数
第二个是判断 假如是1就显示1,假如是2就显
示2,其他的话就显示3(也没可能了)
=================================================
if 大家都知道判断,但是当我这个判断还没搞完,我想接着判断
怎么办呢?
那么就用else if了
else if 中文就是 其他判断 那么继续判断了
公式
if 条件 (
XXX
)else if 条件(
XXX
)
那么我最后只有一种可能了 ,我不想再写那么多,我们就可以用else
其实else可以是指其他,就是在上面判断(当然只是这一个判断节)
没有的那些的条件就怎么样
就是这样的
公式
if 条件 (
XXX
)else(
XXX
)
========================================================
好了,我今天先讲这么多,但是记住if还有比这更好的东西



作者: 我是来搞事的    时间: 2017-12-27 16:45
OK,居然在这一贴啊,谢谢。
作者: lintrainwy    时间: 2017-12-27 17:08
本帖最后由 comzhongwy 于 2017-12-27 17:09 编辑

目测:cd = come in directory (进入目录)
作者: rgy    时间: 2017-12-27 17:21
通俗易懂,正合我意,早就想学学了,谢谢!
作者: rgy    时间: 2017-12-27 17:21
通俗易懂,正合我意,早就想学学了,谢谢!
作者: lbw2007    时间: 2017-12-27 21:03
感谢分享!命令行由着他独特的魅力。
我小时候记得最清楚的命令就是:
  1. cd game
  2. play
复制代码

作者: ai20110304    时间: 2017-12-27 22:23
谢谢分享。
作者: promrhxq    时间: 2017-12-27 22:53
还有这样的东东,收藏了。。。。




欢迎光临 无忧启动论坛 (http://bbs.wuyou.net/) Powered by Discuz! X3.3