windows批处理小脚本总结
批處理是Windows自帶的一個腳本引擎,語法簡潔、內(nèi)置一些功能強大的命令,并且可以與Windows上的其他軟件進行良好的通信。批處理能夠提供一系統(tǒng)自動化處理功能,大幅提高日常工作中的一些瑣碎重復事情的效率。
概念
批處理(Batch),顧名思義即是指批量處理。批處理是基于dos命令行,Windows默認內(nèi)置解釋器cmd.exe的腳本語言。批處理文件默認保存為.bat或.cmd。
批處理是基于Dos命令行,所以批處理是沒有GUI的,是運行在命令提示符終端(Command Prompt Terminal)上的, Command Prompt Terminal也被稱為Dos Console。
批處理文件默認的存儲格式為ANSI,即使用Windows系統(tǒng)默認的編碼格式。
解釋器
批處理大小寫不敏感。
批處理解釋器默認是讀取一行代碼,然后解釋執(zhí)行。
批處理解釋器如果讀取到圓括號“(”,則認為直到下一個對應的“)”為結(jié)束。此方式可以讓批處理解釋器一次解釋執(zhí)行多條命令。
CTRL+C退出當前正在執(zhí)行的批處理。
常用小腳本
拷貝文件
@echo on ::遠端目錄位置 set remote_dir=\\192.168.1.2\share\log ::解析日期 set dateStr=%date:~0,10%set year=%date:~0,4%set month=%date:~5,2%set day=%date:~8,2%::得到當前app的log文件名 set app_log= app.%year%-%month%-%day%.log ::得到UI的log文件名 set ui_log= ui.%year%-%month%-%day%.log ::得到底層庫的log文件名 set base_log= base\\baseModule.%year%.%month%.%day%.log::得到分 set timeMin=%time:~3,2% ::得到秒 set timeSec=%time:~6,2%::拷貝日志文件xcopy %app_log% %remote_dir% /D/Y xcopy %ui_log% %remote_dir% /D/Y xcopy %base_log% %remote_dir% /D/Ypause查找未占用的ip
echo off set aa= 192.168.21:: 注意=號前面不能有空格 set out_file= out_exist.txt set out_file_1= out_not_exist.txtfor /l %%i in (1,20,100) do ( echo ping %aa%.%%i ping -n 1 %aa%.%%i | findstr "TTL" >nul && echo %aa%.%%i >> %out_file% || ( echo can not reached && echo %aa%.%%i >> %out_file_1% ) ):: 這是注釋 rem "這是注釋"echo "-------------" :: 這是換行 @echo. echo ping %out_file% done!啟動程序?
@echo off ::當我想運行位于“D:/draw/”的“photoshop.exe”使,應該使用以下命令: start "" "D:/draw/photoshop.exe" ::如果想讓程序以最大化窗口運行,則使用以下命令: ::表示以最大化窗口運行程序 start /max "" "D:/draw/photoshop.exe" taskkill /f /im explorer.exe start "" "C:\WINDOWS\explorer.exe" exit修改系統(tǒng)的dump文件目錄?
@echo off echo opening system autodump... reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps" reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps" /v DumpFolder /t REG_EXPAND_SZ /d "C:\Dumps" /f reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps" /v DumpType /t REG_DWORD /d 2 /f reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps" /v DumpCount /t REG_DWORD /d 10 /f echo has open pause @echo on根據(jù)條件執(zhí)行某命令?
@echo offif exist "..\mycmd\backup.exe" (echo "backup.exe is exist." ) ^ else (echo "backup.exe is not exist. Quit!"pause )if exist "..\conf\init.data" (echo "init.data is exist." ) ^ else (echo "init.data is not exist. Quit!"pause )start cmd /c ""%~dp0..\mycmd\backup.exe" -f %~dp0..\conf\init.data" pause@echo on執(zhí)行js或VB腳本的mshta命令?
echo off echo "-------------" mshta "javascript:var a=1; alert(a); close();" mshta "vbscript:msgbox("content") & msgbox("1234") & window.close" mshta vbscript:window.execScript("alert('hello world!');","javascript") mshta javascript:window.execScript("msgBox('hello world!'):window.close","vbs") @echo. echo done!bat腳本后臺執(zhí)行
@echo off if "%1" == "h" goto begin mshta vbscript:createobject("wscript.shell").run("%~nx0 h",0)(window.close)&&exit :begin ::下面是你自己的代碼?后臺監(jiān)控某一進程
@echo off if "%1" == "h" gotobegin mshta vbscript:createobject("wscript.shell").run("%~nx0 h",0)(window.close)&&exit :begin ::循環(huán)后臺執(zhí)行 :start ping -n 5 127.0.0.1>nul tasklist|findstr "chrome.exe" if %errorlevel% == 0 ( echo "is running" >>aa.log ) else ( echo "is not running" >>aa.log ) goto starterrorlevel程序返回碼。
echo %errorlevel%每個命令運行結(jié)束,可以用這個命令行格式查看返回碼用于判斷剛才的命令是否執(zhí)行成功默認值為0,一般命令執(zhí)行出錯會設 errorlevel 為1。
?開啟關閉和加入防火墻
@echo off setlocal EnableExpansion color 3e title Add MyService::開啟/關閉公共防火墻 netsh advfirewall set publicprofile state on netsh advfirewall set publicprofile state offPUSHD %~DP0 & cd /d "%~dp0" %1 %2 mshta vbscript:createobject("shell.application").shellexecute("%~s0","goto :runas","","runas",1)(window.close)&goto :eof :runasnetsh advfirewall firewall delete rule name= "myService" program="C:\Program Files (x86)\Me\MyService.exe" netsh advfirewall firewall add rule name="myService" dir=in action=allow program="C:\Program Files (x86)\Me\MyService.exe" enable=yes netsh advfirewall firewall add rule name="myService" dir=out action=allow program="C:\Program Files (x86)\Me\myService.exe" enable=yesecho myService防火墻例外添加成功 pause >nul exit帶參數(shù)執(zhí)行的創(chuàng)建目錄和拷貝文件
@echo offIF "%2"=="" (set MYDIR=.\myDir\) ELSE (set MYDIR=%2)IF ""=="%1" (set MYSOURCEDIR=.\) ELSE (set MYSOURCEDIR=%1) echo Creating \Lib folder mkdir %MYDIR% >nul 2>nul mkdir %MYDIR%\Bin >nul 2>nul mkdir %MYDIR%\Bin\x64 >nul 2>nulxcopy /v /Y "%MYSOURCEDIR%\PRJ\Release No AirPcap\x86\wpcap.dll" %MYDIR%\Bin\ >nul xcopy /v /Y "%MYSOURCEDIR%\PRJ\Release No AirPcap\x64\wpcap.dll" %MYDIR%\Bin\x64 >nul xcopy /v /Y %MYSOURCEDIR%\Dll\Project\Release\x86\packet.dll %MYDIR%\Bin\ >nul xcopy /v /Y %MYSOURCEDIR%\Dll\Project\Release\x64\packet.dll %MYDIR%\Bin\x64 >nulecho Folder \Bin created successfullyset MYDIR= set MYSOURCEDIR=相關解釋:
引用變量用%var%,調(diào)用程序外部參數(shù)用%1 至%9 等等。
%0 %1 %2 %3 %4 %5 %6 %7 %8 %9 %為命令行傳遞給批處理的參數(shù)。
%0 批處理文件本身,包括完整的路徑和擴展名。
%1 第一個參數(shù)。
@符號是取消本行的輸入顯示。
>nul 是屏蔽操作成功顯示的信息,但是出錯還是會顯示(即1>nul)。
2>nul 是屏蔽操作失敗顯示的信息,如果成功依舊顯示。
運行以下代碼可以查看各個參數(shù)的含義:
@echo off echo %1 echo %~1 echo %0 echo %~f0 echo %~d0 echo %~p0 echo %~n0 echo %~x0 echo %~s0 echo %~a0 echo %~t0 echo %~z0運行cmd,輸入 c:\test.bat “/a” /b /c /d可以看出每個參數(shù)的含意。輸出為:
相關資源
BAT批處理基本命令總結(jié)_whik1194的博客-CSDN博客
Windows 批處理(bat)語法大全_無痕幽雨的博客-CSDN博客_bat 語法
批處理簡明教程及示例_-飛鶴-的博客-CSDN博客_批處理
BAT批處理命令詳解_Mr雪候鳥的博客-CSDN博客_批處理 /b
【bat批處理腳本命令】bat腳本命令的基本使用(保姆級圖文+實現(xiàn)代碼)_bat 換行_發(fā)現(xiàn)你走遠了的博客-CSDN博客
mshta命令用法示例_DOS/BAT_腳本之家
windows 小腳本和命令行總結(jié)(方便學習和使用)_An_angel_of_joy的博客-CSDN博客
【最全的】BAT 批處理腳本教程_大漁歌_的博客-CSDN博客_bat教程
.bat批處理(八):各種形式的變量%0、%i、%%i、var、%var%、!var!的含義和區(qū)別_AlbertS的博客-CSDN博客_%%i?批處理簡明教程_蝸牛窩的博客-CSDN博客
?批處理教程_Kelvin_Ngan的博客-CSDN博客_批處理 %%j
讓bat文件后臺運行 - Bit5566 - 博客園
批處理-從零開始(一)_Jyan_29的博客-CSDN博客_批處理
Windows 批處理(bat)語法大全、BAT批處理基本命令總結(jié)_window bat_南北極之間的博客-CSDN博客
總結(jié)
以上是生活随笔為你收集整理的windows批处理小脚本总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 6-7 Orthogonal Polyn
- 下一篇: 电路分析基础