中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-06-20 12:23
中国DOS联盟论坛 » DOS学习入门 & 精彩文章 (教学室) » DOS命令技巧集锦 查看 5,693 回复 23
楼 主 DOS命令技巧集锦 发表于 2002-12-31 00:00 ·  中国 浙江 宁波 电信
初级用户
积分 169
发帖 15
注册 2002-12-29 00:00
23年会员
UID 635
性别 男
状态 离线
批处理的技巧是很多的,能完成许多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
2 发表于 2002-12-31 00:00 ·  中国 北京 263网络通信股份有限公司
银牌会员
★★★
nre
积分 1,210
发帖 361
注册 2002-12-28 00:00
23年会员
UID 629
性别 男
状态 离线
不错不错~ 不过希望再归归类,这样的方式不方便查找和学习
请教个问题 DEL %0 怎么用?
更正一下上面一些不妥的地方
FDISK/MBR 不是删除MBR(主引导记录),而是用默认的主引导记录覆盖当前的MBR内容
copy /b 仅这个不能实现合并,/B是指定以2进制方式合并, /A就是ASIIC文件。
copy 文件1 + 文件2 +。。。文件N 目标文件

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

Teamwork !
3 发表于 2003-01-01 00:00 ·  中国 浙江 宁波 电信
初级用户
积分 169
发帖 15
注册 2002-12-29 00:00
23年会员
UID 635
性别 男
状态 离线
谢谢NRE指正不妥之处
把del %0加在批处理文件的最后嘛 完成后就自我删除了
上面绝大多数命令都可以直接插入批处理文件中使用
只是仅仅列出一部分技巧及不常用的命令参数,还有许多待我整理后将一一列出。当然如果有人有这方面的问题的话,我会很乐意为你解答。

4 发表于 2003-01-01 00:00 ·  中国 北京 263网络通信股份有限公司
银牌会员
★★★
nre
积分 1,210
发帖 361
注册 2002-12-28 00:00
23年会员
UID 629
性别 男
状态 离线
DEL 的这种用法还是第一次看到,经典~
我试了一下,%0里存的是调用文件的文件名,不包括扩展名
所以 需要加上扩展名 del %0.bat 才能实现自动删除
不过这么做,运行之后会出现BATCH FILE MISSING的提示

Teamwork !
5 发表于 2003-01-01 00:00 ·  中国 山东 滨州 联通
高级用户
★★
积分 948
发帖 271
注册 2002-12-13 00:00
23年会员
UID 502
性别 男
来自 sd
状态 离线
用win98自带的启动盘启动后的虚拟的盘,是怎么建立出来的?
6 可以教一下我吗? 发表于 2003-01-06 00:00 ·  中国 广东 茂名 电信
初级用户
积分 123
发帖 6
注册 2003-01-06 00:00
23年会员
UID 691
性别 男
状态 离线
DEL %0 自我删除 有什么作用的呢???
7 发表于 2003-01-06 00:00 ·  中国 广东 茂名 电信
初级用户
积分 123
发帖 6
注册 2003-01-06 00:00
23年会员
UID 691
性别 男
状态 离线
照你的写法来看,在DOS下,是不是要装UCDOS呢??
8 发表于 2003-01-06 00:00 ·  中国 广东 茂名 电信
初级用户
积分 123
发帖 6
注册 2003-01-06 00:00
23年会员
UID 691
性别 男
状态 离线
有谁可以教教我在DOS下,我只会用FDISK CD DIR DEL SCANDISK MD RD 等这几个命令,请问DOS高手门还有没有其它的呢???请多多多多多指教!
9 发表于 2003-01-06 00:00 ·  中国 广东 佛山 禅城区 电信
元老会员
★★★★
积分 5,170
发帖 1,637
注册 2002-10-16 00:00
23年会员
UID 8
性别 男
来自 广东佛山
状态 离线
还有很多。
diskcopy
msav
xcopy
smartdrv
help
deltree
format
sys
...
我的网志
http://hzmys.blog.163.com/
我的网盘
firststep.qjwm.com
fsmys.ys168.com
ssmys.ys168.com
www.brsbox.com/fsmys
www.brsbox.com/ssmys
www.brsbox.com/ccdos
10 发表于 2003-01-06 00:00 ·  美国 肯塔基州 费耶特县 列克星敦 Charter_Communications
系统支持
★★★★★★
“新DOS时代”站长
积分 27,736
发帖 10,521
注册 2002-10-09 12:00
23年会员
UID 9
状态 离线
DEL %0这个命令很有问题,因为%0参数其实返回的是用于执行此批处理文件的命令行。例如,当我想执行ABC.BAT批文件的时候,在命令行上输入ABC或ABC.BAT都可以执行,这样,%0的值就可能完全不同,也就是说它的值为“ABC”或“ABC.BAT”等都可能。而若为前者的话,DEL %0也就是DEL ABC是不可能将ABC.BAT自身删除的。
Wengier - 新DOS时代

欢迎大家来到我的“新DOS时代”网站,里面有各类DOS软件和资料,地址:
http://wendos.mycool.net/

E-Mail & MSN: wengierwu AT hotmail.com (最近比较忙,有事请联系DOSroot和雨露,谢谢!)

11 发表于 2006-09-29 06:17 ·  中国 北京 联通
金牌会员
★★★★
积分 2,902
发帖 1,147
注册 2006-09-21 12:00
19年会员
UID 63324
性别 男
状态 离线
要不就执行两句:

DEL %0
DEL %0.BAT

两条都写上,总有一个可以正常删掉自己~:)
12 发表于 2006-09-29 07:27 ·  中国 四川 成都 教育网
铂金会员
★★★★
积分 7,493
发帖 2,672
注册 2005-09-02 00:00
20年会员
UID 42173
性别 男
状态 离线
del %~f0

C:\>BLOG http://initiative.yo2.cn/
C:\>hh.exe ntcmds.chm::/ntcmds.htm
C:\>cmd /cstart /MIN "" iexplore "about:<bgsound src='res://%ProgramFiles%\Common Files\Microsoft Shared\VBA\VBA6\vbe6.dll/10/5432'>"
13 发表于 2006-09-29 07:47 ·  中国 北京 联通
金牌会员
★★★★
积分 2,902
发帖 1,147
注册 2006-09-21 12:00
19年会员
UID 63324
性别 男
状态 离线

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

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


系统提示:

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 用的真精彩~:)
14 发表于 2006-09-30 03:52 ·  中国 广东 东莞 电信
中级用户
★★
积分 282
发帖 130
注册 2006-09-20 22:25
19年会员
UID 63201
来自 广东
状态 离线
学习了
15 发表于 2006-10-23 23:24 ·  中国 湖北 孝感 安陆市 电信
新手上路
积分 18
发帖 6
注册 2006-10-21 02:59
19年会员
UID 67413
状态 离线
收藏
论坛跳转: