批处理文件及LINUX经典技巧使用

批处理文件是无格式的文本文件,它包含一条或多条命令。它的文件扩展名为 .bat 或 .cmd。在命令提示下键入批处理文件的名称,或者双击该批处理文件,系统就会调用Cmd.exe按照该文件中各个命令出现的顺序来逐个运行它们。使用批处理文件(也被称为批处理程序或脚本),可以简化日常或重复性任务。当然我们的这个版本的主要内容是介绍批处理在入侵中一些实际运用,例如我们后面要提到的用批处理文件来给系统打补丁、批量植入后门程序等。下面就开始我们批处理学习之旅吧。 
  
  一.简单批处理内部命令简介 
  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 
  
  该集表示以增量形式从开始到结束的一个数字序列。
  计算机当中有三大可执行文件: .exe .com .bat 
  
  
  集锦:
  处理特殊的文件名 
  
   
  
  假设Linux系统中有一个文件名叫“-ee”,如果我们想对它进行操作,例如要删除它,按照一般的删除方法在命令行中输入rm-ee命令,界面会提示我们是“无效选项”(invalidoption),原来由于文件名的第一个字符为“-”,Linux把文件名当作选项了,我们可以使用“--”符号来解决这个问题,输入“rm---ee”命令便可顺利删除名为“-ee”的文件。如果是其他特殊字符的话可以在特殊字符前加一个“”符号,或者用双引号把整个文件名括起来。 
  
   
  
  2、直接进行Linux的安装工作 
  
   
  
  在安装Linux操作系统时,可以利用该系统光盘中的一个名为“loadlin.exe”的软件,将Linux核心直接调入内存,由Linux核心代替当前操作系统来接管计算机,并进入Linux的安装界面。在安装Linux时,我们只要在运行对话框中输入“loadlinE:imagesvmlinuzroot=/dev/raminitrd=E: imagesinitrd.img”这个命令就可以直接安装Linux了;其中“E:imagesvmlinuz”为Linux的核心名。 
  
   
  
  3、消除Xwindows下的死机现象 
  
   
  
  我们可以用两个常用的方法来消除这种现象:第一,用键盘上的复合键“Ctrl+Alt+Backspace”来关闭当前正在运行的任务;第二,首先按住键盘上的“Ctrl+Alt+F2”复合键,让系统切换到另一个操作台,然后登录到系统,再执行“#ps-ax/grepstartx”命令,这将会列出你的Xserver的进程标识,接着在命令行中输入如下命令就能消除Xwindows下的死机现象:#kill-9PID_Number,最后通过 “Alt+F1”复合键返回到原来的平台。 
  
   
  
  4、快速关闭Linux系统 
  
   
  
  最新版本的Linux/UNIX系统借鉴了大型机的技术,采用了抗掉电的日志式文件系统,可以自动跟踪保存用户数据,自动同步刷新文件系统,用户完全可以随手关闭电源,从而达到快速关闭系统的目的。 
  
  5、巧妙使用“rm”命令 
  
   
  
  我们可以使用带“-r”参数的“rm”命令来删除一个非空目录,例如我们在命令行中输入“rm-rbbb”这样的命令,表示系统将把bbb目录中包含的所有文件和子目录全部删除掉。 
  
  6、巧妙使用“Tab”键 
  
   
  
  大家知道在Linux字符界面中输入命令时,有时需要输入很多字符,如果经常这样逐个地输入字符,比较麻烦。假设键入的字符足以确定该目录下一个惟一的文件时,我们只需按键盘上的“Tab”键就可以自动补齐该文件名的剩下部分,例如要把目录/ccc下的文件“ddddddd-1.2.3.tar.gz” 解包时,当我们在命令行中键入到“tarxvfz/ccc/d”时,如果该文件是该目录下惟一以“d”打头的文件的话就可以直接按下“Tab”键,这时命令会被自动补齐为:tarxvfz/ccc/ddddddd-1.2.3.tar.gz,从而提高了输入效率。 
  
   
  
  7、多用鼠标拷贝与粘贴来提高操作速度 
  
   
  
  Linux系统安装后,每次启动到字符界面时都会自动运行一个叫“gpm”的程序,该程序运行后就可以用鼠标来拷贝与粘贴了。具体做法是按住鼠标左键拖动使要拷贝的地方突出显示,这时突出显示的区域已经被拷贝,再按鼠标右键拷贝的内容就会被粘贴在光标所在位置了。如果我们在Xwindow下运行 Linux系统,拷贝与粘贴的操作与在Windows9x系统下一样。 
  
   
  
  8、快速启动Linux系统 
  
   
  
  在 DOS下,有一种简单快速启动Linux的方法,那就是loadLinux。loadlin.exe是DOS下的可执行程序,它可以在纯DOS环境下迅速启动Linux,而且无需重启计算机,通常我们可以在光盘的“/kernels”目录下找到这个程序。如果不知这个程序被放置于安装盘的何处,可以使用 “find-nameloadlin*”命令来寻找。找到之后将其复制到DOS分区中,同时还需要复制一份你所使用的Linux内核文件。可以通过 Windows直接从光盘复制,也可在Linux环境下使用“mcopy”命令将文件复制到DOS分区;接着再编写一个名为“Linux.bat”的批处理文件,文件内容如下:c:loadlinc:vmlinuzroot=/dev/hda1ro(我们假设loadlin.exe和vmlinuz这两个内核文件都在c盘根目录下,“root”为Linux的根设备,而且Linux处于硬盘第一分区,所以设备名为“/dev/hda1”,“ro”意为 readonly)。以后在DOS下要启动Linux时,运行“Linux.bat”就可以了。 

你可能感兴趣的:(批处理文件及LINUX经典技巧使用)