Board logo

标题: [转贴] 批处理常用命令及用法大全 [打印本页]

作者: youxi01    时间: 2007-10-29 18:18     标题: 批处理常用命令及用法大全

说明:本文来自网络,由youxi01整理

阅读本文需要一定的dos基础概念,象:盘符、文件、目录(文件夹)、子目录、根目录、当前目录
每个命令的完整说明请加 /? 参数参考微软的帮助文档可以看到,在 /? 帮助里,"命令扩展名"一词会经常出现"命令扩

展名"是指相对于win98的dos版本而言,每个命令新增的功能
命令测试环境win2000proSP4win98的命令功能太少,就不作研究了

注:如果对某一命令还不是很熟悉,可以在命令行窗口下输入:命令名/?的方式来获得帮助。
例如:对dir命令的应用不熟悉,可以在命令行窗口下输入:

dir /?

1 echo 和 @回显控制命令
@                    #关闭单行回显
echo off             #从下一行开始关闭回显
@echo off            #从本行开始关闭回显。一般批处理第一行都是这个
echo on              #从下一行开始打开回显
echo                 #显示当前是 echo off 状态还是 echo on 状态
echo.                #输出一个"回车换行",一般就是指空白行
echo hello world     #输出hello world
"关闭回显"是指运行批处理文件时,不显示文件里的每条命令,只显示运行结果批处理开始和结束时,系统都会自动打开

回显
2 errorlevel程序返回码

echo %errorlevel%每个命令运行结束,可以用这个命令行格式查看返回码用于判断刚才的命令是否执行成功默认值为0,

一般命令执行出错会设 errorlevel 为1

3 dir显示目录中的文件和子目录列表
dir                 #显示当前目录中的文件和子目录
dir /a              #显示当前目录中的文件和子目录,包括隐藏文件和系统文件
dir c: /a:d         #显示 C 盘当前目录中的目录
dir c:\ /a:-d       #显示 C 盘根目录中的文件dir d:\mp3 /b/p     #逐屏显示 d:\mp3 目录里的文件,只显示文件

名,不显示时间和大小
dir *.exe /s显示当前目录和子目录里所有的.exe文件其中 * 是通配符,代表所有的文件名,还一个通配符 ? 代表一个

任意字母或汉字如 c*.* 代表以 c 开头的所有文件?.exe 代表所有文件名是一个字母的.exe文件如果指定的目录或文件

不存在,将返回 errorlevel 为1;每个文件夹的 dir 输出都会有2个子目录 . 和 ... 代表当前目录.. 代表当前目录的

上级目录
dir .               #显示当前目录中的文件和子目录
dir ..              #显示当前目录的上级目录中的文件和子目录
其它参数可参考 dir /?

4 cd更改当前目录
cd mp3              #进入当前目录中的mp3 目录
cd ..               #进入当前目录中的上级目录
cd\                 #进入根目录
cd                  #显示当前目录
cd /d d:\mp3        #可以同时更改盘符和目录
cd "Documents and Settings"\All users文件名带空格,路径前需要加上引号!!如果更改到的目录不存在,则出错返

回 errorlevel=1

5 md创建目录
md abc              #在当前目录里建立子目录 abc
md d:\a\b\c         #如果 d:\a 不存在,将会自动创建

6 rd删除目录
rd abc              #删除当前目录里的 abc 子目录,要求为空目录
rd /s/q d:\temp     #删除 d:\temp 文件夹及其子文件夹和文件,不需要按 Y 确认

7 del删除文件
del d:\test.txt     #删除指定文件,不能是隐藏、系统、只读文件
del *.*删除当前目录里的所有文件,不包括隐藏、系统、只读文件,要求按 Y 确认
del /q/a/f d:\temp\*.*删除 d:\temp 文件夹里面的所有文件,包括隐藏、只读、系统文件,不包括子目录
del /q/a/f/s d:\temp\*.*删除 d:\temp 及子文件夹里面的所有文件,包括隐藏、只读、系统文件,不包括子目录

8 ren文件重命名
ren 1.txt 2.bak     #把 1.txt 更名为 2.bak
ren *.txt *.ini     #把当前目录里所有.txt文件改成.ini文件
ren d:\temp tmp     #支持对文件夹的重命名

9 cls清屏

10 type显示文件内容
type c:\boot.ini    #显示指定文件的内容,程序文件一般会显示乱码
type *.txt          #显示当前目录里所有.txt文件的内容

11 copy拷贝文件
copy c:\test.txt d:\复制 c:\test.txt 文件到 d:\
copy c:\test.txt d:\test.bak复制 c:\test.txt 文件到 d:\ ,并重命名为 test.bak
copy c:\*.*复制 c:\ 所有文件到当前目录,不包括隐藏文件和系统文件不指定目标路径,则默认目标路径为当前目录
copy con test.txt从屏幕上等待输入,按 Ctrl+Z 结束输入,输入内容存为test.txt文件con代表屏幕,prn代表打印机

,nul代表空设备
copy 1.txt + 2.txt 3.txt合并 1.txt 和 2.txt 的内容,保存为 3.txt 文件如果不指定 3.txt ,则保存到 1.txt
copy test.txt +复制文件到自己,实际上是修改了文件日期

12 title设置cmd窗口的标题
title 新标题        #可以看到cmd窗口的标题栏变了

13 ver显示系统版本

14 label 和 vol设置卷标
vol                 #显示卷标
label               #显示卷标,同时提示输入新卷标
label c:system      #设置C盘的卷标为 system

15 pause暂停命令
运行该命令时,将显示下面的消息:请按任意键继续 . . .
一般用于看清楚屏幕上显示的内容

16 rem 和 ::注释命令
注释行不执行操作

17 date 和 time日期和时间
date          #显示当前日期,并提示输入新日期,按"回车"略过输入
date/t        #只显示当前日期,不提示输入新日期
time          #显示当前时间,并提示输入新时间,按"回车"略过输入
time/t        #只显示当前时间,不提示输入新时间

18 goto 和 :跳转命令
:label        #行首为:表示该行是标签行,标签行不执行操作
goto label    #跳转到指定的标签那一行

19 find (外部命令)查找命令
find "abc" c:\test.txt在 c:\test.txt 文件里查找含 abc 字符串的行如果找不到,将设 errorlevel 返回码为1
find /i "abc" c:\test.txt查找含 abc 的行,忽略大小写
find /c "abc" c:\test.txt显示含 abc 的行的行数

20 more (外部命令)逐屏显示
more c:\test.txt    #逐屏显示 c:\test.txt 的文件内容

21 tree显示目录结构
tree d:\            #显示D盘的文件目录结构

22 &顺序执行多条命令,而不管命令是否执行成功
c: & cd\ & dir /w相当于把下面3行命令写到1行去了c:cd\dir /w

23 &&顺序执行多条命令,当碰到执行出错的命令后将不执行后面的命令
f: && cd\ && dir >c:\test.txt注意如果f盘不存在,那么后面2条命令将不会执行
find "ok" c:\test.txt && echo 成功如果找到了"ok"字样,就显示"成功",找不到就不显示

24 ||顺序执行多条命令,当碰到执行正确的命令后将不执行后面的命令

find "ok" c:\test.txt || echo 不成功如果找不到"ok"字样,就显示"不成功",找到了就不显示

25 |管道命令
前一个命令的执行结果输出到后一个命令
dir *.* /s/a | find /c ".exe"管道命令表示先执行 dir 命令,对其输出的结果执行后面的 find 命令该命令行结果:

输出当前文件夹及所有子文件夹里的.exe文件的个数
type c:\test.txt|more这个和 more c:\test.txt 的效果是一样的

26 > 和 >>输出重定向命令
> 清除文件中原有的内容后再写入>> 追加内容到文件末尾,而不会清除原有的内容主要将本来显示在屏幕上的内容输出

到指定文件中指定文件如果不存在,则自动生成该文件
echo hello world>c:\test.txt生成c:\test.txt文件,内容为hello world这个格式在批处理文件里用得很多,可以生成

.reg .bat .vbs 等临时文件
type c:\test.txt >prn屏幕上不显示文件内容,转向输出到打印机
echo hello world>con在屏幕上显示hello world,实际上所有输出都是默认 >con 的
copy c:\test.txt f: >nul拷贝文件,并且不显示"文件复制成功"的提示信息,但如果f盘不存在,还是会显示出错信息
copy c:\test.txt f: >nul 2>nul不显示"文件复制成功"的提示信息,并且f盘不存在的话,也不显示错误提示信息
echo ^^W ^> ^W>c:\test.txt生成的文件内容为 ^W > W^ 和 > 是控制命令,要把它们输出到文件,必须在前面加个 ^

符号
27 <从文件中获得输入信息,而不是从屏幕上
一般用于 date time label 等需要等待输入的命令
@echo offecho 2005-05-01>temp.txtdate <temp.txtdel temp.txt这样就可以不等待输入直接修改当前日期

28.
%0 %1 %2 %3 %4 %5 %6 %7 %8 %9 %*命令行传递给批处理的参数
%0 批处理文件本身%1 第一个参数%9 第九个参数%* 从第一个参数开始的所有参数在C盘根目录新建test.bat,内容如下:
  1. @echo off
  2. echo %0
  3. echo %1
  4. echo %2
  5. echo %*
复制代码
运行cmd,输入 c:\test.bat "/a" /b /c /d可以看出每个参数的含意
修改test.bat内容如下
  1. @echo off
  2. echo %1
  3. echo %~1
  4. echo %0
  5. echo %~f0
  6. echo %~d0
  7. echo %~p0
  8. echo %~n0
  9. echo %~x0
  10. echo %~s0
  11. echo %~a0
  12. echo %~t0
  13. echo %~z0
复制代码
再运行cmd,输入 c:\test.bat "/a" /b /c /d可以参照 call/? 或 for/? 看出每个参数的含意注意这里可以对文件进行日期比较和大小比较
  1. echo load "%%1" "%%2">c:\test.txt
复制代码
生成的文件内容为 load "%1" "%2"
批处理文件里,用这个格式把命令行参数输出到文件

31 set设置变量
引用变量可在变量名前后加 % ,即 %变量名%
set                    #显示目前所有可用的变量,包括系统变量和自定义的变量
echo %SystemDrive%     #显示系统盘盘符。系统变量可以直接引用
set p                  #显示所有以p开头的变量,要是一个也没有就设errorlevel=1
set p=aa1bb1aa2bb2     #设置变量p,并赋值为 = 后面的字符串,即aa1bb1aa2bb2
echo %p%               #显示变量p代表的字符串,即aa1bb1aa2bb2
echo %p:~6%            #显示变量p中第6个字符以后的所有字符,即aa2bb2
echo %p:~6,3%          #显示第6个字符以后的3个字符,即aa2
echo %p:~0,3%          #显示前3个字符,即aa1
echo %p:~-2%           #显示最后面的2个字符,即b2
echo %p:~0,-2%         #显示除了最后2个字符以外的其它字符,即aa1bb1aa2b
echo %p:aa=c%          #用c替换变量p中所有的aa,即显示c1bb1c2bb2
echo %p:aa=%           #将变量p中的所有aa字符串置换为空,即显示1bb12bb2
echo %p:*bb=c%         #第一个bb及其之前的所有字符被替换为c,即显示c1aa2bb2
set p=%p:*bb=c%        #设置变量p,赋值为 %p:*bb=c% ,即c1aa2bb2
set /a p=39            #设置p为数值型变量,值为39
set /a p=39/10         #支持运算符,有小数时用去尾法,39/10=3.9,去尾得3,p=3set /a p=p/10          #用 /a

参数时,在 = 后面的变量可以不加%直接引用set /a p="1&0"         #"与"运算,要加引号。其它支持的运算符参见

set/?
set p=                 #取消p变量
set /p p=请输入屏幕上显示"请输入",并会将输入的字符串赋值给变量p注意这条可以用来取代 choice 命令
注意变量在 if 和 for 的复合语句里是一次性全部替换的,如
@echo off
set p=aaa
if %p%==aaa (   
  echo %p%   
  set p=bbb   
  echo %p%    )
结果将显示aaaaaa因为在读取 if 语句时已经将所有 %p% 替换为aaa这里的"替换",在 /? 帮助里就是指"扩充"、"环境

变量扩充"可以启用"延缓环境变量扩充",用 ! 来引用变量,即 !变量名!
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
set p=aaaif %p%==aaa (  
  echo %p%   
set p=bbb   
echo !p!    )
ENDLOCAL
结果将显示aaabbb
还有几个动态变量,运行 set 看不到
%CD%                  #代表当前目录的字符串
%DATE%                #当前日期
%TIME%                #当前时间
%RANDOM%              #随机整数,介于0~32767
%ERRORLEVEL%          #当前ERRORLEVEL 值
%CMDEXTVERSION%       #当前命令处理器扩展名版本号
%CMDCMDLINE%          #调用命令处理器的原始命令行可以用echo命令查看每个变量值,如 echo %time%注意 %time%

精确到毫秒,在批处理需要延时处理时可以用到

32 start批处理中调用外部程序的命令,否则等外部程序完成后才继续执行剩下的指令
start explorer d:\调用图形界面打开D盘
@echo offcd /d %~dp0regedit /s 劲舞团.regstart patcher.exe
不加 start 命令的话,"劲舞团"运行时,后面会有个黑乎乎的cmd窗口

33 call批处理中调用另外一个批处理的命令,否则剩下的批处理指令将不会被执行有时有的应用程序用start调用出错的

,也可以call调用

34 choice (外部命令)选择命令让用户输入一个字符,从而选择运行不同的命令,返回码errorlevel为1234……win98里

是choice.comwin2000pro里没有,可以从win98里拷过来win2003里是choice.exechoice /N /C y /T 5 /D y>nul延时5秒

下面是个 choice 语句的例子
@echo off
rem 以下在win2000pro运行通过,从win98里拷的chioce.com文件
choice /c:abc aaa,bbb,ccc
if errorlevel 3 goto ccc
if %errorlevel%==2 goto bbb
if errorlevel==1 goto aaa
rem 必须先判断数值高的返回码rem 可以看到 errorlevel 值的判断有3种写法,有时某种写法不好用,可以用另外的写法
rem 直接运行

chioce相当于运行
choice /c:yn:aaa
echo aaa
goto end
:bbb
echo bbb
goto end
:ccc
echo ccc
goto end
:end

35 assoc 和 ftype文件关联assoc 设置'文件扩展名'关联,关联到'文件类型'ftype 设置'文件类型'关联,关联到'执行程序和参数'当你双击一个.txt文件时,windows并不是根据.txt直接判断用 notepad.exe 打开而是先判断.txt属于 txtfile '文件类型'再调用 txtfile 关联的命令行 txtfile=%SystemRoot%\system32\NOTEPAD.EXE %1可以在"文件夹选项"→"文件类型"里修改这2种关联
assoc           #显示所有'文件扩展名'关联
assoc .txt      #显示.txt代表的'文件类型',结果显示 .txt=txtfile
assoc .doc      #显示.doc代表的'文件类型',结果显示 .doc=Word.Document.8
assoc .exe      #显示.exe代表的'文件类型',结果显示 .exe=exefile
ftype           #显示所有'文件类型'关联
ftype exefile   #显示exefile类型关联的命令行,结果显示 exefile="%1" %* assoc .txt=Word.Document.8设置.txt为word类型的文档,可以看到.txt文件的图标都变了
assoc .txt=txtfile恢复.txt的正确关联 ftype exefile="%1" %*恢复 exefile 的正确关联

如果该关联已经被破坏,可以运行 command.com ,再输入这条命令

36 pushd 和 popd切换当前目录
@echo off
c: & cd\ & md mp3       #在 C:\ 建立 mp3 文件夹
md d:\mp4               #在 D:\ 建立 mp4 文件夹
cd /d d:\mp4            #更改当前目录为 d:\mp4
pushd c:\mp3            #保存当前目录,并切换当前目录为 c:\mp3
popd                    #恢复当前目录为刚才保存的 d:\mp4一般用处不大,在当前目录名不确定时,会有点帮助

32 subst (外部命令)映射磁盘。
subst z: \\server\d     #这样输入z:就可以访问\\server\d了
subst z: /d             #取消该映射
subst                   #显示目前所有的映

38  xcopy (外部命令)文件拷贝
xcopy d:\mp3 e:\mp3 /s/e/i/y复制 d:\mp3 文件夹、所有子文件夹和文件到 e:\ ,覆盖已有文件加 /i 表示如果 e:\ 没有 mp3 文件夹就自动新建一个,否则会有询问

39 一些不常用的内部命令
>& 将一个句柄的输出写入到另一个句柄的输入中
<& 从一个句柄读取输入并将其写入到另一个句柄输出中shift 命令行传递给批处理的参数不止9个时,用以切换参数color 设置cmd窗口的显示颜色
pormpt 更改命令提示符号,默认都是 盘符:\路径\> ,如 c:\>

40 format (外部命令)格式化硬盘
format c: /q/u/autotest/q表示快速格式化,/autotest表示自动格式化,不需要按 Y 确认/u表示每字节用

F6 覆盖硬盘数据,使其不可用软件恢复format c: /c格式化C盘,并检测坏道

41 fdisk (外部命令)硬盘分区win2000不带

该命令win98里的fdisk不支持80G以上大硬盘,winme里的支持fdisk/mbr重建硬盘分区表,一般用于清除引导区病毒、还

原精灵注意使用该命令不能从硬盘启动,必须软驱或光驱启动后直接运行

42 ping (外部命令)
ping -l 65500 -t 192.168.1.200不停的向192.168.1.200计算机发送大小为65500byte的数据包
ping -n 10 127.0.0.1>nulping自己10次,可用于批处理延时10秒

43 SC (外部命令)服务控制命令
sc create aaa displayname= bbb start= auto binpath= "C:\WINDOWS\System32\alg.exe"创建服务,服务名称aaa,显示名称bbb,启动类型:自动可执行文件的路径"C:\WINDOWS\System32\alg.exe"
sc description aaa "ccc"更改aaa的描述为ccc
sc config aaa start= disabled binpath= "C:\WINDOWS\System32\svchost.exe -k netsvcs"更改aaa的启动类型:已禁用更改aaa的可执行文件的路径"C:\WINDOWS\System32\svchost.exe -k netsvcs"
sc config aaa start= demand displayname= ddd更改aaa的启动类型:手动更改aaa的显示名称ddd
sc start aaa启动aaa服务
sc stop aaa停止aaa服务
sc delete aaa删除aaa服务
作者: 辉少    时间: 2007-12-10 00:58

不懂呀
可以说得清楚一点吗?
作者: ieutk    时间: 2007-12-10 01:40

哪里有不懂的可以提出来
作者: wdmzjhk    时间: 2008-3-1 19:08

看不懂啊,特别是for与%。没有搞懂是什么意思哦,能不能多举几个列子哦,将详细点。
作者: ldbin    时间: 2008-3-22 14:08     标题: 好像有问题啊

怎么这个帖子看起来那么乱啊!
上次我看的时候还没这个问题的!
是不是网站出现问题啦
中间的空格和换行呢?怎么不见了?全是下边这样了!



说明:本文来自网络,由youxi01整理 阅读本文需要一定的dos基础概念,象:盘符、文件、目录(文件夹)、子目录、根目录、当前目录每个命令的完整说明请加 /? 参数参考微软的帮助文档可以看到,在 /? 帮助里,"命令扩展名"一词会经常出现"命令扩 展名"是指相对于win98的dos版本而言,每个命令新增的功能命令测试环境win2000proSP4win98的命令功能太少,就不作研究了 注:如果对某一命令还不是很熟悉,可以在命令行窗口下输入:命令名/?的方式来获得帮助。例如:对dir命令的应用不熟悉,可以在命令行窗口下输入: dir /? 1 echo 和 @回显控制命令 @ #关闭单行回显 echo off #从下一行开始关闭回显 @echo off #从本行开始关闭回显。一般批处理第一行都是这个 echo on #从下一行开始打开回显 echo #显示当前是 echo off 状态还是 echo on 状态 echo. #输出一个"回车换行",一般就是指空白行 echo hello world #输出hello world "关闭回显"是指运行批处理文件时,不显示文件里的每条命令,只显示运行结果批处理开始和结束时,系统都会自动打开 回显 2 errorlevel程序返回码 echo %errorlevel%每个命令运行结束,可以用这个命令行格式查看返回码用于判断刚才的命令是否执行成功默认值为0, 一般命令执行出错会设 errorlevel 为1 3 dir显示目录中的文件和子目录列表 dir #显示当前目录中的文件和子目录 dir /a #显示当前目录中的文件和子目录,包括隐藏文件和系统文件 dir c: /a:d #显示 C 盘当前目录中的目录 dir c:\ /a:-d #显示 C 盘根目录中的文件dir d:\mp3 /b/p #逐屏显示 d:\mp3 目录里的文件,只显示文件 名,不显示时间和大小 dir *.exe /s显示当前目录和子目录里所有的.exe文件其中 * 是通配符,代表所有的文件名,还一个通配符 ? 代表一个 任意字母或汉字如 c*.* 代表以 c 开头的所有文件?.exe 代表所有文件名是一个字母的.exe文件如果指定的目录或文件 不存在,将返回 errorlevel 为1;每个文件夹的 dir 输出都会有2个子目录 . 和 ... 代表当前目录.. 代表当前目录的 上级目录 dir . #显示当前目录中的文件和子目录 dir .. #显示当前目录的上级目录中的文件和子目录其它参数可参考 dir /? 4 cd更改当
作者: 随风    时间: 2008-3-22 15:50     标题: 回复 22楼 的帖子

是的,这两天论坛的 批处理教学&资料 版块是出了点问题,无法正常显示换行。
正在处理当中。。。。。
作者: dkfzz    时间: 2008-4-26 16:44

谢谢楼主,如果有动画教程那就更完善了解
作者: wjta    时间: 2008-4-26 19:43

CR(0D) 命令行结束符
Escape(1B) ANSI转义字符引导符
Space(20) 常用的参数界定符
Tab(09) ; = 不常用的参数界定符
+ COPY命令文件连接符
* ? 文件通配符
“” 字符串界定符
| 命令管道符
<> >> 文件重定向符
@ 命令行回显屏蔽符
/ 参数开关引导符
: 批处理标签引导符
% 批处理变量引导符
作者: hq200078    时间: 2008-5-19 09:31

如果把命令字与解说的字体颜色用改为不相同就好,便于我们这些新手查找
作者: freshlin    时间: 2008-6-24 17:05     标题: 看到28时不太懂

offecho %1echo %~1echo %0echo %~f0echo %~d0echo %~p0echo %~n0echo %~x0echo %~s0echo %~a0echo %~t0echo %~z0

这一段之前不太明白,后来查了for /?,看了帮助文档才大概明白了意思。

谢谢了。这样带着问题去学习感觉好多了,要不都不知道如何下手。
作者: mkl    时间: 2008-8-19 18:54

%SystemDrive% 是什么意思以及像这样一类的 %SystemRoot% %userprofile% 呢?
作者: lyf2008    时间: 2008-10-21 20:25     标题: 这里我不明白

@echo offecho %1echo %~1echo %0echo %~f0echo %~d0echo %~p0echo %~n0echo %~x0echo %~s0echo %~a0echo %

~t0echo %~z0
再运行cmd,输入 c:\test.bat "/a" /b /c /d可以参照 call/? 或 for/? 看出每个参数的含意注意这里可以对文件进行
这里的~ 是啥意思,LZ帮忙解释下,小弟在此拜谢!
作者: solitude    时间: 2008-11-12 22:42

%CD%                  #代表当前目录的字符串
%DATE%                #当前日期
%TIME%                #当前时间
%RANDOM%              #随机整数,介于0~32767
%ERRORLEVEL%          #当前ERRORLEVEL 值
%CMDEXTVERSION%       #当前命令处理器扩展名版本号
%CMDCMDLINE%          #调用命令处理器的原始命令行可以用echo命令查看每个变量值,如 echo %time%注意 %time%

很多都不知道.特别是随即整数很有用!
作者: syl0o0o    时间: 2009-2-17 20:47

能不能出一些题目来给我们这些新手做啊``新手做新手的题目```
作者: Batcher    时间: 2009-2-18 17:19     标题: 回复 68楼 的帖子

新手练功区有很多习题
作者: sjminh    时间: 2009-2-18 18:07

整理的非常全面,但是好像不够细致,也很好了。给你打85分
作者: hack1988    时间: 2009-3-14 14:43     标题: 奇怪的事啊

这是咋回事啊?真的很奇怪列?我哪里错了!
C:\Documents and Settings\Administrator>d:

D:\>cd C:\Program Files\Freesoft\装机人员工具\自动填IP地址

D:\


[ 本帖最后由 Batcher 于 2009-5-16 13:37 编辑 ]
作者: tireless    时间: 2009-3-14 14:50     标题: 回复 75楼 的帖子

C:\>cd /?
显示当前目录名或改变当前目录。

CHDIR [/D] [drive:][path]
CHDIR [..]
CD [/D] [drive:][path]
CD [..]

  ..   指定要改成父目录。

键入 CD 驱动器: 显示指定驱动器中的当前目录。
不带参数只键入 CD,则显示当前驱动器和目录。

使用 /D 命令行开关,除了改变驱动器的当前目录之外,
还可改变当前驱动器。

               .
作者: lig379    时间: 2009-3-19 14:44

看的很懵懂。能不能出些题出来。让人快速的掌握这些知识呢
作者: Batcher    时间: 2009-3-19 16:15     标题: 回复 77楼 的帖子

请到新手练功区查找
作者: an1016gel    时间: 2009-3-22 22:34     标题: 回复 2楼 的帖子

能不能弄个更详细点de.。我菜鸟。。
作者: Batcher    时间: 2009-3-22 22:51     标题: 回复 80楼 的帖子

本版有很多关于单个命令的具体讲解,请耐心阅读。
作者: byxy48766    时间: 2009-4-1 20:00

楼主讲的是不错,最好是多点例子,这样可以提高我们的学习能力!个人意见!
作者: brianwang    时间: 2009-4-2 17:48

echo 我是新人,一个星期前开始看批处理.<<>批处理常用命令及用法大全>到现在看了差不多10遍了,每次看完都能从中学习到新的东西. 再配合<<新手练功>>,学习效果很好. 感谢版主/管理员.
作者: qjfke    时间: 2009-4-14 16:28

有没有更详细在  ping    命令   详细的,
作者: l459812987    时间: 2009-4-15 00:29     标题: 怎么创建个TXT或者BAT的文件啊

怎么创建个TXT或者BAT的文件啊
作者: Batcher    时间: 2009-4-15 01:25     标题: 回复 88楼 的帖子

在桌面空白处单击鼠标右键,新建,文本文档。
以上步骤建立txt文件以后,打开它,输入批处理代码,文件,另存为,test.bat
作者: gxqwl    时间: 2009-5-25 14:39

决定了!
努力学习!
一定学好批处理!
作者: zjy878745    时间: 2009-5-30 16:52

有从易到难,从简到繁的教程和练习就好了,这东西一下子可不容易
现在至少明白了一点啊!
作者: caoranfeng    时间: 2009-6-9 14:15

很好很强大
作者: lqh2211    时间: 2009-6-12 09:58     标题: 终于看完了

虽然看完了,但是这句还是对照的有点难理解:
for /l %%i in (1,1,%sy%) do (
    set /a leap="^!(%%i %% 4) & ^!(^!(%%i %% 100)) | ^!(%%i %% 400)"
    set /a days=days+365+leap
)
作者: jinhuajun521    时间: 2009-7-2 11:10

看不懂  多举些例子 谢谢
作者: funeral    时间: 2009-7-9 19:27

请问回显是什么????
作者: funeral    时间: 2009-7-9 19:58

请问斜纲与反斜纲有什么区别?请解答!
作者: zxy33zlj    时间: 2009-7-9 20:27

其实管理员说的挺好的  挺细心认真  真是...感动   
大家顶下吧
作者: keen    时间: 2009-7-9 22:30     标题: 回复 101楼 的帖子

回显 楼主在文章中已经说明了:
"关闭回显"是指运行批处理文件时,不显示文件里的每条命令,只显示运行结果。批处理开始和结束时,系统都会自动打开回显

你可以用下面的代码比较 关闭回显 和 开启回显 的不同:
  1. @echo off
  2. ::关闭回显
  3. echo hello bat!
  4. pause
复制代码
  1. ::开启回显
  2. echo hello bat!
  3. pause
复制代码
可以通过比较上面两个代码的运行结果,理解什么是 回显。
作者: keen    时间: 2009-7-9 22:36     标题: 回复 102楼 的帖子

你说的斜杠和反斜杠是这两个个符号吗:"\"和"/"
斜杠"\"一般用在路径中,反斜杠"/"后面一般跟命令的参数
作者: eduuuu    时间: 2009-7-14 12:04

不错,特别是assoc  和 ftype 这两个命令 很实用, 有些文件关联真是一团乱. ping 那些懂,不过一台家用机的死亡ping太弱了. 觉得 tracert实用些.呵呵
作者: canyuexiaolang    时间: 2009-8-25 10:30

choice 这个命令我家怎么用不了
提示不是内部命令或外部命令
作者: keen    时间: 2009-8-25 12:34     标题: 回复 118楼 的帖子

xp中没有choice命令了
作者: simon2006    时间: 2009-8-27 17:04

你说的这些命令可以运行的最低os版本是多少?
作者: cave    时间: 2009-10-8 22:13

注意变量在 if 和 for 的复合语句里是一次性全部替换的
作者: s200391068    时间: 2009-10-15 09:29

有没有更详细的批处理命令讲解啊
作者: keen    时间: 2009-10-15 14:22     标题: 回复 128楼 的帖子

可以参看这个帖子:
http://bbs.bathome.net/thread-5814-1-1.html
作者: keen    时间: 2009-10-15 14:23     标题: 回复 127楼 的帖子

什么叫“命令语法不正解”?
作者: yblzp    时间: 2009-10-31 12:09

第23个&&命令,如果出错的不是第一个,而是2个的话它还要执行第后面的命令吗?我试了试,还还是完全执行了啊?还有就是%,没看懂,能否再举几个例子啊?
作者: clon2000    时间: 2009-12-27 22:36

奇怪,为什么我把文本文档改成 .bat了,但是我的文档还是记事本的呀?只不过名字变成原来的加上.bat了,还是一个记事本文件·
作者: ycy8357    时间: 2010-9-28 17:50

不要光看,看一个就练习一下,搞不懂了再看一下,如些往返。。。。笨。。。
作者: chenk11    时间: 2010-10-3 15:26

慢慢看。。。。。。。。。。。。。。
作者: 598463598    时间: 2010-10-5 19:07

学习学习  set不懂....还有延时10秒的那个
作者: sohu    时间: 2010-12-4 10:44

现在学晚不晚??
作者: fane    时间: 2010-12-5 23:05

很好啊,学习中。但是由于我是菜鸟,有些不是很明白,继续学习中。
作者: liusen    时间: 2011-4-10 21:49

有点复杂了
作者: yinzzi    时间: 2011-12-4 11:07

好全面的教程啊,看来要慢慢看了。。
作者: frankyou2011    时间: 2011-12-30 09:27

努力学习中。
作者: awk    时间: 2011-12-30 10:43

回复 47# clon2000


因为你的资源管理器默认没有显示文件的扩展名,可以现在CMD窗口里面运行一下这个命令:
  1. reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "HideFileExt" /t REG_DWORD /d 0 /f
复制代码

作者: awk    时间: 2011-12-30 10:44

回复 46# yblzp


你试试这个:
  1. dir && dirrr && echo hello
复制代码

作者: awk    时间: 2011-12-30 23:29

回复 53# look123look
  1. @echo off
  2. set /p "input=请输入:"
  3. if %input% equ 1 (
  4.     echo 1
  5. ) else if %input% equ 2 (
  6.     echo 2
  7. ) else (
  8.     echo 不是1或2
  9. )
  10. pause
复制代码

作者: xiaopo    时间: 2012-4-5 22:38

第28个排版有问题吗?怎么看起来那么不顺。。。
作者: Batcher    时间: 2012-4-5 23:22

回复 64# xiaopo


已更新
感谢指出
作者: cb02356828    时间: 2012-4-9 22:41

  1. 学习了,很好很强大
复制代码

作者: 菜鸟一个    时间: 2012-4-14 10:23

楼主你好..我想问下....我在bat目录下面有很多年月日的文件夹.我想弄个批处理 一执行 这个批处理 就删除签名三十天的 文件夹.问这个要怎么写?
作者: Batcher    时间: 2012-4-14 10:58

回复 67# 菜鸟一个


    楼主多年之前就不玩批处理了,建议到求助区发帖。
作者: 菜鸟一个    时间: 2012-4-16 00:22

以前学过 批处理...学的还行.也能整点东西出来...好几年没用.没看..现在因为工作需要.又接触批处理..忘记了很多..现在从新开始学..谢谢LZ整理
作者: cjiabing    时间: 2012-4-16 22:51

回复 69# 菜鸟一个


    具体问题请到咨询&讨论版本提问。
作者: lokivalentine    时间: 2012-6-4 12:07

非常感谢楼主分享,很详细!我全部都认真开了一遍。谢谢~
作者: zy754    时间: 2012-6-6 10:47

@echo off
echo ---按1键关机,按回车键。
set num=1
set /p num=请输入要执行的操作
if "%num%"=="1"(
logoff
)
echo %num%
在XP 不能运行注销求帮助
作者: chengeng430    时间: 2012-7-12 15:48

回显是什么意思
作者: cjiabing    时间: 2012-7-19 14:29

回复 73# chengeng430


    显示到屏幕——命令提示符窗口
作者: Batcher    时间: 2012-10-27 16:58

回复 75# 南华痞子


第三 该论坛的验证码有点小变态 3位数相乘 用户还是去找计算器

为了减少广告贴
3贴之后就不需要验证码了
作者: zangaopc    时间: 2012-10-30 20:21

好吧  那这是我的第二贴  感谢楼主分享
作者: wsy5907940    时间: 2013-1-28 18:26

28.
%0 %1 %2 %3 %4 %5 %6 %7 %8 %9 %*命令行传递给批处理的参数
%0 批处理文件本身%1 第一个参数%9 第九个参数%* 从第一个参数开始的所有参数在C盘根目录新建test.bat,内容如下
着快完全就没看懂。希望能详细点, 而且那个CD 在win7里面不好使
作者: huoliuxing    时间: 2013-3-23 15:36

谢谢了!不错的教程!
作者: yt_0o0    时间: 2013-4-4 21:03

感觉copy的xcopy不是很理解啊,他们之间到底有什么区别?
作者: chok    时间: 2013-4-12 15:09

能把下面两个if语句能将的清楚点么?为什么会返回这样的值。
@echo off
set p=aaa
if %p%==aaa (   
  echo %p%   
  set p=bbb   
  echo %p%    )
结果将显示aaaaaa

@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
set p=aaaif %p%==aaa (  
  echo %p%   
set p=bbb   
echo !p!    )
ENDLOCAL
结果将显示aaabbb
作者: cjiabing    时间: 2013-4-14 23:55

回复 81# chok

需要学习变量延迟的用法,请搜索相关内容:
   
  1. @echo off
  2. set p=aaa
  3. if %p%==aaa (
  4. echo %p%
  5. set p=bbb
  6. echo %p%
  7. SETLOCAL ENABLEDELAYEDEXPANSION
  8. set p=ccc
  9. echo %p%
  10. echo !p!
  11. )
  12. pause
复制代码

作者: tobeornot    时间: 2013-4-29 16:37

好多命令··看不过来···
作者: ysp    时间: 2013-9-2 21:54

不错,学习了
作者: jinweiqin    时间: 2013-10-16 10:51

菜鸟来学习了。
作者: pkqq125    时间: 2013-12-16 01:23

这个要好好支持才行呢
作者: wokong    时间: 2014-1-3 19:09

已经学习并且完全理解
作者: 小夕521    时间: 2014-3-4 10:35

学习一下,准确写一个对服务器进行监控的批处理
作者: bianfeng218    时间: 2014-4-2 14:13

为什么不支持Markdown语法发帖和回复啊?
作者: miskel    时间: 2014-8-20 14:14

很好的帖子,学习了,巩固了,收藏了
作者: shenbj    时间: 2014-9-5 22:42

好资料,学习很多天了,非常有用
作者: chsd001    时间: 2014-11-1 22:53

谢谢分享!!!
作者: CYUYAN09    时间: 2014-11-26 20:36

这个总结的很全的啊,但是必须是学过前期课程的才能看的懂
作者: Colin3    时间: 2015-1-7 14:43

正在一点一点学习,感觉这个网站非常好,各种资源也非常棒,另外,感谢楼主的帖子!
作者: 高鹏    时间: 2015-8-1 16:59

28.
%0 %1 %2 %3 %4 %5 %6 %7 %8 %9 %*命令行传递给批处理的参数
%0 批处理文件本身%1 第一个参数%9 第九个参数%* 从第一个参数开始的所有参数在C盘根目录新建test.bat,内容如下:
@echo off
echo %0
echo %1
echo %2
echo %*
复制代码这个不懂
作者: qhmpv    时间: 2019-6-18 21:54

呃,我想问下子目录与子文件夹有什么区别??
作者: liziyunabcd    时间: 2019-8-23 16:37

现是9102年了,居然还在看2008年的贴子!!!牛
作者: riche0604    时间: 2020-12-1 22:25

2 errorlevel程序返回码

echo %errorlevel%每个命令运行结束,可以用这个命令行格式查看返回码用于判断刚才的命令是否执行成功默认值为0,

一般命令执行出错会设 errorlevel 为1
----------------------------------------------------------------------
这个说明应该是有问题的:我测试过,应该可以这样理解,不管win命令执行的成功还是失败, errorlevel 都为0;如果执行的不是win命令, errorlevel 值才为1。
作者: 萌新挂B    时间: 2022-3-2 17:54

我也是新手,刚刚写了一个批处理,有关磁盘碎片整理的,修改了好2次,从版本号v1.0到修改到现在已经是v1.2了。这帖子很有用。虽然并不是所有东西都能看明白,但是我深信总有一天我能攻克。收藏先,感谢感谢!




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2