Board logo

标题: DOS命令技巧集锦 [打印本页]

作者: 自由人     时间: 2002-12-31 00:00    标题: DOS命令技巧集锦

批处理的技巧是很多的,能完成许多Windows下做不来或做不好的事。
@echo off //取消命令运行时在屏幕的显示
echo. |date| find "Current" //只显示日期
echo. |time| find "Current" //只显示时间
:: //相当于rem
call //调用另外一个批文件
del %0 //自我删除
if "%1" == "字符串" goto //如 if "%1" == "/p" goto p
if "%1" == "字符串" 命令 //if "%1" == "/p" dir /w/p c:
if exist 文件 命令 //如果文件存在则运行命令
copy /b //文件合并
fdisk /mbr //卸载主引导记录 如果被LILO覆盖了主引导记录,可以用来清除
prompt $p$g //恢复提示符
echo Free and Open > new DOS.txt //将Free and Open写入new DOS.txt
echo Happy New year >> new DOS.txt //继续将Happy New year写入new DOS.txt
lh //将设备载入高端 如lh smartdrv /x
mode 80 恢复显示默认设置
mode mono 激活单色显示器
mode con:cols=40-80 lines=25-50 //40-80;25-50为参数
键盘控制
mode con:rate=32 delay=1 //轻捷
mode con:rate=20 delay=4 //准确
mode con:rate=20 delay=2 //默认
打印控制
mode com1:9600,8,N,1   //快速
mode lpt1=com1  
mode com1:2400,8,N,1  //慢速
mode lpt1=com1
echo 你好 > prn //测试打印
安装光驱
config.sys加中入
devicehigh=boot\CD-ROM.sys /d MSCD001
autoexec.bat加入
path boot
mscdex /d MSCD001 /m 12
//CD-ROM.sys 可用万能光驱IDE.sys代替
//菜单显示,选择
echo 1.
echo 2.
echo 3.
...
echo 9.
choice /c:123456789 /n 请选择:
if errorlevel 9 goto 9
if errorlevel 8 goto 8
if errorlevel 7 goto 7
if errorlevel 6 goto 6
if errorlevel 5 goto 5
if errorlevel 4 goto 4
if errorlevel 3 goto 3
if errorlevel 2 goto 2
if errotlevel 1 goto 1

简单的一个范例
@echo off
if "%1" == "/all" goto all
If exist c:\1.txt goto 1
echo 没有找到文件1.txt
goto end
:1
echo 文件1.txt存在,按任意键阅读...
pause > nul
type 1.txt | more
goto end
:all
dir /s/w/p 1.txt
:: 显示C盘子目录下所有1.txt
:end
作者: nre     时间: 2002-12-31 00:00
不错不错~  不过希望再归归类,这样的方式不方便查找和学习
请教个问题 DEL %0 怎么用?
更正一下上面一些不妥的地方
FDISK/MBR 不是删除MBR(主引导记录),而是用默认的主引导记录覆盖当前的MBR内容
copy /b 仅这个不能实现合并,/B是指定以2进制方式合并, /A就是ASIIC文件。
copy [/b/a] 文件1 + [/b/a] 文件2 +。。。[/B/A]文件N 目标文件

choice,mode,more都是外部命令,编BAT时如果用到这些命令,要考虑到文件存在否

作者: 自由人     时间: 2003-1-1 00:00
谢谢NRE指正不妥之处
把del %0加在批处理文件的最后嘛 完成后就自我删除了
上面绝大多数命令都可以直接插入批处理文件中使用
只是仅仅列出一部分技巧及不常用的命令参数,还有许多待我整理后将一一列出。当然如果有人有这方面的问题的话,我会很乐意为你解答。


作者: nre     时间: 2003-1-1 00:00
DEL 的这种用法还是第一次看到,经典~
我试了一下,%0里存的是调用文件的文件名,不包括扩展名
所以 需要加上扩展名 del %0.bat 才能实现自动删除
不过这么做,运行之后会出现BATCH FILE MISSING的提示
作者: tanglu_sd     时间: 2003-1-1 00:00
用win98自带的启动盘启动后的虚拟的盘,是怎么建立出来的?
作者: 小臣     时间: 2003-1-6 00:00    标题: 可以教一下我吗?

DEL %0 自我删除 有什么作用的呢???
作者: 小臣     时间: 2003-1-6 00:00
照你的写法来看,在DOS下,是不是要装UCDOS呢??
作者: 小臣     时间: 2003-1-6 00:00
有谁可以教教我在DOS下,我只会用FDISK CD DIR DEL SCANDISK MD RD 等这几个命令,请问DOS高手门还有没有其它的呢???请多多多多多指教!
作者: mys     时间: 2003-1-6 00:00
还有很多。
diskcopy
msav
xcopy
smartdrv
help
deltree
format
sys
...
作者: Wengier     时间: 2003-1-6 00:00
DEL %0这个命令很有问题,因为%0参数其实返回的是用于执行此批处理文件的命令行。例如,当我想执行ABC.BAT批文件的时候,在命令行上输入ABC或ABC.BAT都可以执行,这样,%0的值就可能完全不同,也就是说它的值为“ABC”或“ABC.BAT”等都可能。而若为前者的话,DEL %0也就是DEL ABC是不可能将ABC.BAT自身删除的。
作者: redtek     时间: 2006-9-29 06:17
要不就执行两句:

DEL   %0
DEL   %0.BAT

两条都写上,总有一个可以正常删掉自己~:)
作者: electronixtar     时间: 2006-9-29 07:27
del %~f0
作者: redtek     时间: 2006-9-29 07:47

C:\TEMP\t 1 2 3>type demo.bat

echo.
echo %0
echo %~f0
pause
del %~f0
C:\TEMP\t 1 2 3>
[code]

系统提示:
[code]
C:\TEMP\t 1 2 3>demo.bat

C:\TEMP\t 1 2 3>echo.


C:\TEMP\t 1 2 3>echo demo.bat
demo.bat

C:\TEMP\t 1 2 3>echo C:\TEMP\t 1 2 3\demo.bat
C:\TEMP\t 1 2 3\demo.bat

C:\TEMP\t 1 2 3>pause
请按任意键继续. . .

C:\TEMP\t 1 2 3>del C:\TEMP\t 1 2 3\demo.bat
系统找不到指定的文件。

C:\TEMP\t 1 2 3>
原来带空格的目录名DEL时没引号:)
C:\TEMP\t 1 2 3>type demo.bat
del "%~f0"
执行:
C:\TEMP\t 1 2 3>demo.bat

C:\TEMP\t 1 2 3>del "C:\TEMP\t 1 2 3\demo.bat"
被删掉了~:)

感谢 electronixtar 的精彩  %~f0 代码,我又学到好多东东~:)
后来for /? 的注释: %~fI        - 将 %I 扩展到一个完全合格的路径名

这个 %~f0 用的真精彩~:)
作者: jieok3375     时间: 2006-9-30 03:52
学习了
作者: winzip126     时间: 2006-10-23 23:24
收藏
作者: fengzhigu     时间: 2006-10-24 10:30    标题: wo ding

虽然不怎么看得懂,不过还是先支持你了吧!
作者: kingchain     时间: 2006-10-26 01:38
头一次见啊
%0
作者: lxmxn     时间: 2006-10-26 09:22

  还有很多呢。。
~I         - 删除任何引号("),扩充 %I
%~fI        - 将 %I 扩充到一个完全合格的路径名
%~dI        - 仅将 %I 扩充到一个驱动器号
%~pI        - 仅将 %I 扩充到一个路径
%~nI        - 仅将 %I 扩充到一个文件名
%~xI        - 仅将 %I 扩充到一个文件扩展名
%~sI        - 扩充的路径只含有短名
%~aI        - 将 %I 扩充到文件的文件属性
%~tI        - 将 %I 扩充到文件的日期/时间
%~zI        - 将 %I 扩充到文件的大小

作者: hymm2008     时间: 2006-10-28 02:58
學習中    !
作者: yeliuyuexue     时间: 2006-10-28 06:55
有没有初学者的教程?还没接触过的DOC的那级菜鸟的
作者: 13579974928     时间: 2006-10-30 07:10
好东西呀,正需要!!!
作者: nokia4321     时间: 2006-11-16 04:27
多谢分享!!!!!!!呵呵
作者: wto90111     时间: 2006-11-16 13:39
收藏慢慢学习.
作者: hxuan999     时间: 2006-11-17 06:28
%n, %%i, %i这类的变量都可以用这些拓展的方法.并且可以组合使用.比如:

%~nx0        可以列出文件的全名,含扩展名.
%%~ftzaI    这个显示出的样子就和我们执行DIR出来的样子差不多.

   另外:还可以查找一个文件是否存在.比如:
%1的内容为 "aaa.txt"
那么echo %~f$PATH:1就可以在%PATH%这个环境变量里所设置的目录下查找文件"aaa.txt",如果找到就按我们指定的内容显示出来,这里指定了f,就会显示出找到的文件的完全合格的路径名. 如果没找到返回一个空串.