![CMD/BATCH 使用的具体案例](https://linux22.com/image/1391152/CMD%2FBATCH%20%E4%BD%BF%E7%94%A8%E7%9A%84%E5%85%B7%E4%BD%93%E6%A1%88%E4%BE%8B.png)
请原谅我的不专业。我对命令行没有太多经验。
从我的搜索来看,使用 CMD(*) 的主要原因是自动化。不过,我还没有找到具体的例子。大多数例子要么是人为的例子,要么是不需要自动化的简单案例。
因此,我的问题是 - 在现实世界中,CMD 和批处理文件用于哪些操作的示例?(如下所示 - 除了个人偏好和是没有 GUI。我并不是在寻找脚本本身,只是在寻找它的目标。
*除了个人偏好或没有 GUI 的情况之外。
答案1
批处理文件具有与任何其他脚本工具相同的优点,它们使执行重复(有时复杂,有时无聊)的任务变得简单。
几个月前,我编写了一个非常简单的批处理脚本,因为我想让一组命令每天晚上 6 点运行。因此,我创建了这个脚本,它使用 mercurial 命令来检查更改(我维护的网站的所有者使用 FTP 添加和删除内容)。然后提交所有更改,并将它们推送到原点(我的服务器)。
hg addremove
hg commit -m "Daily update from Prod"
hg push
然后我设置了一个计划任务来每天运行这个脚本。这恰好是我多年来编写的第一个批处理脚本,但是,由于我在最近的开发工作中转向了 Mac,所以这正好是我多年来编写的第一个批处理脚本。
但是,我每天都会使用 shell 脚本(不同操作系统上的同类型脚本)。我最常用的脚本可以确保我已安装网络驱动器,将我登录到我们的源代码存储库(当然,会提示输入密码)并触发构建脚本。总而言之,我自己输入命令来执行此操作需要 3 分钟,但当我输入命令时,我经常忘记检查我的驱动器是否已安装(映射),这会导致 10 到 20 分钟的延迟……脚本不会忘记。
我曾经是社区大学的系统管理员,一直使用批处理脚本,正如您所说,主要用于自动化。当我刚开始在那里工作时,我们必须访问每台机器以手动更新防病毒软件并运行扫描。我创建了一个批处理脚本,它会从我们网络上的特定位置复制更新,安装它,并开始扫描。然后在组中的每台机器上,将我的软盘放入驱动器,按 Window-R(打开运行对话框)并输入 a:\up.bat... 开始几个之后,我会坐下来阅读,直到它们完成。
在我们购买映像软件之前,我创建了另一个脚本,以便使用我们的标准设置启动和运行新机器(或重新利用的旧机器)。以前,插入此光盘、双击某些内容、单击下一步几次、等待...、再次单击下一步、切换光盘、执行相同操作是一个繁琐的过程...现在变成了插入光盘、插入软盘...运行命令。出现提示时切换光盘...当网络更可靠时,这个过程就变成了只需插入软盘并运行命令,它会从网络驱动器为我下载安装文件。
答案2
CMD
是所有 Windows PC 上都可用的小型强力工具。net user {samid} /domain
可以快速告诉我我想要了解的有关域帐户的大多数统计信息,并dsquery user -samid {samid}|dsget user -memberof -expand|dsget group -samid
通过递归查找域帐户的组成员身份来涵盖其余信息。
我可以快速查找 PC 上所有映射的网络位置:for /f "tokens=3" %f in ('net use ^|findstr \\') do echo %f
或者可以使用批处理来完成不方便编译的工作
@echo off
echo This script will close Internet explorer then clear out your temp files
pause
taskkill /f /im iexplore.exe
RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 2
RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 8
"C:\Program Files\Internet Explorer\iexplore.exe"
这是我编写的一个快速而简单的批处理文件,用于清除 IE 临时文件。将批处理文件放到某人的桌面上比尝试解释如何清除临时文件要容易得多。
最后,因为我可以整天谈论 CMD 的好处和用处,它教会了我很多关于脚本如何工作以及计算机如何解释命令的知识。直到我学会了 CMD/Batch,我才真正对脚本和编程产生了兴趣。
编辑:
这只是 CMD 比 C# 更有效的一个具体例子(Hello World!)
C#
public class Hello1
{
public static void Main()
{
System.Console.WriteLine("Hello, World!");
}
}
命令
回声你好,世界!
批
@echo Hello, World!
@pause
或者
@echo off
echo Hello, World!
pause
当涉及简单任务时,CMD 和 Batch 的开销要少得多。