目录
查看帮助
win+r 运行程序中输入“cmd”打开命令行。
查看帮助文档,help命令查看常用命令。查看某个命令的使用方法:help 命令关键词;
如查看copy使用:help copy。
有时发现盘符切换很困难,先切换盘符再进入指定路径。 cmd命令行切换盘符: 比如D盘切换到F盘(盘符+:)
如果文件路径中存在空格,该路径需要使用“”标注。
1、创建目录 mkdir
在当前文件夹创建文件folder。
mkdir folder
2、创建文本文件 echo
将文本字符串"tmp1file0" 、日期 %date%和时间 %time%写入到folder\file0.txt文件。“>”输出定向符号,表示将内容输出到什么文件。">>" 在文件后追加写入。
echo "tmp1file0" %date% %time% > folder\file0.txt
echo "second write" >> folder\file0.txt
其中:
echo 命令表示显示消息,或者启用或关闭命令回显。
echo off 关闭回显
echo on 打开回显
@ 放在命令行首表示关闭改行命令回显
@ echo off 不显示echo off
3、删除文件和文件夹 rd、del
rd删除目录,del 删除一个或多个文件。
“if exist folder ” 判断folder文件是否存在,如果存在进行删除; /s 表示删除本目录外,还删除所有子目录;/q表示安静模式,不需要确认。
mkdir xcopy_folder
mkdir xcopy_folder\childFold
if exist xcopy_folder(rd /s/q xcopy_folder)
del folder\file0.txt
4、判断 if
(1) 判断文件是否存在
@if exist folder0\file0.txt (
echo folder0\file0.txt exists.
) else (
mkdir folder0
echo "tmp1file0" %date% %time% > folder0\file0.txt
)
@if exist folder0\file0.txt (echo folder0\file0.txt exists.)
pause
rd folder0 /s/q
注意:if else 使用一定严格遵照如下格式,否则会不识别。if else 结构写在同一行完全没问题,但是分行的时候要注意,") else ( "三者之间是两个空格,第一个“()”前一个空格。
(2)判断字符串相等
set str1="soar boy"
set str2="soar boy"
if %str1% == %str2% (
echo str1 equals str2.
)
(3) 判断某变量是否存在
:: 判断某变量是否存在
if defined str1 ( echo str1 has been defined.)
(4) 判断数值大小
EQU - 等于 NEQ - 不等于 LSS - 小于 LEQ - 小于或等于 GTR - 大于 GEQ - 大于或等于
:: 判断数值大小 set /a 表示按照数值方式设置
set /a value0=6
set /a value1=8
if %value0% lss %value1% ( echo %value0% less %value1%)
if %value1% gtr %value0% ( echo %value1% less %value0%)
(5) 命令操作返回值
::返回值
xcopy folder0\file0.txt %cd%
echo %errorlevel%
if %errorlevel% == 0 ( echo succeed to copy folder0\file0.txt %cd% )
xcopy folder0\file5.txt %cd%
echo %errorlevel%
根据返回值 %errolevel%判断操作状态。
5、复制 copy、xcopy
copy:将一份或多份文件复制到另一个位置。
xcopy :复制文件和目录树。
copy 复制文件,目标文件路径不存在不会自动创建;xcopy 复制操作目标目录不存在会自动创建。
xcopy 命令参数:
/E 复制目录和子目录,包括空目录。
/EXCLUDE:file1[+file2][+file3]... 指定含有字符串的文件列表。每个字符串在文件中应位于单独的一行。如果任何字符串与复制文件的绝对路径的任何部分相符,则排除复制该文件。例如,指定如 \obj\ 或 .obj 的字符串会分别排除目录 obj 下面的所有文件或带有.obj 扩展名的所有文件。
/I 如果目标不存在,且要复制多个文件,
则假定目标必须是目录。
/Q 复制时不显示文件名。
/F 复制时显示完整的源文件名和目标文件名。
复制命令还有robocopy
@echo off
@rem Prapare: create file0.txt file2.txt in folder.
mkdir folder
echo "tmp1file0" %date% %time% > folder\file0.txt
echo "tmp1file1" %date% %time% > folder\file2.txt
echo %cd%folder includes %time%:
dir folder
@rem rename folder\file2.txt to folder\file1.txt
ren folder\file2.txt file1.txt
echo %cd%folder includes %time%:
dir folder
pause
@rem copy multiple files,if destination path does not exist, not automaticly create the path;
mkdir copy_folder
copy folder\*.* copy_folder\
pause
@rem xcopy复制一个文件夹到另一个路径下,目标路径不存在会自动创建
@if not exist xcopy_folder (
mkdir %cd%\folder\childfile0
xcopy folder xcopy_folder\folder /e /i /f
if %errorlevel% == 0 (
echo "xcopy folder xcopy_folder/folder /e /i" succeeded.
)
)
pause
rd xcopy_folder copy_folder folder /s /q
6、设置set
单纯的set 命令可以查看所有的环境变量,set | find “环境变量名称” 可以查看某个环境变量。
设置临时环境变量启动vs 2017:
set QTDIR=F:\SoftwareInstalling\Qt\Qt5.13.0\5.13.0\msvc2017
set Path=%Path%;%QTDIR%\bin;
start " " "D:\Users\username\Desktop\Visual Studio 2017.lnk"
7、调用 call
call调用另一个脚本文件*.bat.
8、循环 for
查看for帮助文档:help for > for-help.txt
在批处理(*.bat)程序中使用 FOR 命令时,指定变量请使用 %%variable而不要用命令行中的%variable。变量名称是区分大小写的,所以 %i 不同于 %I.
(1) FOR %variable IN (set) DO command [command-parameters]
%variable 指定一个单一字母可替换的参数。
(set) 指定一个或一组文件。可以使用通配符。
command 指定对每个文件执行的命令。
command-parameters 为特定命令指定参数或命令行开关。
待完善................
@echo off
@rem 查看当前目录下有哪些文件
for %%i in (*.*) do echo "%%i"
pause
@rem 路径中有空格需要加“” 遍历指定目录下某个格式的文件
for %%I in ("C:\Program Files\Intel\WiFi\*.log") do echo "%%I"
pause
@rem 将所有脚本文件复制到指定目录下
set src_path=%cd%
mkdir %src_path%\des_folder
for %%I in (%src_path%\*-*.bat) do (
echo %%I
copy %%I %src_path%\des_folder
)
rd %src_path%\des_folder
pause
9、注释 rem ::
rem与::等价后跟注释文本。隐藏注释文本:@rem 该条注释不会回显到命令行
10.更改名字 ren
ren:重命名文件,等价于rename。用法:
ren [drive:][path]filename1 filename2.
请注意,你不能为目标文件指定新的驱动器或路径。
@echo off
mkdir folder
echo "tmp1file0" %date% %time% > folder\file0.txt
echo "tmp1file1" %date% %time% > folder\file2.txt
echo on
@rem 检查folder\file1.txt
ren folder\file2.txt file1.txt
pause
@rem 批量修改指定名称的文件
ren folder\*.txt *.txttmp
pause
rd folder /s /q
11、移动文件 move
要移动至少一个文件:
MOVE [/Y | /-Y] [drive:][path]filename1[,...] destination
要重命名一个目录:
MOVE [/Y | /-Y] [drive:][path]dirname1 dirname2
[drive:][path]filename1 指定你想移动的文件位置和名称。
destination 指定文件的新位置。目标可包含一个驱动器号和冒号、一个目录名或组合。如果只移动一个文件并在移动时将其重命名,你还可以包括文件名。
[drive:][path]dirname1 指定要重命名的目录。
dirname2 指定目录的新名称。
/Y 取消确认覆盖一个现有目标文件的提示。
/-Y 对确认覆盖一个现有目标文件发出提示。
命令行开关 /Y 可以出现在 COPYCMD 环境变量中。这可以用命令行上的 /-Y 替代。默认值是,除非 MOVE 命令是从一个批脚本内执行的,覆盖时都发出提示。
12、启动其他程序 start
-----------------------------------20210918--------------------------------
13 、脚本中 %cd%和%~dp0的区别
在目录下"D:\"新建名为cdp0.bat的脚本,脚本内容:
@echo off
echo %%cd%% %cd%
echo %%~dp0%% %~dp0%
进入E盘 “E:\”目录 ,打开命令行执行:D:\cdp0.bat
%cd% 表示命令行所在当前目录位置
%~dp0% 表示脚本所在位置
----------------------------------------------2022年3月1日---------------------
练习脚本下载地址:https://download.csdn.net/download/a_Treasure/23476698
参考:https://www.jb51.net/article/194036.htm
https://www.jb51.net/article/18973.htm