Shell 与 Windows 命令的对应
须知:
在bat脚本中大小写一致,不区分大小写
pwd ~~ echo %cd%
ls -l (可缩减为 ll) ~~ dir
copy -r ~~ xcopy
read -p "Please Input The Path" PATH ~~ set /p PATH=
((5*6)) ~~ set /a var=5*6
rm -rf ~~ del "%PATH%\*" /f /s /q /a (下面会详解del的5个参数)
for i in a,b,c
do
COMMAND
done
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
for ### %%i in (a,b,c) 将###替换为/f /d /r /l
do
COMMAND
done
for 循环的参数:
/f: 相当于shell中***for i in cat a.txt
***, 系统会读取括号中文件内容的每一行,并将其作 为每一个循环变量。
eg. for /f %%i in (a.txt) do echo %%i
另外还有delims,tokens,eol。
delims 用来指定分隔符,相当于awk中的-F选项
eg. for/f “delims=:” %%i in (a.txt) do echo %%i ##此处为以:为分隔符,也可设为以 空格为分隔符
tokens 表示第N列,相当于awk中的$1,$2等
eg. for/f "tokens=2 delims= " %%i in (a.txt) do echo %%i ##取第二列
eg. for/f "tokens=2,3 delims= " %%i in (a.txt) do echo %%i %%j ##取第二列和第三列,此处的%%j必须按顺序使用字母,不能替换为其他字母,可参考26个字母表顺序
/d: --directory 仅匹配给定路径下的目录
eg. for /d %%i in (*) do @echo %%i
eg. for /d %%i in (???) do @echo %%i
/r: --recursive 递归
eg. for /r c:\ %%i in (*.exe) do @echo %%i
/l: 迭代数值范围
格式为:for /L %%i in (Start#,Step#,End#) do Command
相当于shell中{1…9},Step#表示步长,
eg. for /l %%i in (1,1,5) do start cmd
好玩的是,将上一条命令改为 for /l %%i in (1,1,65535) do start cmd ,试试看会不会死机 ?
del命令的五个参数:
a: 并非所有文件都可以只用del命令就能删除,比如具有隐藏属性、只读属性或者系统属性的文件。
假如d:\test.txt具有隐藏属性,该属性为hidden,使用del /a:h;
假如d:\test.txt具有只读属性,该属性为read,使用del /a:r;
假如d:\test.txt具有系统属性,该属性为system,使用del /a:s;
如果不知道文件是什么属性,那么使用del /a即可
f: 英文全称为force–强制。即强制删除,一般配合/a 使用。
q: 英文全程为quiet–闭嘴!即屏蔽输出进行删除。
p: 如果需要在删除之前进行确认的话,可以添加该参数。
s: 英文全称为subdirectory–子目录。即递归删除。
xcopy命令参数
/s: 递归,复制目录和子目录,除了空的。选用该参数时对源目录下及其子目录下的所有文件进行COPY,若不指定该参数,则XCOPY只拷贝源目录本身的文件,而不涉及其下的子目录
/e: 除非指定该参数,否则/s不会拷贝空目录