接触批处理有一段时间了,总感觉 windows 批处理是有一定的用处的。尤其是当你需要在 windows 系统中做些批量有规律的事情 、或者一些固定的命令行操作。
你完全可以编辑一个批处理文件,将一系列烦人的命令化的操作变成简单的一次“双击”。这可能就是批处理的魅力之一吧~~
以下是一些批处理的简单应用,但是批出理能实现的功能远远不止这些!
1.新建一个空的文本文档
如果我不想这样,每次都要右键打开选择新建文本文档。而是轻轻双击完成新建。批处理会帮到你。
@echo off type nul>temple.txt start temple.txt
保存为 .bat 后缀的文件。双击运行试一试。
2.批量重命名
举个栗子,我想将一个目录下边的 txt 文档,命名为 m1.txt m2.txt ... 这样的格式 使用windows 默认的批量重命名?你得到的可能是:m (1).txt、m (2).txt... 那怎么办?
批处理其实最擅长这种事情了。
@echo off&setlocal ENABLEDELAYEDEXPANSION for %%I in (*.txt) do ( set var=%%I copy %%~nI.txt m!var! )
是不是很简短?
3.开启 win7 虚拟 wifi
- 建立虚拟 wifi (只需要建立一次):
@echo off :start set /p name=输入wifi名称: echo. set /p pwd1=输入wifi密码(8-63位): echo. set /p pwd2=再次输入wifi密码: echo. if %pwd1% equ %pwd2% ( goto usage ) else ( goto fail ) :fail echo 两次输入密码不一致 set /p temp=是否继续操作(y/n): if "%temp%" equ "y" ( goto start ) else ( goto end ) :usage netsh wlan stop hostednetwork > nul netsh wlan set hostednetwork mode=allow ssid=%name% key=%pwd1% > nul if %errorlevel% equ 0 ( goto usage1 ) else ( echo 输入密码无效或者网卡不支持&&goto end) :usage1 echo 设置wifi成功,请在本地连接中打开虚拟无线网络共享。开启成功后点击start_wifi.bat&&start img\sharenetwork.jpg :end echo 退出&pause&exit
- 手动打开网络共享(建立成功后需要手动将可用网络共享给 Microsoft Virtual WIFI 对应的网络,只需要设定一次):
- 启动虚拟 wifi (每次只需要单击就可以启动 wifi 了):
@echo off netsh wlan start hostednetwork>nul if %errorlevel% equ 0 echo 启动WIFI成功&&ping -w 100 127.0.0.1 > nul&&exit
- 关闭虚拟 wifi:
@echo off netsh wlan stop hostednetwork>nul if %errorlevel% equ 0 echo 关闭WIFI成功&&ping -w 100 127.0.0.1 >nul&&exit
- 删除虚拟 wifi:
@echo off netsh wlan set hostednetwork mode=disallow > nul if %errorlevel% equ 0 echo 删除WIFI成功&&ping -w 100 127.0.0.1 >nul
这是几个独立的文件,可以加做一个菜单就能管理虚拟 wifi 建立、开启、关闭、删除这些操作。
最后给大家看一个大虾写的代码吧,看过牛仔裤,哦不是里基努·里维斯演的<<黑客帝国>>吧,片头的『数码雨』是不是很炫很酷。说不定是批处理写的。
代码(运行一下,看看效果?):
::code by WANKOILZ 2008/5/28 @echo off&setlocal enabledelayedexpansion&color 02&mode con lines=30&title 黑客帝国数码雨 setlocal&set flag=0 :loop if %flag% lss 30 (set/a flag+=1) else (call :chang) for /l %%i in (1,1,26) do ( if defined a%%i (set/a a%%i=!random!%%2&set tmp=!a%%i! ) else (if !random! lss 1000 (set/a a%%i=!random!%%2&set tmp=!a%%i! ) else (set tmp= )) call set line%flag%=%%line!flag!%% !tmp! ) cls&for /l %%i in (%flag%,-1,1) do echo.!line%%i! for /l %%i in (1,1,100) do ver>nul ::ping /n 1 127.1>nul if !random! lss 500 (endlocal&setlocal&set flag=0) goto :loop :chang for /l %%i in (1,1,29) do ( set /a tmp=%%i+1 call set line%%i=%%line!tmp!%% ) set line%flag%=
效果图片: