工具
Notepad++(必須是Notepad++纔可以方便地編輯ANSI)
注:
- 以下全部的“我”請當成是你,每一步後都請你想一下你下一步會做什麼,這樣就能理解爲什麼這麼做,同時也有助於你更快地學會批處理命令。
- 以下所有命令都請親自逐個測試,這樣也有助於你更快地學會批處理命令。
- 即使你連cmd是什麼都不知道,也沒關係,從頭講起,講解很細,關鍵是註釋很細。
批處理文件
批處理文件的後綴名有兩種,分別是.bat和.com,它們的命令完全相同,只不過.bat是使用的批處理命令解釋程序,而.com是用的cmd.exe(Windows XP以上的“假dos)。
正文
NO.1
今天,我從某人在貼吧發的帖中知道了一個cmd命令[將圖片和壓縮包合併爲圖片]
copy /b 1.png+2.rar 3.png
。
我回帖:cmd是啥?怎麼打開?
那人回帖:“Windows”鍵 + “R”鍵調出運行,輸入“cmd”回車。
我試了試,命令果然有效。
NO.2
然後,我將命令改爲:copy /b 1.png+2.zip 3.png
試了一下,竟然也可以!
但是我懶,每次都cmd不煩嗎?
然後去百度搜索了一下,發現還有.bat這東東。
直接 copy + paste ,運行,成功。
NO.3
然後懶得重命名,又修改了命令:
copy /b *.png+*.zip 成品.png
。正如那句話:“懶惰是技術發展的動力”,哈哈。
NO.4
突然想加一些實用功能,然後想出來一個可能是最簡單的功能:時間查詢,這功能應該挺簡單。
我知道時間是time,日期是date,然後百度bat顯示命令和“按任意鍵繼續…”。
echo 現在是北京時間:
::輸出文字
::“::”後的內容不會執行,相當於註釋。
echo.
::輸出空行
echo %date% %time%
::時間
echo.
::輸出空行
copy /b *.png+*.zip 成品.png
::主功能命令
pause
::顯示“按任意鍵繼續…”
NO.5
但是,看着不順眼,輸出“2020/05/14 週四 10:26:45.19”,我想要帶文字的……
繼續百度。
set tm1=%time:~0,2%
set tm2=%time:~3,2%
set tm3=%time:~6,2%
set dt1=%date:~0,4%
set dt2=%date:~5,2%
set dt3=%date:~8,2%
::設定變量&賦值,格式爲“set”+“空格”+“變量”+“=”+“%值%”
::值的格式:“量”(如time)+“:”+“~”+“取的位數”+“,”+“值的位數”(自動補零使用)
echo.
::輸出空行
echo 現在是北京時間:
::輸出文字
echo.
::輸出空行
echo %dt1%年%dt2%月%dt3%日 %tm1%時%tm2%分%tm3%秒
::實現時間的顯示
copy /b *.png+*.zip 成品.png
::主功能命令
pause
::顯示“按任意鍵繼續…”
NO.6
讓它實現還原的功能豈不更好?然後↓。
set tm1=%time:~0,2%
set tm2=%time:~3,2%
set tm3=%time:~6,2%
set dt1=%date:~0,4%
set dt2=%date:~5,2%
set dt3=%date:~8,2%
echo.
echo 現在是北京時間:
echo.
echo %dt1%年%dt2%月%dt3%日 %tm1%時%tm2%分%tm3%秒
echo.
echo 合併請輸入“1”後回車執行。
echo.
echo 分解請輸入“2”後回車執行。
echo.
echo 退出請輸入“3”後回車執行。
:cho
set choice=
echo.
set /p choice=請選擇:
IF NOT "%choice%"=="" SET choice=%choice:~0,1%
::如果內容不爲 ↓ 的內容,則繼續執行。
if /i "%choice%"=="1" goto hecheng
if /i "%choice%"=="2" goto tiquyasuobao
if /i "%choice%"=="3" goto exit
echo 選擇無效,請重新輸入。
echo.
goto cho
::從“if”開始循環。
@echo off
echo.
:hecheng
::命令標籤
copy /b *.png+*.zip 成品.png
pause
goto menu
::結束
:tiquyasuobao
for /f "delims=" %%a in ('dir /a-d /b 欲分解.png') do (
ren "%%~a" "分解後.zip"
)
::更改文件名。
pause
goto menu
:exit
@ECHO OFF
color 0A
goto menu
NO.7
然後又有個問題,“欲分解.png”的文件名豈不是被修改了?分解怎能在原件上分解?
下面講述“對‘複印件’進行修改”
set tm1=%time:~0,2%
set tm2=%time:~3,2%
set tm3=%time:~6,2%
set dt1=%date:~0,4%
set dt2=%date:~5,2%
set dt3=%date:~8,2%
echo.
echo 現在是北京時間:
echo.
echo %dt1%年%dt2%月%dt3%日 %tm1%時%tm2%分%tm3%秒
echo.
echo 合併請輸入“1”後回車執行。
echo.
echo 分解請輸入“2”後回車執行。
echo.
echo 退出請輸入“3”後回車執行。
:cho
set choice=
echo.
set /p choice=請選擇:
IF NOT "%choice%"=="" SET choice=%choice:~0,1%
if /i "%choice%"=="1" goto hecheng
if /i "%choice%"=="2" goto tiquyasuobao
if /i "%choice%"=="3" goto exit
echo 選擇無效,請重新輸入。
echo.
goto cho
@echo off
echo.
:hecheng
copy /b *.png+*.zip 成品.png
pause
goto menu
:tiquyasuobao
copy .\欲分解.png .\分解後.png >nul 2>nul
::複製文件(相對路徑)
::在命令後面+[空格]+“>nul 2>nul”表示此命令的輸出不顯示。
for /f "delims=" %%a in ('dir /a-d /b 分解後.png') do (
ren "%%~a" "分解後.zip"
)
pause
goto menu
:exit
@ECHO OFF
color 0A
goto menu
NO.8
更改大小。
@echo off&setlocal enabledelayedexpansion
title 圖片壓縮包合成
mode con cols=50 lines=32
::cols,左右長度,也就是寬,單位爲“列”;lines,上下長度,也就是高,單位爲“行”。
set tm1=%time:~0,2%
set tm2=%time:~3,2%
set tm3=%time:~6,2%
set dt1=%date:~0,4%
set dt2=%date:~5,2%
set dt3=%date:~8,2%
echo.
echo 現在是北京時間:
echo.
echo %dt1%年%dt2%月%dt3%日 %tm1%時%tm2%分%tm3%秒
echo.
echo 合併請輸入“1”後回車執行。
echo.
echo 分解請輸入“2”後回車執行。
echo.
echo 退出請輸入“3”後回車執行。
:cho
set choice=
echo.
set /p choice=請選擇:
IF NOT "%choice%"=="" SET choice=%choice:~0,1%
if /i "%choice%"=="1" goto hecheng
if /i "%choice%"=="2" goto tiquyasuobao
if /i "%choice%"=="3" goto exit
echo 選擇無效,請重新輸入。
echo.
goto cho
@echo off
echo.
:hecheng
copy /b *.png+*.zip 成品.png
pause
goto menu
:tiquyasuobao
copy .\欲分解.png .\分解後.png >nul 2>nul
for /f "delims=" %%a in ('dir /a-d /b 分解後.png') do (
ren "%%~a" "分解後.zip"
)
pause
goto menu
:exit
@ECHO OFF
color 0A
goto menu
NO.9
最後來個標題。
@echo off&setlocal enabledelayedexpansion
title 圖片壓縮包合成
::標題
mode con cols=50 lines=32
echo.
echo 注:
echo.
echo 1. 請將所有文件單獨放置在同一個文件夾中。
echo.
echo 2. 批處理文件會自動識別.png和.zip文件。
echo.
echo 3. 合併後文件的文件名爲“成品.png”。
echo.
echo 4. 分解請將欲分解文件的文件名改爲“欲分解.png。
echo.
echo 5. 分解後文件的文件名爲“分解後.zip”。
echo.
echo 作者聯繫郵箱:
echo.
set tm1=%time:~0,2%
set tm2=%time:~3,2%
set tm3=%time:~6,2%
set dt1=%date:~0,4%
set dt2=%date:~5,2%
set dt3=%date:~8,2%
echo.
echo 現在是北京時間:
echo.
echo %dt1%年%dt2%月%dt3%日 %tm1%時%tm2%分%tm3%秒
echo.
echo 合併請輸入“1”後回車執行。
echo.
echo 分解請輸入“2”後回車執行。
echo.
echo 退出請輸入“3”後回車執行。
:cho
set choice=
echo.
set /p choice=請選擇:
IF NOT "%choice%"=="" SET choice=%choice:~0,1%
if /i "%choice%"=="1" goto hecheng
if /i "%choice%"=="2" goto tiquyasuobao
if /i "%choice%"=="3" goto exit
echo 選擇無效,請重新輸入。
echo.
goto cho
@echo off
echo.
:hecheng
copy /b *.png+*.zip 成品.png
pause
goto menu
:tiquyasuobao
copy .\欲分解.png .\分解後.png >nul 2>nul
for /f "delims=" %%a in ('dir /a-d /b 分解後.png') do (
ren "%%~a" "分解後.zip"
)
pause
goto menu
:exit
@ECHO OFF
color 0A
goto menu
結尾福利
符號和命令 | 功能和意義 |
---|---|
@ | 回顯屏蔽 |
>與>> | 重定向① |
< | 重定向② |
| |
管道符號 |
^ | 轉義符 |
&、&&、|| |
邏輯命令符 |
cd | 顯示當前目錄名或改變當前目錄。 |
md | 創建目錄。 |
rd | 刪除一個目錄。 |
dir | 顯示目錄中的文件和子目錄列表。 |
tree | 以圖形顯示驅動器或路徑的文件夾結構。 |
path | 爲可執行文件顯示或設置一個搜索路徑。 |
xcopy | 複製文件和目錄樹。 |
type | 顯示文本文件的內容。 |
copy | 將一份或多份文件複製到另一個位置。 |
del | 刪除一個或數個文件。 |
move | 移動文件並重命名文件和目錄。(Windows |
ren | 重命名文件。 |
replace | 替換文件。 |
attrib | 顯示或更改文件屬性。 |
find | 搜索字符串。 |
fc | 比較兩個文件或兩個文件集並顯示它們之間的不同 |
ping | 進行網絡連接測試、名稱解析 |
ftp | 文件傳輸 |
net | 網絡命令集及用戶管理 |
telnet | 遠程登陸 |
ipconfig | 顯示、修改TCP/IP設置 |
msg | 給用戶發送消息 |
arp | 顯示、修改局域網的IP地址-物理地址映射列表 |
at | 安排在特定日期和時間運行命令和程序 |
shutdown | 立即或定時關機或重啓 |
tskill | 結束進程 |
taskkill | 結束進程(比tskill高級,但WinXPHome版中無該命令) |
tasklist | 顯示進程列表(Windows/XP/Home/Edition中沒有) |
sc | 系統服務設置與控制 |
reg | 註冊表控制檯工具 |
powercfg | 控制系統上的電源設置 |
cls | 清屏 |