1. 程式人生 > >windows中bat指令碼編寫

windows中bat指令碼編寫

#前言
大家都知道python的便利,但是如果這臺計算機沒有裝python環境怎麼辦,這時為了做一些重複性的工作,就不得不用cmd來編寫一些簡單的指令碼。
希望對大家有點幫助,文末有一些實用的指令碼
###基本命令
可以使用windows+R調出執行框,輸入cmd

這裡寫圖片描述
也可以按住shitf 右鍵 有一個“在此處開啟命令視窗”,即可在當前路徑開啟cmd。否則開啟之後的路徑時當前使用者的路徑。
一些我感覺沒什麼用處的命令就不講了,講一些實用點的。

dir  	#檢視檔案/資料夾
msconfig #顯示開機啟動
ipconfig/all  #檢視本機各個網絡卡的ip地址
cd  <path> #進行目錄跳轉,但是不能跨磁碟,加上 /D 之後可以進行磁碟間的跳轉
md  <name> #新建資料夾
del	<name> #刪除檔案
echo  #列印字元
cls	   #清屏
dir | find "test" 
#查詢當前目錄下的檔案 '|'是一種管道機制,是為了將前一個命令的輸出作為後一個命令的輸入

提示:無論是linux還是windows路徑分隔符都可以用’/'

想了解更多?點這裡
###實用指令碼

for /F "tokens=*" %a in ('dir /A:-D /B') do move "%a" "%a.bak"
#別看只有一行,遍歷當前目錄,並重命名為.bak

如果儲存為.bat檔案,那麼這個指令碼應該這麼寫,將%a改為%%a.

for /F "tokens=*" %%a in ('dir /A:-D /B') do move "%%a" "%%a.bak"

bat拖拽,將下面程式碼儲存為bat檔案,將檔案拖拽到上面,即可顯示給檔案的絕對路徑,檔名全名,檔名,副檔名

@echo off
REM 判斷檔案型別
set "str1=%1"
set "str2=%~nx1"
set "str3=%~n1"
set "str4=%~x1"
REM 檔案絕對路徑 %1 檔案全名%~nx1 檔名 %~n1  副檔名 %~x1
echo "%str1%"
echo "%str2%"
echo "%str3%"
echo "%str4%"
pause

我之前遇到過這麼一個問題,接下來給出解決方案
描述:我有一個脫水印的bat,它是通過拖拽來進行工作的。但是每次只能一張一張的拖拽,而我的任務是要脫100張照片的水印,那麼我如何減少我的工作量,達到自動化的目的呢!?
其實拖拽的最終目的就是為了獲取該檔案的路徑,因此我們可以簡單的修改bat指令碼。
最後只能欲哭無淚,沒有有效的實現辦法。

@echo off
REM 獲取所有需要脫水印檔案的路徑
rem set "str1=%1"
call drag.bat %1
call drag.bat %2
call drag.bat %3
call drag.bat %4
call drag.bat %5
call drag.bat %6
call drag.bat %7
call drag.bat %8
call drag.bat %9
pause

只能是這樣了,%1~9分別代表著9個引數,因此我們一次最多隻能處理9個檔案。
可以說一下思路:利用for命令獲取需要脫水印的圖片的路徑,然後通過call傳參給相應的bat
利用%*獲取所有的引數(這樣就不會有數量的限制了),但是沒有辦法將這些引數分離開來,在bat中分離字串是很麻煩的!!
#總結
寫的有點水!-.-