工具
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 | 清屏 |