Loving Coding & Visual Design
Windows批处理(BAT)技巧
最近写了一个自动检测局域网状况的批处理(BAT)文件,写完才发现批处理(BAT)里面也有不少名堂可以学习。
If 命令
if 表示将判断是否符合规定的条件,从而决定执行不同的命令。
1、if "参数" == "字符串" 待执行的命令
参数如果等于指定的字符串,则条件成立,运行命令,否则运行下一句。
如if "%1"=="a" format a:
if {%1}=={} goto noparms
2、if exist 文件名 待执行的命令
如果有指定的文件,则条件成立,运行命令,否则运行下一句。
如if exist config.sys edit config.sys
3、if errorlevel / if not errorlevel 数字 待执行的命令
如果返回码等于指定的数字,则条件成立,运行命令,否则运行下一句。
如if errorlevel 2 goto x2
for 命令
for 命令主要用于参数在指定的范围内循环执行命令。
在批处理文件中使用 FOR 命令时,指定变量请使用 %%variablefor
{%variable|%%variable} in (set) do command [ CommandLineOptions]
%variable 指定一个单一字母可替换的参数。
(set) 指定一个或一组文件。可以使用通配符。
command 指定对每个文件执行的命令。
command-parameters 为特定命令指定参数或命令行开关。
组合命令(Compound Command)
1.&
Usage:第一条命令 & 第二条命令 [& 第三条命令...]用这种方法可以同时执行多条命令,而不管命令是否执行成功Sample:
2.&&
Usage:第一条命令 && 第二条命令 [&& 第三条命令...]用这种方法可以同时执行多条命令,当碰到执行出错的命令后将不执行后面的命令,如果一直没有出错则一直执行完所有命令
3.||
Usage:第一条命令 || 第二条命令
[|| 第三条命令...]用这种方法可以同时执行多条命令,当碰到执行正确的命令后将不执行后面的命令,如果没有出现正确的命令则一直执行完所有命令
关于注册表的操作
1.创建
创建分为两种,一种是创建子项(Subkey)我们创建一个文件,内容如下:Windows
Registry Editor Version 5.00[HKEY_LOCAL_MACHINESOFTWAREMicrosoftme]
然后执行该脚本,你就已经在HKEY_LOCAL_MACHINESOFTWAREMicrosoft下创建了一个名字为“me”的子项。另一种是创建一个项目名称那这种文件格式就是典型的文件格式,和你从注册表中导出的文件格式一致,内容如下
:
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 &#118alue”
door的类型是“REG SZ &#118alue”
Autodos的类型是“DWORD &#118alue”
2.修改
修改相对来说比较简单,只要把你需要修改的项目导出,然后用记事本进行修改,然后导入(regedit /s)即可。
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]就已经被删
除了。
批处理(BAT)实例:生成当前日期时间的文件名
set fn=%datefile%-%datefile2%-%datefile3%
解释:
/F 通过每个文件的每一行中分开的第一个空白符号。
delims=xxx - 指分隔符集。这个替换了空格和跳格键的默认分隔符集。
tokens=x,y,m-n - 指每行的哪一个符号被传递到每个迭代
运行test.bat时,避免弹出窗口的办法:
附: Windows命令行参考
If 命令
if 表示将判断是否符合规定的条件,从而决定执行不同的命令。
1、if "参数" == "字符串" 待执行的命令
参数如果等于指定的字符串,则条件成立,运行命令,否则运行下一句。
如if "%1"=="a" format a:
if {%1}=={} goto noparms
2、if exist 文件名 待执行的命令
如果有指定的文件,则条件成立,运行命令,否则运行下一句。
如if exist config.sys edit config.sys
3、if errorlevel / if not errorlevel 数字 待执行的命令
如果返回码等于指定的数字,则条件成立,运行命令,否则运行下一句。
如if errorlevel 2 goto x2
for 命令
for 命令主要用于参数在指定的范围内循环执行命令。
在批处理文件中使用 FOR 命令时,指定变量请使用 %%variablefor
{%variable|%%variable} in (set) do command [ CommandLineOptions]
%variable 指定一个单一字母可替换的参数。
(set) 指定一个或一组文件。可以使用通配符。
command 指定对每个文件执行的命令。
command-parameters 为特定命令指定参数或命令行开关。
组合命令(Compound Command)
1.&
Usage:第一条命令 & 第二条命令 [& 第三条命令...]用这种方法可以同时执行多条命令,而不管命令是否执行成功Sample:
2.&&
Usage:第一条命令 && 第二条命令 [&& 第三条命令...]用这种方法可以同时执行多条命令,当碰到执行出错的命令后将不执行后面的命令,如果一直没有出错则一直执行完所有命令
3.||
Usage:第一条命令 || 第二条命令
[|| 第三条命令...]用这种方法可以同时执行多条命令,当碰到执行正确的命令后将不执行后面的命令,如果没有出现正确的命令则一直执行完所有命令
关于注册表的操作
1.创建
创建分为两种,一种是创建子项(Subkey)我们创建一个文件,内容如下:Windows
Registry Editor Version 5.00[HKEY_LOCAL_MACHINESOFTWAREMicrosoftme]
然后执行该脚本,你就已经在HKEY_LOCAL_MACHINESOFTWAREMicrosoft下创建了一个名字为“me”的子项。另一种是创建一个项目名称那这种文件格式就是典型的文件格式,和你从注册表中导出的文件格式一致,内容如下
:
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 &#118alue”
door的类型是“REG SZ &#118alue”
Autodos的类型是“DWORD &#118alue”
2.修改
修改相对来说比较简单,只要把你需要修改的项目导出,然后用记事本进行修改,然后导入(regedit /s)即可。
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]就已经被删
除了。
批处理(BAT)实例:生成当前日期时间的文件名
for /F "tokens=1,2,3 delims=/ " %%i in ('date /t') do set datefile=%%k-%%i-%%j
for /F "tokens=1,2 delims=: " %%i in ('time /t') do set datefile2=%%i-%%j
for /F "tokens=1,2 delims= " %%i in ('time /t') do set datefile3=%%j
set fn=%datefile%-%datefile2%-%datefile3%
解释:
/F 通过每个文件的每一行中分开的第一个空白符号。
delims=xxx - 指分隔符集。这个替换了空格和跳格键的默认分隔符集。
tokens=x,y,m-n - 指每行的哪一个符号被传递到每个迭代
运行test.bat时,避免弹出窗口的办法:
set ws=wscript.createobject("wscript.shell")
ws.run "test.bat /start",0
wscript.sleep 2000
附: Windows命令行参考
最 近 文 章
- mod_rewrite简单教程 - Tue, 22 Apr 2008 02:44:18 +0000
- CSS样式表常用技巧 - Thu, 20 Mar 2008 06:01:43 +0000
- Smarty简单教程 - Mon, 17 Mar 2008 13:25:41 +0000
- Google推出web界面的星空版地图 - Mon, 17 Mar 2008 02:22:54 +0000
- 转让闲置刀片式宝德服务器一台 - Thu, 13 Mar 2008 12:28:26 +0000
- 一些小问题的解决办法 - Tue, 13 May 2008 04:43:05 +0000
- 关于图片上传目录777权限的解决办法 - Mon, 10 Mar 2008 08:37:09 +0000
- Adsense推荐中等矩形 (300 x 250)来展示广告 - Wed, 05 Mar 2008 12:37:18 +0000
- google的工程哲学 - Tue, 04 Mar 2008 12:55:43 +0000
- 利用“301”HTTP头给网站更换域名 - Fri, 29 Feb 2008 02:07:05 +0000