bat脚本学习NO:02

2019-01-22  本文已影响0人  Butif_D

morehttps://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" %* 

感谢!@小德cyj@ iTlijun

上一篇下一篇

猜你喜欢

热点阅读