当前位置:首页 > Windows程序 > 正文

深入浅出Windows BATCH

2021-05-26 Windows程序

1.什么是Windows BATCH

BATCH也就是批处理文件,有时简称为BAT,是Windows平台上的一种可运行脚本,与*nix(Linux和Unix)上的Shell脚本和其它的脚本(Perl,Python)等是一样的,实质上就是一个文本文件,可是用特定的软件去解释的时候,就变成了可运行脚本。在Windows上,可运行脚本就是BATCH文件,也叫批处理文件,这是从DOS时代遗留下来的名字,意思就是把非常多命令放到一起来运行。它的扩展名是*.bat,双击便可直接运行,在命令行(CMD或叫做命令提示符)以下也能够当作一个命令来运行。由于这是Windows支持的东西,所以仅仅能在Windows平台使用。(特殊情况除外,不要钻牛角尖,没意思的)。比方著名的Windows垃圾清理小工具就是一个BAT批处理文件。

2. 为什么须要BAT

归根结底是为了提高工作效率。这个解释起来比較费劲,由于在GUI大行其道的今天,再提命令行,非常多人会不熟悉,或者觉得这是倒退。可是众多关于提高工作效率的书籍都会提到命令行能够大大的提高效率,由于命令能够方便的直接写路径,而不用在文件浏览器中一层一层的打开,和命令行能够把命令组合起来,也就是把不同的命令组合起来来完毕一个任务,而不用打开多个GUI窗体来做(甚至非常多时候GUI窗体都是无法完毕的)。对于这点*nix的程序员们应该最有体会,真正的*nix高手是不会离开命令行的。他们的工作仅仅需打开一个Terminal(命令行),编辑用Vim,其它全都用命令行的工具来完毕,甚至他们都不用鼠标!
Windows的CMD没有*nix的Terminal那么强大,所以全然在其内做开发有点不切实际,尽管有非常多工具能够让CMD变得强大些,可是还是无法达到*nix那样的地步,由于它们从根本上就是走的不同的路线*nix是为了开发者准备的,而Windows是为了普通大众准备的。
再说的详细一点就是为了DRY和Automation,也就是说让计算机帮你完毕一些机械反复性的工作任务(对于DRY和Automation能够參考《The Productive Programmer》和《Pragmatic Programmer》)。由于BAT能够组合命令,所以某个操作须要超过一个命令,或者參数较多时,或者路径较长时,就能够把它写成BAT,变成一个简单的命令,一次二个可能没感觉,可是当天天都用时,就省去了大量的Typing。举个样例,比方我要常常性的在手机上抓取Tcpdump,然后查看,通常要用到例如以下的命令:
D:\>adb shell tcpdump -p -s 0 -i any -w /sdcard/capture.pcap D:\>adb pull /sdcard/capture.pcap .然后再用Wireshark去查看这个文件。假设一个一个的去敲的话,easy写错,通常要试几次才干成功。可是假设写一个BAT脚本的话:
::tcpdump.bat @echo off set dir=http://www.mamicode.com/sdcard set file=capture.pcap adb shell rm -r %dir%/%file% adb shell tcpdump -p -s 0 -i any -w %dir%/%file% @echo on ::gettcpdump.bat @echo off set dir=http://www.mamicode.com/sdcard set file=capture.pcap set wireshark="C:\Program Files\Wireshark\Wireshark.exe" del /q %file% adb remount adb pull %dir%/%file% . %wireshark% %file% @echo on第一个脚本tcpdump.bat是抓取,第二个脚本是查看所抓取的数据,我每次仅仅需执行这二个命令就能够轻松的查看:
D:\>tcpdump Press Ctrl-C to stop capturing D:\>gettcpdump之后Wireshark就会把所抓取的数据打开,直接看即可了。

3. 哪里能够用到BAT

不论什么须要反复做的事情都能够尝试用脚本来完毕。比方,每天的版本号更新,复制文件,每天都使用的命令等等。如前面所说的,仅仅要某些事情你超过第二次做,或者每天都做几十次,就应该考虑用BAT。或者,某些命令非常复杂,也要使用BAT,即使把二个简单命令合成一个BAT也是值得的。比方,调试的时候要查看手机内的数据,就能够用脚本来完毕:
::getmmsdb.bat @echo off set datadir=http://www.mamicode.com/data/data/com.android.providers.telephony/databases set mmsdb=mmssms.db del /q %mmsdb% adb remount adb pull %datadir%/%mmsdb% . sqlite3 %mmsdb% @echo on由于BAT中能够写不论什么能够在CMD命令行中执行的命令,另外,非常多应用程序也提供了命令版本号,比方WinRAR,假设你须要从某个地方拷贝东西并解压,就能够用BAT:
::copyversion.bat @echo off del /q stable.rar set winrar="C:\Program Files\WinRAR\WinRAR.exe" copy /y \\192.168.0.1\version\release\stable.rar . %winrar% x stable.rar @echo on无论怎么样,这都比手动去做要来的方便。
另外就是*nix上面的非常多有用命令行程序都有了Windows的版本号,比方Subversion,它有一个版本号就是专门用于命令行的,所以把所安装的软件与内置的一些命令组合起来,能够创造出非常强大的Automation的工具。
另一点就是第三方工具的拓展,Windows本身的内置命令非常少,可是有第三方的工具来拓展它比方PowerShell等,加之这些工具,能够让程序猿的工具箱更加的丰富和强大。
事实上,这里最关键的地方不在BAT,或者你是否会写这种脚本,而是在于你是否能意识到BAT脚本能够替代手工。能够读一读《The Productive Programmer》和《Pragmatic Programmer》来获取点灵感。

4. 怎样使用BAT

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/71293.html