常用的批处理实用技巧

转载地址:http://www.bathome.net/viewthread.php?tid=939&extra=page%3D1%26amp%3Bfilter%3Ddigest

网上流传着很多DOS小技巧,但是,以现在的眼光重新审视,它们有些并不适用于批处理。编写批处理代码一年多来,本人积累了一些实用的批处理代码编写技巧,现发出来大家一起分享。若能善用这些代码,将会大大简化各位的编码工作,并会一定程度上提升代码的执行效率。


  1、不显示代码执行期间的各种提示信息

  很多时候,为了使得屏幕上不出现无关的信息,我们需要屏蔽掉命令执行过程中产生的一些提示,有时候是屏蔽掉出错信息,有时候是为了屏蔽成功执行命令的信息,有时候两者都需要屏蔽,那么,我们可以把各种提示信息重定向到空设备中去,具体的代码是:
  ① 如果要屏蔽成功执行命令的信息,请在语句的最后加上代码 >nul。比如 copy a.txt d:\test>nul
  ② 如果要屏蔽出错信息,请在语句最后加上代码  2>nul,需要注意的是,数字2前必须带空格。比如,md test 2>nul,如果当前目录已经存在文件夹test,那么,执行这条语句将不会出现错误提示;
  ③ 如果要同时屏蔽正确执行代码后产生的提示和出错时的信息,请在语句最后加上代码 >nul 2>nul。比如,copy a.txt d:\test>nul 2>nul 这条语句,无论命令是否成功执行,都不会在屏幕上出现任何提示;
  善用 nul 2>nul 句式,可以很方便地实现很多目的,比如创建文件夹的时候,无需先用if语句来检测是否已经存在某个目录,直接 md test 2>nul 即可,可以提高代码的执行效率。

  2、cd.>test.txt

  很多人第一次遇到这样的语句时,都会大惑不解:cd不是跳转目录的命令吗?怎么会有创建0字节文件的功能呢?曾经有段时间,我是用echo.>test.txt来创建空文件的,只是这个空文件虽然没有任何内容,但是,大小不是0字节,在要求苛刻的情况下,并不能很好地完成任务。实际上,从理论上来说,创建0字节文件的语句有无限多种,只要明白其中的奥妙,就可以随心所欲地构造出来,只是cd.>test.txt是最简洁的方法,符合我"解决问题简洁化"的一贯主张。构造0字节文件的奥妙在于:只要没有任何内容重定向到文件中去,0字节文件就会随着命令的执行而产生。比如dir 2>test.txt、arp >text.txt、abc 4>test.txt……,只要符合"任意内容+空格+2以上10以下的数字+>test.txt"的格式即可。需要注意的是,千万不要被屏幕上的各种出错信息所蒙蔽,我们的最终目的是产生0字节的文件,至于错误提示完全可以用 2>nul 去屏蔽。更详细的讨论请参考本人在CN-DOS发过的这篇帖子:可构造0字节文本文件的几条命令 。

  3、del /a /f *.txt

  我们知道,单独的del命令并不能删除带隐藏或只读属性的文件,于是,很多人自然而然地想到先用 attrib 命令来先给将要删除的文件去掉各种属性。其实,操作过程大可不必如此繁琐,只须给del加上 /a /f 的参数就可以了。

  4、echo. echo; echo/和echo\

  在很多人的心目中,产生换行符的方法只有echo.一种,实际上,到目前为止,已经有人找出了标题所列的四种方法,有兴趣不妨换着用用,也可以在菜鸟面前炫耀一番^_^

  5、echo.%str% 和 echo %str%

  知道 echo.hello! 和 echo hello! 有何差别吗?就具体字符串的输出而言,它们在效果上是完全等同的;但是,当 hello! 用变量来替换之后,在特定情况下结果将会截然不同!试试令变量 str 为空,再在批处理文件中分别执行这两条语句,看看它们的提示吧。结果出来了吗?总结一下:当变量 str 的值为空时,echo.%str% 输出了一个空行,而 echo %str% 则返回 echo 的当前状态。当用 for 语句读取带空行的文本,并用 echo 语句来输出时,echo.%str% 语句无疑是上上之选。另外,第4条的技巧在这里同样适用。

  6、拼接多行字符串为一行

  如果要把某个文本中的多行字符串拼接为一行,按照一般的思路,是在for语句中,先 set str=%%i,然后,下一步是 set str=%%i!str! ,从而实现后一句与前一句的拼接。实际上,这两步只用一条 set /p str=%%i<nul 就可以实现。简单的演示代码如下:

@echo off
for /f "delims=" %%i in (test.txt) do set /p str=%%i<nul
echo.
pause>nul


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
108个实用批处理文件 (仅供备用)WINXP原本的各项服务.BAT 1.TXT 2.txt 2000XP停止打印.bat 3.txt ARP本机绑定.bat Autorun 病毒清除工具.CMD C盘转换为NTFS格式.cmd dir.bat dos下重启.bat guest.bat IE不能打开新链接修复.cmd IE及系统限制修复器.CMD IIS最小权限分配.CMD sxs.exe 的查杀.bat sz.reg转换成reg.bat.bat win2000关机命令.bat WIN2003 IIS最小权限分配.bat WINDOWSINSTALLER故障修复.CMD winxp修改计算机名.bat WINXP原本的各项服务.BAT xp下确定最后的盘符.bat XP垃圾卸载器.CMD XP服务优化批处理.bat XP自动更新故障修复.CMD XP验证码显示补丁.CMD YLMF系统服务优化.bat 一键清理系统垃圾文件.bat 不显示扩展名.bat 不显示隐藏文件.bat 中文显示ping结果.bat 使用WMI别名获取CPU信息.bat 全盘删除所有文件夹下的_desktop.ini.bat 关闭IDE通道检测.bat 关闭局域网共享.cmd 关闭有害端口.bat 列举进程.bat 删除大小和类型一样的文件.bat 删除快捷方式的箭头.CMD 删除所有分区的默认共享.bat 判断光驱是否可用.bat 判断光驱里有无光盘.bat 判断分区格式.bat 刷新策略.bat 取得硬盘数.bat 右键添加bat.bat 右键添加打开MS-DOS.bat 启止用XP的图片视频预览功能.bat.bat 将cwindows.复制到当前目录并显示进度.bat 常见病毒清理.bat 开通局域网共享(访问本机无需验证即可进入).cmd 开通局域网共享(访问本机要填用户名和密码).cmd 开通局域网共享.cmd 弹出光驱.bat 快速设定分辨率.cmd 恢复快捷方式的箭头.CMD 截图.CMD 打开快捷方式指向的目录.bat 批处理读注册表的Run下面的值.bat 按扩展名分类.bat ......

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值