【微软文档】Windows Commands
【易百教程】批处理教程
@:不显示当前命令
@echo off
echo:表示显示此命令后的字符。
C:\>echo 我在博客园
我在博客园
@echo off:此语句后所有运行的命令都不显示命令行本身
echo只有两种状态:打开和关闭。
执行echo off
将关闭回显,它后面的所有命令都不显示命令本身,只显示执行后的结果,除非执行echo on
命令。
@echo off
REM 将下面两行代码保存为test.bat文件
IF "1" == "1" ECHO 我是好人
PAUSE
#打印:
#我是好人
#请按任意键继续. . .
call:调用另一个批处理文件
call test2.bat
pause:暂时停止执行DOS命令,待用户键入任一字符才继续执行
::和rem:表示此命令后的字符为解释行(注释),不执行,只是给自己今后参考用的(相当于程序中的注释)。
REM 调用同一目录下的另一个批处理文件test2.bat
if:判断条件
IF "1" = "1" ECHO 相等
IF NOT "1" = "1" ECHO 相等
if exist:判断是否存在
IF exist c:\test.txt echo text.txt文件存在
IF not exist c:\test.txt echo text.txt文件存在
if errorlevel:判断上一条命令执行状态
@ECHO OFF
XCOPY TEST.TXT S:\TEMP
IF ERRORLEVEL 1 ECHO "Copy Failed"
IF ERRORLEVEL 0 ECHO "Copy Succeed"
XCOPY:复制文件
XCOPY TEST.TXT S:\TEMP
# 0 成功拷贝文件
# 1 未找到拷贝文件
# 2 用户通过ctrl-c中止拷贝操作
# 4 预置错误阻止文件拷贝操作
# 5 拷贝过程中写盘错误
choice:给用户选择
@echo off
CHOICE /C YNC /M "确认请按 Y,否请按 N,或者取消请按 C。"
PAUSE
#打印:
#确认请按 Y,否请按 N,或者取消请按 C。 [Y,N,C]?Y
#请按任意键继续. . .
for :循环
for %c in (*.txt) do type %c
%1~%9:输入参数
@ECHO OFF
IF EXIST %1 TYPE %1
IF NOT EXIST %1 ECHO %1 does not exist
%~*:路径相关命令
#规则如下:
#%~(f|d|p|n|x|s|a|t|z|$PATH)*[0-9]
cd %~dp0 #当前bat文件,带盘符的文件目录
#示例命令:
F:\Temp>Batch\test.bat "C:\Program Files\studying.txt"
- %~[0-9]:是指去除了引号的命令行参数
%~0指命令行本身,本例为Batch\test.bat
%~1指第一个参数,本例为C:\Program Files\studying.txt。以此类推。
注:%1也指第一个参数,本例却为“C:\Program Files\studying.txt”,这里是有引号的。
- %~f[0-9]:f - full,指绝对路径名
%~f0 - F:\Temp\Batch\test.bat
%~f1 - C:\Program Files\studying.txt
- %~d[0-9]:d - driver,指盘符
%~d0 - F:
%~d1 - C:
- %~p[0-9]:p - path,指不带盘符的目录名
%~p0 - \Temp\Batch\ 注:前后都有’\’
%~p1 - \Program Files\
- %~ n[0-9]:n - name,指文件的名字,注意不带扩展名
%~n0 - test
%~n1 - studying
- %~x[0-9]:x - extension,指文件的扩展名
%~x0 - .bat 注:前面有’.’
%~x1 - .txt
- %~s[0-9]:s - short,指带有DOS短名字(8字符)的绝对路径
%~s0 - F:\TEMP\BATCH\test.bat
%~s1 - C:\PROGRA~1\studying.txt
注:这里的目录名全是大写,而文件名全是小写
- %~a[0-9]:a - attribute,指文件的属性
%~a0 - —a———-
%~a1 - —a———-
注:这里每一位代表一种文件属性
- t:文件的修改日期
- z:文件的size
- %~$PATH:[0-9]:搜索PATH里面的目录,看是否能够找到命令行参数指定的文件。找到此文件,输出该文件的绝对路径;没有找到此文件,输出空字符串。
组合使用:上述的这些字符规则是可以组合起来使用的。例如,n和x组合表示带扩展名的文件名名字。
>、>>:输出重定向
会清除掉原有文件中的内容后把新的内容写入原文件,而>>只会另起一行追加新的内容到原文件中,而不会改动其中的原有内容。
echo @echo off > a.bat
echo echo This is a pipeline command example. >> a.bat
/?:查看命令的帮助
cd /?