2

我想进入 Windows 的批处理文件处理,但我在这方面的经验为零。如果您能指出我的大致方向,将不胜感激。

其他潜在问题:

  • 批处理需要避免哪些风险?
  • 批处理文件的基本结构是什么?
  • 是否有基本类型的批处理文件的示例,我可以在哪里付诸实施?
  • 批处理命令有哪些基本类型?
4

3 回答 3

3

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

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

回答您的具体问题

  • 如果您正确编写脚本并在每个步骤中对其进行测试,批处理的风险就不会真正存在。- 我想说任何人都可以轻松查看您的代码,但第三方工具会将批处理转换为 .exe 文件而不会出现问题。
  • 我在这个答案的底部列出了一些示例代码和一些解释。
  • 再次查看我的答案的底部,了解一些可以在您的计算机上运行的基本脚本(假设它是 Windows 版本)。
  • 正如我上面提到的,您可以在 CMD 窗口中键入的任何命令都将在批处理文件中运行,因此您可以command /?在 CMD 窗口中使用来检查参数以及编写命令的方式。例如,键入 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 窗口命名为您选择的标题。

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

回声。- 这将在文件本身中输入一个换行符,我主要使用它来分隔文本或在命令下添加几行,以便在命令运行后可以清楚地看到我的文本。

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

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

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

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

其他答案列出了许多您可以用来了解更多信息的资源。- Batch 是一种非常容易学习的语言,但根据需要多少用户输入或您想要实现的自动化程度,可能会变得很棘手。

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

于 2013-10-09T06:20:05.140 回答
1

关于批处理编程的风险,可能发生的最糟糕的情况是,在您的计算机上处​​理某些文件时,您的批处理脚本可能会出现故障,导致文件被擦除或破坏。这就是为什么建议在测试 batc 脚本之前备份所有文件的原因。

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

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

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

对于基础教程,我建议您首先制作简单的批处理应用程序来完成非常基本的事情,例如计数。

希望这有帮助,莫娜。

PS这里有一些我最近在教科书上上传了一些我的旧批处理应用程序,这里是链接:

于 2013-10-08T23:02:08.147 回答
1

访问http://www.dostips.com/
基本命令列表:
echo hello world :: 将 hello world 写入屏幕
echo %time% :: 将变量 time 的值写入屏幕
cd dir ::将进入名为 dir 的目录
type file.txt ::将文件的内容打印到屏幕
dir ::将当前目录的内容回显到屏幕
cd .. ::将转到父目录
help ::将显示命令列表
set :: will show all current variables
if "%var%" EQU "hello" (echo is) ::will echo is if the varible var is
set var=hello ::will set var等于 hello
set /p var=how are you::: 将从用户那里获取输入并将其写入 var
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 到第二个参数。
move a.txt ..\a.txt ::将把a.txt移动到父目录。
ren a.txt b.pdf ::将a.txt重命名为b.pdf
command /? ::将在命令上显示帮助

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



set NL=^^^%NLM%%NLM%^%NLM%%NLM%

for /f "delims=" %%i in (a.txt) 设置 a=!a!!nl!%%i

echo %a%


file2:(for each for is a single line)

@echo off&setlocal enabledelayedexpansion
if '%1'=='' (echo missing parameter&pause>nul&exit /b)
for /l %%i in (%1,-1, 0) do 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 !%%i! !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=

file3:
setlocal enabledelayedexpansion
for /f "delims=" %%i in (a.txt) do set a=%%i&set a=!a:""=! &echo !a!>>new.txt

file4:(for is one line)

@echo off
for /d %%i in (*) do for /f %%j in ("%%i") do (dir "% %一世”




如果您有任何问题,请给我发电子邮件。我比任何其他语言都更了解批处理并且喜欢它。我的电子邮件是:12nephi12@gmail.com

玩得开心!!!;)

于 2013-10-08T23:20:10.237 回答