批处理命令三分钟入门

工具

Notepad++(必须是Notepad++才可以方便地编辑ANSI)
注:

  1. 以下全部的“我”请当成是你,每一步后都请你想一下你下一步会做什么,这样就能理解为什么这么做,同时也有助于你更快地学会批处理命令。
  2. 以下所有命令都请亲自逐个测试,这样也有助于你更快地学会批处理命令。
  3. 即使你连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 清屏
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章