批处理的基础知识:我应该从哪里开始?

时间:2013-10-08 22:30:37

标签: windows file batch-file text batch-processing

我想进入Windows的批处理文件处理,但我没有这方面的经验。如果你能指出我的总体方向,我将不胜感激。

其他潜在问题:

  • 批量处理可以避免哪些风险?
  • 批处理文件的基本结构是什么?
  • 是否有基本类型的批处理文件示例,我可以付诸行动?
  • 什么是基本类型的批处理命令?

3 个答案:

答案 0 :(得分:3)

Bach是一种非常有条理和有序的编程语言,它大量运行在您最熟悉的Windows内部CMD或运行线命令上。根据我个人的经验,批处理的主要用途是使用脚本来自动化每次发生某些事情时需要运行的普通任务,例如在用户启动时。

我敢打赌你现在可以很容易地制作一个基本脚本只需购买学习a)每个bactch文件理想上应该/需要b)通过识别默认情况下批处理文件将从上到下执行一个命令后读取前一个完成或失败。

回答您的具体问题

  • 如果您正确编写脚本并在每一步测试它,那么批处理的风险并不存在。 - 我想说任何人都可以轻松看到你的代码,但第三方工具会将批量转换为.exe文件而没有问题。
  • 我在这个答案的底部列出了一些示例代码及一些解释。
  • 再次查看我的答案的底部,了解可在您的计算机上运行的一些基本脚本(提供它是Windows的一个版本)。
  • 如上所述,您可以输入CMD窗口的任何命令都可以在批处理文件中使用,因此您可以在CMD窗口中使用command /?来检查参数以及编写命令的方式。例如,输入CMD窗口ipconfig /?

基本批处理文件结构(另存为test.bat)

@echo off
title Test Batch Script
color a
echo.
ipconfig /all
echo.
echo Above is your IP information.
pause>nul
exit

@echo off - 这会关闭CMD提示,直到再次打开,如果没有显示每个操作,请在上面的脚本中删除该行或将其打开以查看效果。

标题 - 这是非常自我解释,此命令会根据您的选择为CMD窗口添加标题。

颜色xx - 颜色xx会更改背景和文本的颜色,第一个值是文本,第二个是窗口背景。 - 在CMD窗口中使用color /?查找所有可能的组合,并为自己选择一个,例如color 1f

echo。 - 这将进入文件本身的换行符,我主要使用它来分隔文本或在命令下添加几行,这样我的文字就可以在命令运行后清晰地看到

echo - 这将打印您要说的文本行,例如echo hello将在窗口中显示文本hello。

暂停> nul - 这会暂停批处理脚本前进到系列中的下一个命令。 - 但只需使用命令pause将显示文本“按任意键继续......”,使用pause>nul将删除此消息。不是必需的,但真的是个人偏好。

退出 - 退出当然会关闭您的程序,但是当批处理脚本时,如果没有更多的命令可以运行,脚本将关闭,这是不必要的,前提是不需要用户输入。

我觉得我已经使用几乎每次制作批处理文件时都会使用的所有最常用命令为您提供了一个基本的常用批处理文件。

其他答案列出了许多可用于了解详情的资源。 - 批处理是一种非常容易学习的语言,但可能会变得棘手,具体取决于需要多少用户输入或者想要制作某些内容的自动化程度。

掌握我的示例并将ipconfig /all替换为不同/多个命令,以练习在脚本中使用它们。

答案 1 :(得分:1)

关于使用批量编程的inolvd风险,最糟糕的情况是,当您使用计算机上的某些文件时,批处理脚本可能会出现故障,从而导致文件被删除或毁坏。这就是为什么建议在测试batc脚本之前备份所有文件。

批处理文件的基本结构经常变化。当你开始时,你将主要依靠goto循环结构。脚本将从一系列命令(通常是第一个@echo off)开始,然后使脚本goto成为程序的不同部分。

稍后您将依赖for循环和批量调用。

要找到一些不错的批量应用程序,我建议您在线查看,因为有一些景点可以包含很多。

对于基础教程,我建议您首先制作简单的批处理应用程序,以执行非常基本的操作,例如计数。

希望这有帮助,莫娜。

P.S。以下是我最近在instructables上传了一些旧的批处理应用程序,以下是链接:

答案 2 :(得分:1)

转到http://www.dostips.com/
基本命令列表:
echo hello world ::将hello world写入屏幕
echo%time%::将可变时间的值写入屏幕
cd dir ::将进入名为dir
的目录 type file.txt ::将文件内容打印到屏幕
dir ::将当前目录的内容回显到屏幕
cd .. ::将转到父目录
help ::将显示命令列表
set ::将显示所有当前变量
如果“%var%”EQU“hello”(echo is)::将是echo,如果varible var设置为hello
set var = hello ::将var设置为等于hello
set / p var =你是怎么样的:::将从用户那里获得输入并在var中进行stroe for / l %% i in(1,1,5)do echo %% i ::将在屏幕上回显1到5 ping host.com ::将检查您是否可以连接到host.con并显示一些结果 复制a.txt dir \ dir2 \ b.txt ::将a.txt复制到第二个参数 移动a.txt .. \ a.txt ::将a.txt移动到父目录 ren a.txt b.pdf ::将a.txt重命名为b.pdf
命令/? ::将显示命令的帮助

这里是我制作的一些示例文件:(空行很重要)
文件1:
setlocal enabledelayedexpansion
设置NLM = ^



设置NL = ^^^%NLM %% NLM%^%NLM %% NLM%

for / f“delims =”%% i in(a.txt)do a a =!a !! nl!%% i

回显%a%


file2 :(每个for是一行)

@echo off& setlocal enabledelayedexpansion
如果'%1'==''(回声缺失参数& pause> nul& exit / b)
for / l %% i in(%1,-1,0)for / l %% j in(%% i,1,%1)do set %% i =!%% i! for / l %% i in(0,1,%1)do(for / l %% j in(0,1,%% i)do set nums =!nums!%% j)& echo!%%我!! nums!& set nums =
for / l %% i in(%1,-1,0)do(for / l %% j in(0,1,%% i)do set nums =!nums!%% j)& echo!% %i !! nums!& set nums =

文件3:
setlocal enabledelayedexpansion
for / f“delims =”%% i in(a.txt)do a a = %% i& set a =!a:“”=! & echo!a!>> new.txt

file4 :(对于一行)

@echo关闭 for / d %% i in(*)for / f %% j in(“%% i”)do(dir“%% i”/ b | for / f %% k in('find“%% j) “/ v')执行@dir”%% k“/ b / s | find”thumbs.db“/ v)




如果您有任何疑问,请给我发电子邮件。我知道批次比任何其他语言更好,并喜欢它。我的电子邮件是:12nephi12@gmail.com

玩得开心!!! ;)