`

Windows 命令行基础(下)

阅读更多
 
   

5. 批处理文件简介

  使用批处理文件(亦称批处理程序或脚本),可以简化日常或重复性任务。批处理文件是纯文本文件,它包含一条或多条命令,其文件扩展名为 .bat 或 .cmd 。在命令提示符下键入批处理文件的名称,Cmd.exe 就会按照该文件中各个命令出现的顺序来逐个运行它们。所以批处理文件的特点是:一次建立,多次运行,适合进行重复性任务。在 DOS 中只能使用 .bat 的批处理文件。

  可以在批处理文件中包含任何命令。某些命令,比如 for、goto 和 if 命令等,它们允许你对批处理文件中的命令作条件流程控制。例如,if 命令根据条件语句的结果来执行命令。还有些只能在批处理文件中执行的命令。

  有关批处理文件的详细信息,请参考以下命令的帮助页。

表5-1 命令 功能
rem 添加一段注释
echo 显示信息,或将命令回显打开或关上
if 执行批处理程序中的条件性处理
for 为一套文件中的每个文件运行一个指定的命令
goto 跳转到批处理程序中某个标明的行执行
pause 暂停批文件的处理并显示消息
call 从一个批处理程序调用另一个批处理程序,而不终止父批处理程序
pushd 保存当前目录,然后对其进行更改
popd 还原 pushd 保存的当前目录的上一个值
shift 更换批文件中可替换参数的位置
setlocal 开始批文件中环境更改的本地化
endlocal 结束批文件中环境更改的本地化
title 设置 cmd.exe 会话的窗口标题
start 启动另一个窗口来运行指定的程序或命令

6. 几个应用实例

6.1 批量改名

  今天的《xxxHoLic》漫画更新到了 158 话,我下载后,得到如下文件:(加粗为用户输入的内容)

C:\>d:(输入 D: 以切换到 D 盘,否则下一个 cd 命令无效)

D:\>cd D:\xxxHoLic\vol14\158

D:\xxxHoLic\vol14\158>dir /b
XXXholic158_001.jpg
XXXholic158_002-003.jpg
XXXholic158_004.JPG
XXXholic158_005.JPG
XXXholic158_006.jpg
XXXholic158_007.JPG
XXXholic158_008.jpg
XXXholic158_009.jpg
XXXholic158_010.JPG
XXXholic158_011.JPG
XXXholic158_012.jpg
XXXholic158_013.JPG
XXXholic158_014.JPG
XXXholic158_015.JPG
XXXholic158_016.jpg
XXXholic158_017.jpg
XXXholic158_018.JPG
XXXholic158_019.jpg
XXXholic158_020.JPG

  我想将它们改名为 01.jpg ~ 20.jpg 用命令该怎样做呢?这里只提供一种可能的办法,实际上还有很多种方法,大家可触类旁通。

D:\xxxHoLic\vol14\158>for %i in (01,04,05,06,07,08,09) do ren XXXholic158_0%i.jp
g %i.jpg(for 命令中,%i 变量遍历小括号中的内容)

D:\xxxHoLic\vol14\158>ren XXXholic158_001.jpg 01.jpg
……(命令回显会显示实际执行的命令,省略输出若干)
D:\xxxHoLic\vol14\158>ren XXXholic158_009.jpg 09.jpg

D:\xxxHoLic\vol14\158>for /L %i in (10,1,20) do ren XXXholic158_0%i.jpg %i.jpg

D:\xxxHoLic\vol14\158>ren XXXholic158_010.jpg 10.jpg
(省略输出若干)
D:\xxxHoLic\vol14\158>ren XXXholic158_020.jpg 20.jpg

D:\xxxHoLic\vol14\158>ren XXXholic158_002-003.jpg 02-03.jpg(最后手动改名)

D:\xxxHoLic\vol14\158>

  以上主要通过 for...in...do 结构及 /L 参数,使得本来要 19 次的改名操作只用两个 for 命令及一个 ren 就搞定。for 命令详细用法请参考其帮助页。

6.2 批量“粉碎”文件

  接着刚才的例子,如果我想用 4.2 节所述的方法“粉碎”当前文件夹下的所有 jpeg 文件,我该怎样做?

D:\xxxHoLic\vol14\158>for %i in (*.jpg) do copy nul %i /y

  这里使用 /y 来防止 copy 的覆盖前提示。

6.3 清理 Windows 临时文件夹 %tmp%

  “%tmp%”这个环境变量保存了 Windows 临时文件夹的位置,通常这个文件夹是 C:\Documents and Settings\用户名\Local Settings\Temp 。某些程序(典型如安装程序,解压缩软件)运行过程中产生的临时文件会存放于此,总之,是个堆放杂物的地方,其中文件一般可全部删除。在“我的电脑”的 “地址栏”(若找不到地址栏,“查看”->“工具栏”->“地址栏”)中输入“%tmp%”,然后回车,看看你的临时文件夹有多少东西。

  下面讨论清理。可能每隔一段时间就需要清理临时文件夹,因此我们采用批处理文件。以下为 CleanTmp.cmd 文件的内容。

第一种方案:全部删除

@echo off
rem 命令前加“@”会不让该命令显示出来,而“echo off”的作用是关闭整个
rem 脚本的命令回显。若不懂,请注释掉第一行(在最前面加“rem ”)再试。
rem CleanTmp.cmd : 清理 Windows 临时文件夹
rem Author : Henix<http://hi.baidu.com/shell32>
echo Cleaning...
rd /s /q %tmp%
md %tmp%
echo Done.
pause

也许你希望留下一些文件,比如 *.log ,那也可以用第二种方案:删除部分文件

rem CleanTmp.cmd : 清理 Windows 临时文件夹
rem Author : Henix<http://hi.baidu.com/shell32>
del %tmp%\*.tmp /q
del %tmp%\*.wmv /q
del %tmp%\*.xml /q
rem 也可以添加更多,你的临时文件夹中经常出现的,而你又不想要的文件
pause

  将以上内容保存为 CleanTmp.cmd ,放在桌面(或其他你方便的地方),以后你只需双击这个 CleanTmp.cmd 就可清理临时文件夹。

6.4 优化服务配置:svc2kxp.cmd

  如果说以上这些脚本只是我个人举的教学样例,只是些小打小闹的话,那下面这个德国人写的脚本会让你见识到什么是真正的脚本应用,以及真正的脚本编程。

  在“开始”->“运行”中输入“services.msc”,会显示你的计算机当前的服务配置。怎样配置这些服务以达到最优化,是网上很 多论坛讨论的话题。这里并不讨论怎样配置服务,因为有 svc2kxp.cmd 帮我们配置。该软件的实际使用效果我不清楚,只是推荐它来学习脚本编程。

  官方网站:http://www.ntsvcfg.de/ntsvcfg_eng.html(英文)

  看别人写的脚本也是一种有效的学习方法。这个脚本注释丰富,大量使用了 if...goto 、reg 、文件操作等,看完后定会让你受益匪浅(反正我是没法看完的啦)。

6.5 下载一系列图片:for + wget

  有时我们在网上看到一系列图片,想把它们都下载下来,怎么办?首先要取得图片的地址,只有当图片的地址有一定规律性时,才能使用此法下载:在图 片上点右键->“属性”,然后复制“地址”一栏的内容。假设要下载的图片地址很有规律,恰为 http://www.example.com/ 下的 1.jpg - 100.jpg 。

  网上有很多命令行小程序,可以增强命令行的功能。这里使用 GNU 的 GNU Wget ,该程序可通过 HTTP 、HTTPS 、FTP 协议下载文件。

  官方网站:http://www.gnu.org/software/wget/ 。Windows 版下载地址:http://www.christopherlewis.com/WGet/WGetFiles.htm

  一般下载最新的稳定(stable)版本,解压后进入 wget 的安装目录,输入:

D:\soft\wget>md E:\pic (建立目录用来存放下载的图片)

D:\soft\wget>for /L %i in (1,1,100) do wget -P E:\pic http://www.example.com/
%i.jpg
(注意,wget 中的参数以“-”开头,而不是“/”,而且严格区分大小写。这是 Unix 风格的
参数写法。)
(-P 指定文件的存放位置。wget 的其他功能请参考其帮助手册页)

7. 参考文献

  [1] Paul Love, Joe Merlino 等:《Unix 入门经典》,张楚雄、许文昭译,清华大学出版社,2006
[2] 张钟澍、杨佛章编著:《电脑打字与文书编辑(修订本)》,成都科技大学出版社,1993
[3] 命令行参考 A-Z :http://technet2.microsoft.com/WindowsServer/zh-CHS/Library/552ed70a-208d-48c4-8da8-2e27b530eac72052.mspx?mfr=true
[4] 妙用PRN文件,实现文档换机打印:http://blog.sina.com.cn/s/blog_46dac66f01000a8m.html
[5] PRN文件要如何打印到打印机?:http://www.people.com.cn/GB/it/53/305/20010109/374542.html
[6] PrnPrint :http://www.magma.ca/~russrite/PrnPrint/index.html

附录1:常用 DOS 命令一览

(一)内部命令

1. CD(全程 CHDIR ,显示当前目录的名称或将其更改)
格式:CD [路径名]
2. CLS(清除屏幕)
3. COPY(将至少一个文件复制到另一个位置)
格式:COPY [/V] [/A | /B] 文件1 [+ 文件2 [+ ...]] 目标文件
4. DATE(显示或设置日期)
5. DEL(或用 ERASE ,删除至少一个文件)
6. DIR(显示一个目录中的文件和子目录)
格式:DIR [盘符][路径][文件名] [/B] [/P] [/W]
7. MD(全称 MKDIR ,创建目录)
格式:MD [路径]
8. RD(全称 RMDIR ,删除目录)
格式:RD [路径]
说明:只能删除空目录
9. REN(全称 RENAME ,重命名文件)
格式:REN [盘符][路径]旧文件名 新文件名
说明:不能为目标文件指定新的驱动器或路径
10. TIME(显示或设置系统时间)
11. TYPE(显示文本文件的内容)
格式:TYPE [盘符][路径]文件名
12. VER(显示 DOS 版本)
13. VOL(显示磁盘卷标和序列号)
格式:VOL [盘符]

(二)外部命令

1. ATTRIB(显示或更改文件属性)
格式:ATTRIB [+R | -R] [+A | -A] [+S | -S] [+H | -H] [[盘符][路径]文件名] [/S]
说明:+ :设置属性,- :清除属性,R :只读文件属性,A :存档文件属性,S :系统文件属性,H :隐藏文件属性。/S :处理当前文件夹及其子文件夹中的匹配文件。仅用 ATTRIB 会列出当前目录下全部文件及其属性。
2. CHKDSK(检查磁盘并显示状态报告)
格式:CHKDSK [盘符[[路径]文件名]]] [/F] [/V]
说明:不指明文件,则对整个盘进行操作,/F 为修复磁盘上的错误,/V 为显示磁盘上每个文件的完整路径和名称。
3. EDIT(EDIT 为一菜单式文本编辑软件)
4. FORMAT(格式化磁盘以供 DOS 使用)
格式:FORMAT 盘符 [/V:卷标] [/Q] [/S]
说明:高级格式化会清除全部文件,/V 指定卷标,/Q 快速格式化,/S 为格式化成 DOS 系统盘(相当于 FORMAT 后再 SYS)。
5. SYS(传输系统文件)
格式:SYS [盘符]
说明:制作可启动的 DOS 系统盘。
6. XCOPY(复制文件和目录树)
格式:XCOPY 源文件 [目标文件] [/P] [/S [/E]] [/V]
说明:/P 创建每个目标文件前提示,/S 复制目录和子目录,除了空的,/E 复制目录和子目录,包括空的,/V 验证每个新文件。

附录2:Windows 中的一些有用的命令

  下表列出了 Windows 中的一些有用的命令,使用方法请参考其帮助页。

1. 文件系统命令 命令 说明
assoc 显示或修改文件扩展名关联。如果在没有参数的情况下使用,则 assoc 将显示所有当前文件扩展名关联的列表。
attrib 显示、设置或删除指派给文件或目录的只读、存档、系统以及隐藏属性。如果在不含参数的情况下使用,则 attrib 命令会显示当前目录中所有文件的属性。
convert 将文件分配表 (FAT) 和 FAT32 卷转换为 NTFS 文件系统,而现有的文件和文件夹完好无损。被转换为 NTFS 文件系统的卷无法再转换回 FAT 或 FAT32。
defrag 定位并整理本地卷上的零碎启动文件、数据文件和文件夹。
diskpart 管理磁盘、分区或卷,可新建、删除等。
expand 展开一个或多个压缩文件(.cab 格式)。
fc 比较两个文件并显示它们之间的差异。
for 对一组文件中的每个文件运行指定的命令。
fsutil Fsutil 是一个命令行实用程序,可用于执行多种与文件分配表 (FAT) 和 NTFS 文件系统相关的任务,例如管理重分析点、管理稀疏文件或拆卸卷。由于 fsutil 的功能非常强大,因而只有具有 Windows XP 或 Windows Server 2003 的完整知识的高级用户才应使用它。此外,必须作为管理员或 Administrator 组的成员登录,才能使用 fsutil。
ftype 显示或者修改在文件名扩展关联中使用的文件类型。使用不带参数的 ftype 显示已定义打开命令字符串的文件类型。
move 将一个或多个文件从一个目录移动到指定的目录。
subst 将路径与驱动器号关联。如果使用时不带参数,subst 将显示有效的虚拟驱动器的名称。
tree 以图形的方式显示路径或驱动器中磁盘的目录结构。
2. 网络相关命令 命令 说明
arp 显 示和修改“地址解析协议 (ARP)”缓存中的项目。ARP 缓存中包含一个或多个表,它们用于存储 IP 地址及其经过解析的以太网或令牌环物理地址。计算机上安装的每一个以太网或令牌环网络适配器都有自己单独的表。如果在没有参数的情况下使用,则 arp 命令将显示帮助信息。
ftp 将文件传输到运行文件传输协议 (FTP) 服务器服务(如 Internet 信息服务)的计算机,或从这样的计算机传输文件。通过处理 ASCII 文本文件,可以交互的方式或以批处理模式使用 Ftp。
hostname 显示计算机全名中的主机名称部分。
ipconfig 显示所有当前的 TCP/IP 网络配置值、刷新动态主机配置协议 (DHCP) 和域名系统 (DNS) 设置。使用不带参数的 ipconfig 可以显示所有适配器的 IPv6 地址或 IPv4 地址、子网掩码和默认网关。
net 许 多服务使用的网络命令都以词 net 开头,这些 net 命令有:net [ accounts | computer | config | continue | file | group | help | helpmsg | localgroup | name | pause | print | send | session | share | start | statistics | stop | time | use | user | view ]
netstat 显示活动的 TCP 连接、计算机侦听的端口、以太网统计信息、IP 路由表、IPv4 统计信息(对于 IP、ICMP、TCP 和 UDP 协议)以及 IPv6 统计信息(对于 IPv6、ICMPv6、通过 IPv6 的 TCP 以及通过 IPv6 的 UDP 协议)。使用时如果不带参数,netstat 显示活动的 TCP 连接。
ping 通过发送 Internet 控制消息协议 (ICMP) 回响请求消息来验证与另一台 TCP/IP 计算机的 IP 级连接。对应的回响应答消息的接收情况将和往返过程的时间一起显示出来。Ping 是用于检测网络连接性、可到达性和名称解析的疑难问题的主要 TCP/IP 命令。如果不带参数,ping 将显示帮助。
telnet 通过 TELNET 协议登陆远程计算机。
tftp 向运行日常文件传输协议 (TFTP) 服务或守护程序的远程计算机(尤其是运行 UNIX 的计算机)传输或接收文件。如果使用时不带参数,tftp 将显示帮助。
tracert 通 过递增“存在时间 (TTL)”字段的值将“Internet 控制消息协议 (ICMP) 回显请求”或 ICMPv6 消息发送给目标可确定到达目标的路径。路径将以列表形式显示,其中包含源主机与目标主机之间路径中路由器的近侧路由器接口。近侧接口是距离路径中的发送主 机最近的路由器的接口。如果使用时不带参数,tracert 显示帮助。
3. 系统管理命令 命令 说明
at 计划在指定时间和日期在计算机上运行命令和程序。at 命令只能在“计划”服务运行时使用。如果在没有参数的情况下使用,则 at 命令将列出已计划的命令。
exit 退出当前批处理脚本或 Cmd.exe 程序(即命令解释程序)并返回到启动 Cmd.exe 的程序。
help 提供关于系统命令的联机信息(即非网络命令)。使用不带参数的 help 列举并简要描述每个系统命令。
reg 对注册表子项信息和注册表项值中的值执行添加、更改、导入、导出以及其他操作。
regsvr32 在注册表中作为命令组件注册 .dll 文件。
set 显示、设置或删除环境变量。如果没有任何参数,set 命令将显示当前环境设置。
taskkill 结束一个或多个任务或进程。可以根据进程 ID 或图像名来结束进程。
tasklist 显示本地或远程机器上当前运行的进程列表。

附录3:相关资源

分享到:
评论

相关推荐

    Windows命令行基础操作代码

    Windows命令行基础操作代码

    windows_命令行操作大全

    windows_命令行操作基础知识,很全面,适合初学者.

    Windows 7脚本编程和命令行工具指南

    PDF文档 带书签 ...第三部分介绍Windows PowerShell的基础知识、编程和应用,掌握管理Windows工作站、服务器和应用程序的快捷方法。 本书内容丰富,实例众多,适合Windows高级用户、系统管理员、开发人员参考。

    windows命令行基础

    cmd命令行大全,比较全的命令行指令,适合初学,入门的不错的资料。

    锐捷网络基础+命令行大全,背会刷题即可过

    资源为笔记,还有一些其他题的资源可以私信,免费 2021的

    第10节-DOS基础命令二.mp4

    大飞哥网络安全第一阶段课程,适合0基础/初学者体系化学习,也适合老手巩固基础观看,希望大家在学习过程中理解技术原理,为更深层次的防御攻击等学习打好基础。最好别用mac,好多工具不兼容。

    windows批处理脚本教程

    windows批处理脚本教程,从最基础的学起~~~

    命令行入门指南

    提供windows下使用命令行的基础入门 有效提高你的工作效率

    Windows编程基础--窗体篇.rar_WinMain_Windows编程_pcm_winapi_winbase.h

    Windows编程基础--窗体篇  现在Windows已经成为世界上使用最广泛的操作系统,这使得学习Windows编程变得十分重要.和学习其他 编程语言一样,我们也从一个最简单的例子开始学习Windows编程.这个例子将建立一个...

    windows系统基础.rar

    我这个文件里面包含了,windows系统的各种操作的基础知识, 还有CMD命令行, 主要说的Windows的操作,都是TXT文件, 很多大牛都不一定知道的知识

    win3.1经典微软WINDOWS3.1老系统(程序员必读)

    为命令行式操作系统编写的MS-DOS下的程序可以在窗口中运行,使得程序可以在多任务基础上可以使用使用,虽然这个版本只是为家庭用户设计的,很多游戏和娱乐程序仍然要求DOS存取。 MS-DOS的文件管理程序被基于图标的...

    Windows PowerShell 2.0 for xp下载

    Windows PowerShell 建立在 .NET Framework 的基础上,IT 专业人员可通过命令或脚本来治理计算机,从而通过系统自动化来提高工作效率。 Windows PowerShell 包括: * 129 个命令行工具(称为“cmdlet”),用于执行...

    Windows Powershell和Windows Terminal的区别

    UNIX系统一直有强大的壳程序(shell),Windows PowerShell的诞生就是要提供功能相当于UNIX系统的命令行壳程序(比如bash)。 PowerShell兼容原来的cmd,命令统一使用cmdlet命令格式(动词-名词)。 基础认识参见...

    windows命令行中java和javac、javap使用详解(java编译命令)

    最近重新复习了一下java基础,这里便讲讲对于一个类文件如何编译、运行、反编译的。也让自己加深一下印象

    windowsnt 技术内幕

    理解引导分区与系统分区 NTFS简介 理解NFTS分区中的多回收站 在NT中考虑FAT文件系统特征 将NT计算机移植到其他域 理解NT授予权 Windows NT安装类型简介 为3张安装盘创建备份盘 理解RISC体系结构下的Windows NT安装 ...

    精通WINDOWS SERVER 2008组网技术1

    《精通Windows Server 2008组网技术》由全球首席Windows权威专家Mark Minasi编写,是学习组网基础的经典入门之作,旨在引导普通的网络用户转变为具有实际动手能力的网络系统管理员。书中全面深入地介绍了组网的基本...

    使用 Microsoft 365 部署 Windows 10

    Windows 10 基础结构要求 批量激活 [客户端] 规划批量激活 [客户端] 使用密钥管理服务激活 [客户端] 使用基于 Active Directory 的激活执行激活 [客户端] 激活运行 Windows10 的客户端 监控激活 [客户端] ...

    windows3.2简体中文版

    为命令行式操作系统编写的MS-DOS下的程序可以在窗口中运行,使得程序可以在多任务基础上可以使用,虽然这个版本只是为家庭用户设计的,很多游戏和娱乐程序仍然要求DOS存取。  Windows 3.x系列是Windows在桌面PC...

    Windows程序设计实验四.doc

    1)了解Windows环境下网络编程基础知识; 2)熟悉基于TCP方式的网络程序运行方式; 3)掌握基于TCP方式的网络程序编写方法。 二、 实验内容 建立两个工程来分别编写发送端程序和服务端程序; 都以命令行参数作为...

Global site tag (gtag.js) - Google Analytics