感悟网 导航

可以教教怎么做那些bat文件的!好酷哦! 求教:运行bat文件后如何让cmd窗口自动关闭?

作者&投稿:宾唐 (若有异议请与网页底部的电邮联系)
教我如何自动运行电脑上的bat文件,定时运行也可以。~

用计划任务!控制面板--管理工具--任务计划程序---创建任务(右边),接下来是向导式的,很简单!

运行bat批处理方式不同,处理也不同。
一、在资源管理器中,双击bat文件方法运行批处理
1、这种方式,默认是运行完自动关闭cmd窗口。
2、需要运行完批处理,然后停留在cmd窗口,可以在命令结尾加:pause

这样运行结束会,停留在CMD窗口,可以按任意键或者点击CMD关闭按钮来关闭窗口

二、先打开CMD窗口,再输入bat文件名来运行批处理
1、这种方式批处理运行结束后,仍然停留在cmd窗口。如果需要自动关闭,可以在命令结尾添加‘exit’命令

编写批处理的几种方式
1. windows下使用记事本(notepad)或者EditPlus编写
2. 控制台/纯dos下使用 Edit 命令编写。
3. 控制台/纯dos下使用以下命令来编写:
c:\>copy con t.bat
dir
^z
c:\>

^z = ctrl+z 表示输入完毕。
^c = ctrl+c 表示输入中断。

批处理文件是无格式的文本文件,它包含一条或多条命令。它的文件扩展名为 .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,文件结束。

批处理文件是将一系列命令按一定的顺序集合为一个可执行的文本文件,其扩展名为BAT。这些命令统称批处理命令,下面我就来给大家介绍一下批处理的命令。

1、REM
REM 是个注释命令一般是用来给程序加上注解的,该命令后的内容在程序执行的时候将不会被显示和执行。例:

REM 你现在看到的就是注解,这一句将不会被执行。在以后的例子中解释的内容都REM 会放在REM后面。请大家注意。

2、 ECHO

ECHO 是一个回显命令主要参数有OFF和 ON,一般用ECHO message来显示一个特定的消息 。例:
Echo off
Rem 以上代表关闭回显即不显示所执行的命令
Echo 这个就是消息。
Rem 以上代表显示“这就是消息”这列字符
执行结果:
C:\>ECHO.BAT
这个就是消息。

3、 GOTO

GOTO 即为跳转的意思。在批处理中允许以“:XXX”来构建一个标号然后用GOTO :标号直接来执行标号后的命令。例
:LABEL
REM 上面就是名为LABEL的标号。
DIR C:\
DIR D:\
GOTO LABEL
REM 以上程序跳转标号LABEL处继续执行。

4、CALL

CALL 命令可以在批处理执行过程中调用另一个批处理,当另一个批处理执行完后再继续执行原来的批处理。例:
批处理2.BAT内容如下:
ECHO 这就是2的内容
批处理1.BAT内容如下:
ECHO 这是1的内容
CALL 2.BAT
ECHO 1和2的内容全部显示完成
执行结果如下:
C:\>1.BAT
这是1的内容
这就是2的内容
1和2的内容全部显示完成

5、PAUSE

PAUSE 停止系统命令的执行并显示下面的内容。例:
C:\> PAUSE
请按任意键继续 . . .

6、 IF

IF 条件判断语句,语法格式如下:
IF [NOT] ERRORLEVEL number command
IF [NOT] string1==string2 command
IF [NOT] EXIST filename command

说明:

[NOT] 将返回的结果取反值即“如果没有”的意思。
ERRORLEVEL 是命令执行完成后返回的退出值
Number 退出值的数字取值范围0~255。判断时值的排列顺序应该又大到小。返回的值大于或等于指定的值时条件成立。
string1==string2 string1和string2都为字符的数据,英文字符的大小写将看做不同,这个条件中的等于号必须是2个(绝对相等),条件想等后即执行后面的 command
EXIST filename 为文件或目录存在的意思。
IF ERRORLEVEL这条语句必须放在某一个命令后面。执行命令后由IF ERRORLEVEL来判断命令的返回值。

例:

1、 IF [NOT] ERRORLEVEL number command

检测命令执行完后的返回值做出判断。

echo off
dir z:
rem 如果退出代码为1(不成功)就跳至标题1处执行
IF ERRORLEVEL 1 goto 1
rem 如果退出代码为0(成功)就跳至标题0处执行
IF ERRORLEVEL 0 goto 0
:0
echo 命令执行成功!
Rem 程序执行完毕跳至标题exit处退出
goto exit
:1
echo 命令执行失败!
Rem 程序执行完毕跳至标题exit处退出
goto exit
:exit
Rem 这里是程序的出口

2、 IF string1==string2 command

检测当前变量的值做出判断

ECHO OFF
IF %1==2 goto no
Echo 变量相等!
Goto exit
:no
echo 变量不相等
goto exit
:exit
大家可以这样看效果 C:\>test.bat 数字

3、 IF [NOT] EXIST filename command

发现特定的文件做出判断

echo off
IF not EXIST autoexec.bat goto 1
echo 文件存在成功!
goto exit
:1
echo 文件不存在失败!
goto exit
:exit
这个批处理大家可以放在c盘和d盘分别执行看看效果。
7、 FOR
FOR这个命令比较特殊是一个循环执行命令的命令,同时FOR的循环里面还可以套用FOR在进行循环。这篇我们介绍基本的用法就不做套用的循环了,后面再来讲解套用的循环。在批处理中FOR的命令如下:
FOR [%%c] IN (set) DO [command] [arguments]
在命令行中命令如下:
FOR [%c] IN (set) DO [command] [arguments]
常用参数:
/L 该集表示以增量形式从开始到结束的一个数字序列。因此,(1,1,5) 将产生序列 1 2 3 4 5,(5,-1,1) 将产生序列 (5 4 3 2 1)。
/D 如果集中包含通配符,则指定与目录名匹配,而不与文件名匹配。

/F 从指定的文件中读取数据作为变量
eol=c - 指一个行注释字符的结尾(就一个)
skip=n - 指在文件开始时忽略的行数。
delims=xxx - 指分隔符集。这个替换了空格和跳格键的默认分隔符集。
tokens=x,y,m-n - 指每行的哪一个符号被传递到每个迭代的 for 本身。这会导致额外变量名称的分配。m-n格式为一个范围。通过 nth 符号指定 mth。如果符号字符串中的最后一个字符星号,那么额外的变量将在最后一个符号解析之后分配并接受行的保留文本。
usebackq - 指定新语法已在下类情况中使用:在作为命令执行一个后引号的字符串并且一个单引号字符为文字字符串命令并允许在 filenameset中使用双引号扩起文件名称。
下面来看一个例子:

FOR /F "eol=; tokens=2,3* delims=, " %i in (myfile.txt) do @echo %i %j %k

会 分析 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
会枚举当前环境中的环境变量名称。
以下列举一个简单的例子,他将说明参数/L和没有参数的区别:
删除文件1.TXT 2.TXT 3.TXT 4.TXT 5.TXT
例:
ECHO OFF
FOR /L %%F IN (1,1,5) DO DEL %%F.TXT

FOR %%F IN (1,2,3,4,5) DO DEL %%F.TXT
以上2条命令执行的结果都是一样的如下:
C:\>DEL 1.TXT
C:\>DEL 2.TXT
C:\>DEL 3.TXT
C:\>DEL 4.TXT
C:\>DEL 5.TXT

8、 SETLOCAL

开 始批处理文件中环境改动的本地化操作。在执行 SETLOCAL 之后所做的环境改动只限于批处理文件。要还原原先的设置,必须执行 ENDLOCAL。 达到批处理文件结尾时,对于该批处理文件的每个尚未执行的 SETLOCAL 命令,都会有一个隐含的 ENDLOCAL 被执行。例:

@ECHO OFF
SET PATH /*察看环境变量PATH
PAUSE
SETLOCAL
SET PATH=E:\TOOLS /*重新设置环境变量PATH
SET PATH
PAUSE
ENDLOCAL
SET PATH

从 上例我们可以看到环境变量PATH第1次被显示得时候是系统默认路径。被设置成了E:\TOOLS后显示为E:\TOOLS但当ENDLOCAL后我们可 以看到他又被还原成了系统的默认路径。但这个设置只在该批处理运行的时候有作用。当批处理运行完成后环境变量PATH将会还原。

9、 SHIFT

SHIFT命令可以让在命令上的的命令使用超过10个(%0~%9)以上的可替代参数例:

ECHO OFF
ECHO %1 %2 %3 %4 %5 %6 %7 %8 %9
SHIFT
ECHO %1 %2 %3 %4 %5 %6 %7 %8 %9
SHIFT
ECHO %1 %2 %3 %4 %5 %6 %7 %8 %9
执行结果如下:
C::\>SHIFT.BAT 1 2 3 4 5 6 7 8 9 10 11
1 2 3 4 5 6 7 8 9
2 3 4 5 6 7 8 9 10
3 4 5 6 7 8 9 10 11

以上就是基于WIN2000下的9个批处理命令。

数字1写入文件的方法
>tmp.txt echo 1
echo ^1>>tmp.txt
echo.1>>tmp.txt
(echo 1)>>tmp.txt
(<nul set/p=1)>tmp.txt

开机要用户名否则关机的批处理

ECHO OFF
rem ********* XP.BAT ************
MODE CON: COLS=60 LINES=20
COLOR 0A
:START
CLS
ECHO.
ECHO --------WINDOWS XP 密码设置------------
ECHO.
:STRING
CLS
SET /P USER=请输入你要设置的用户名:
SET /P PSW=请输入你要设置的密码:
CLS
ECHO 你输入的用户名为:%USER% 密码为: %PSW%
SET /P CHOISE=是否确认[1=是]/[2=否]:

IF "%CHOISE%"=="1" GOTO PSWSTART
IF "%CHOISE%"=="2" GOTO START

GOTO END
:PSWSTART
CLS
NET USER %USER% "%PSW%" /add
NET USER %USER% "%PSW%"

ECHO *****************完成********************
PAUSE
:END

主机IP扫描
注:是扫描主机的
@echo off
echo.
echo --------------活动主机扫描-----------------------
echo 功能说明:
echo 1、扫描本网段的活动主机;
echo 2、扫描随机网段的活动主机;
echo 3、保存扫描结果;
echo.
echo 沉沦天子 于2006-1-7日
echo -------------------------------------------------

:start
echo 1、扫描本网段;
echo 2、扫描任意网段;
echo q、退出(区分大小写)
set goto=
set /p goto=请输入你的选择:
if "%goto%"=="q" goto :exit
if "%goto%"=="1" (goto :self) else goto :any

:self
for /f "usebackq delims=: tokens=2" %%i in (`"ipconfig|find "IP Address" "`) do set ipaddr=%%i
for /f "delims=. tokens=1,2,3,4*" %%i in ("%ipaddr%") do set /a ipaddr1=%%i &&set /a ipaddr2=%%j && set /a ipaddr3=%%k && set /a ipaddr4=%%l
goto :scan

:any
set ipaddr1=%random%
set /a (ipaddr1%%=256)
set ipaddr2=%random%
set /a (ipaddr2%%=256)
set ipaddr3=%random%
set /a (ipaddr3%%=256)
goto :scan

:scan
set /a count=0
echo.>scan_result.txt
echo ---------%ipaddr1%.%ipaddr2%.%ipaddr3%段活动主机(WinNT)------->>scan_result.txt
for /l %%i in (1,1,256) do echo 正在扫描 %ipaddr1%.%ipaddr2%.%ipaddr3%.%%i &&echo 请等待........&& ping -n 1 -w 2 %ipaddr1%.%ipaddr2%.%ipaddr3%.%%i|find "TTL=128">nul &&set /a count=%count%+1 && echo %ipaddr1%.%ipaddr2%.%ipaddr3%.%%i>>scan_result.txt
cls
echo ----------------结果说明---------------
echo 扫描完毕!
echo 共扫描到活动的Windows NT系统:%count%台。
echo 扫描的结果保存在当前目录的scan_result.txt中。
echo -----------------------------------
echo 1、继续扫描其它网段;
echo q、退出
set goto=
set /p goto=请输入你的选择:
if "%goto%"=="q" (goto :start) else goto :any
:exit

MAC在线扫描
echo off
title 扫描即将开始 制作
color a
cls
echo.
echo ------------------------------------------------------------
echo QQ:欢迎交流
echo.
echo 本批处理是扫描内网IP、MAC地址和计算机名的,并自动保存文件TXT文件
echo.
echo 再利用“自动改IP.bat”实现自动改IP、计算机名、网络号、DNS、网关等
echo.
echo 并自动安装冰点,将冰点改名为DF.exe,并保存在“自动改IP.bat”同目录下
echo.
echo 为了扫描到的结果正确,请按照正确格式输入
echo.
echo ---------------------PS:制作不容易,请保留版权----------------------
set /p gateway=请输入内网网关:
set /p dns1=请输入你的首选DNS:
set /p dns2=请输入你的备用DNS:
echo gateway %gateway% >info.txt
echo DNS1 %dns1% >>info.txt
echo DNS2 %dns2% >>info.txt
echo MAC IP 计算机名 >>info.txt
set rc=0
set /p ipq=请输入内网IP的前3位(如192.168.0):
set /p iph=请输入你要扫描的IP起始段(IP的最后一位):
set /p con1=请输入你要扫描的数量:
set /a con= %iph%+%con1%
:scan
set ip=%ipq%.%iph%
ping -n 1 -w 1 %ip% >nul
title 正在检测 %ip% 制作
if %errorlevel% GEQ 1 goto dz
for /f "tokens=1" %%i in ('nbtstat -a %ip% ^| find /i "UNIQUE" ^| find /i "00"') do set pcname=%%i
for /f "tokens=4" %%i in ('nbtstat -a %ip% ^| find /i "MAC Address"') do set mac=%%i
echo %mac% %ip% %pcname% >>info.txt
set /a iph=%iph%+1
set /a rc=%rc%+1
if %iph% GTR %con% goto end
goto scan
:dz
echo %ip%不在线,无法扫描!
set /a iph=%iph%+1
if %iph% GTR %con% goto end
goto scan
:end
title 扫描完毕 制作
echo 扫描完毕!!
@echo 共扫描%con%台PC。其中%rc%台PC在线!!
pause

记事本,另存为bat.比如cmd另存为1.BAT即可打开命令提示符

《如何编写bat文件一次性安装所有系统补丁?》
答:我没有用过你说的那个软件!我用的是微软的小工具!然后在写个批处理 就可以安装了!echo off setlocal set ATHTOFIXES=XPSP2-okok-eng WindowsXP-KB899589-x86-ENU -z -q ATHTOFIXES%qchain.exe 其中set ATHTOFIXES=XPSP2-okok-eng 中的XPSP2-okok-eng 是那个软件和补丁在的文件夹的名称!

《bat如何批量修改文件夹下子文件夹所有文件,按已有的顺序,把原名删除...》
答:用python写起来最方便 你装python没有

《能不能教我用记事本作bat的小程序啊???》
答:你用记事本编辑好命令后,点文件(F)选择另存为(A),将文件保存为后缀名为.bat 的文件,就可以了。

《bat文件命令大全》
答:批处理文件或批处理程序是一个包含若干MS-DOS命令的正文文件,扩展名为.BAT。当在命令提示符下敲入批处理程序的名称时,MS-DOS成组执行此批处理程序中的命令。任何在命令提示符下可使用的命令都可用在批处理程序中。此外,下面MS-DOS命令是专门在批处理程序中使用的。===常用命令echo、@、call、pause、rem(小技巧...

《Windows Server 2008中使用计划任务定时执行BAT批处理文件图文教程》
答:选择“触发器”选项,点击“新建”,创建任务执行时间,“重复任务间隔”这个选择后,后面有时间选择,是每小时,还是每分,可自己选择后再修改时间,再确定。再来配置需要执行的“操作”,就是选择所写的程序或是BAT文件,这里很重要的配置是选择BAT文件后,在“起始于(可选)”这里一定要填写相应执行...

《请教老师们:BAT删除当前目录下所有文件,包括当前所在文件夹,最后删除本 ...》
答:是的,可以使用以下代码实现删除当前目录下所有文件,包括当前所在文件夹,并最后删除本身的BAT脚本:echo off cd /d "%~dp0"del /f /s /q cd ..rd /s /q "%~dp0"del "%~f0"这段代码首先将当前目录切换到脚本所在的目录,然后使用 del 命令删除当前目录下的所有文件,包括子文件夹中的...

《BAT批处理文件for循环的基本格式方法》
答:一,基本格式 对一组文件中的每一个文件执行某个特定命令。FOR %variable IN (set) DO command [command-parameters]variable 指定一个单一字母可替换的参数。(set) 指定一个或一组文件。可以使用通配符。command 指定对每个文件执行的命令。command-parameters 为特定命令指定参数或命令行开关。在批处理...

《怎么用bat文件批量修改文件名称》
答:保存后更改文件扩展名为bat,有提示选“是”5 双击运行这个bat批处理文件,稍一延迟文件夹就都已全改名啦 6 代码主要注意以下两处,可进行随意修改 7 这两处修改之后,运行后重命名文件夹的名称也随之变化 END 方法/步骤2-重命名文件 以重命名txt文件为例,也是先新建bat文件,其中代码如下 echo off...

《怎样使用bat任务删除7天前的文件夹及其里面的文件》
答:走 这篇文章主要为大家详细介绍了Windows下使用批处理文件.bat删除旧文件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 本文教大家写一个批处理文件.bat删除旧文件,供大家参考,具体内容如下 1. 批处理文件 del_old_file.bat rem 删除D:\temp目录下7天前的文件 Forfiles /p D:\temp /s /...

《谁教我写一个 bat 批处理》
答:这个很简单,把下面内容补充修改后,另存为X.BAT放在你的病毒补丁同一文件夹里,括号里的内容为注释,COPY AA.EXE %systemdrive%\ (把AA.EXE复制到\system32\下面)attrib %systemdrive%\AA.EXE +R -A +S (把AA.EXE设为只读,同时设为系统文件,去掉存档属性,这是为了不让补丁被修改)COPY AA....

   

返回顶部
本页内容来自于网友发表,若有相关事宜请照下面的电邮联系
感悟网