more: https://www.cnblogs.com/iTlijun/p/6137027.html
MODE配置系统参数:
mode con cols=100 lines=40 & color 27 设置窗口尺寸&颜色;
mode con cp select=936 更改窗口显示的语言 936中文;
mode con rate=40 delay=2 键入速度,键盘延迟
Snipaste_2019-01-21_17-20-54.png
GOTO :
@ECHO OFF
:st 标记(:)
SET /a v+=1 初始化
ECHO %v% 打印
if %v% leq 4 GOTO st 判断语句 满足条件跳转
结果:1 2 3 4 5 {满足条件后跳转执行一次}
SET:
1.初始化变量; set a = ??;
2.SET /P variable=[promptString] 接受界面参数
eg:set /p a= /*这个变量a的值有界面输入*/
echo %a%
3.echo set /a 命令行开关指定等号右边的字符串为被评估的数字表达式
eg:set /a f = 1-0
echo %f%
/A 命令行开关指定等号右边的字符串为被评估的数字表达式。该表达式
评估器很简单并以递减的优先权顺序支持下列操作:
() - 分组
! ~ - - 一元运算符
* / % - 算数运算符
+ - - 算数运算符
<< >> - 逻辑移位
& - 按位“与”
^ - 按位“异”
| - 按位“或”
= *= /= %= += -= - 赋值
&= ^= |= <<= >>=
, - 表达式分隔符
如果你使用任何逻辑或取余操作符, 你需要将表达式字符串用引号扩起来。
//······················ set 字符串截取·········································
set a=abcdefg
set b=%a:~1,2% 【bc】
set c=%a:~1,-2% 【bcde】
~1 : 索引开始 ; 2:长度(如果为复数【-2】;表示倒数的第几位结束)
//······················ set 替换(替换所有)·································
set a=abcdabcd
set b=%a:d=x% 【abcxabcx】
IF
1.判断字符串 ==
set str=hello world
if "%str%"=="hello" ??? else ??? ifelse语句(注意""的使用)
2.数值的判断(
EQU - 等于
NEQ - 不等于
LSS - 小于
LEQ - 小于或等于
GTR - 大于
GEQ - 大于或等于);
if %num1% gtr %num2% echo %num1%大于%num2%
3.与errorlevel使用
title 现在的时间是:%date% %time%
set /p uri=
md %uri%
if errorlevel 0 echo 0
4.defined 判断定义与否 ; exist 通过文件名判断创建与否
if defined var
if exist a.txt
FOR
more: https://www.cnblogs.com/dongzhuangdian/p/8169066.html
在cmd 中变量引用:for %a in (123456) do ???
在批处理中:for %%a in (123456) do ???
for /l : for /L %variable in (start,step,end) do command [command-parameters]
标注起点; 步长 ;终点的循环
for /D %variable in(set) do command [command-parameters]
for /d %%i in (C:\*) do echo %%i
in后面的元素集合中有通配符?* 时,匹配文件夹
for /R [[drive:]path] %%variable in (set) do command [command-parameters]
for /r f:\ %%i in (.) do echo %%i 遍历文件夹 ;效果相同于dir /ad /b /s f:\
如果在 /R 后没有指定目录规范,则使用当前目录。如果集仅为一个
单点(.)字符,则枚举该目录树。
for /F ["options"] %variable in (file-set) do command [command-parameters]解析文本专用
for /F %%i in (test.txt) do echo %%i 按行遍历文本内容;
for /f "delims=," %%i in (test.txt) do echo %%i
eol=c - 忽略以指定字符开头的行;(这个字符不能有多个)
;-->OK ,;-->NOT
skip=n - 指在文件开始时忽略的行数。
delims=xxx - 指分隔符集。这个替换了空格和制表符的
默认分隔符集。
delims=* 不会忽略空格
tokens=x,y,m-n - 指每行的哪一个符号被传递到每个迭代
的 for 本身。这会导致额外变量名称的分配。m-n
格式为一个范围。通过 nth 符号指定 mth。如果
符号字符串中的最后一个字符星号,
tokens=2,3 --> 那么额外的变量将在最后一个符号解析之后 如果 tokens= 后面指定了
多个数字,如果形式变量为%%i。那么,第 一个数字指代的内容用第一个形式变量 %%i 来接收,第二
个数字指代的内容用第二个形式变量 %%j 来接收,第三个数字指代的内容用第三个形式变量 %%k 来接收
……第N个数字指代的内容用第N个形式变量来接收。其中,形式变量遵循字母的排序,第N个形式变量具体
是什么符号,由第一个形式变量来决定:如果第一个形式变量是%%i,那么,第二个形式变量就是%%j;
如果第一个形式变量用的是%%x,那么,第二个形式变量就是%%y。
eg:for /f "delims=;, tokens=2,4" %%i in (??.txt) do echo %%i %%j
tokens=1,2,4,5 同 tokens=1-2,4-5 ;tokens=1,2,4-5
for /f "delims=;, tokens=1,*" %%i in (???.txt) do echo %%i %%j
tokens=后面所接的星号具备这样的功能:依切分字符,将字符串从左往右切分成紧跟在*之前最大数值
所表示的节数之后,字符串的其余部分保持不变,且整体被*所表示的一个变量接收。(* 被 %%j 接收)
for语句选择:
for/F ["options"] %variable in (file-set) do command [command-parameters]
如果是文件,则无需包裹。
for /F ["options"] %variable in ("string") do command [command-parameters]
如果是命令语句,则用单引号包裹。
for /F ["options"] %variable in ('command') do command [command-parameters]
如果是字符串,则使用双引号括起来。
↓***************↓
for /f "usebackq" %%i in ("test 6.txt") do echo %%i
usebackq 是一个增强型参数,使用这个参数后,原来的for语句中第一个括号内的写法要做如下变动;
如果第一个括号里的对象是一条命令语句的话,原来的单引号‘’要改为后引号``;(esc下面的按键)
如果第一个括号里的对象是字符串的话,原来的双引号"要改为单引号';
如果第一个括号里的对象是文件名的话,要用双引号"括起来。
FIND TYPE (查找)
FIND [/V] [/C] [/N] [/I] [/OFF[LINE]] "string" [[drive:][path]filename[ ...]]
/V 显示所有未包含指定字符串的行。
/C 仅显示包含字符串的行数。
/N 显示行号。
/I 搜索字符串时忽略大小写。
/OFF[LINE] 不要跳过具有脱机属性集的文件。
"string" 指定要搜索的文字串,
[drive:][path]filename
eg:FIND /V /N "public" abcd.txt
TYPE abcd.txt | FIND /V /N "public"
⬆{效果一样}
START命令
”多线程命令“
start explorer F:\ 调用图形界面打开F盘
start "????" 重启一个控制台窗口
ASSOC FTYPE
assoc .??? # 显示文件扩展名关联的类型
assoc .txt # --> exefile
ftype ??? # 文件类型的关联
ftype exefile # -->exefile="%1" %*
网友评论