精华内容
下载资源
问答
  • 创建bat之一
    2021-05-12 06:25:29

    先比较直接的查看当前的日期和时间:(或者cmd中直接输入date,time查看)

    @echo off

    color 0a

    set dt=%date%%time%

    echo %dt%

    pause

    1.使用截取进行命名(时间为12小时制时命名会出现空格,不严谨)

    %date:~0,4% :表示从左往右指针偏移0位,然后从偏移的位置进行截取4个字符。如果是从右往左截取,则需要加上负号

    @echo off

    color 0a

    set ymd=%date:~0,4%%date:~5,2%%date:~8,2%

    set hms=%time:~0,2%%time:~3,2%%time:~6,2%%time:~9,2%

    rem 或者 set hms=%time:~-11,2%%time:~-8,2%%time:~-5,2%%time:~-2,2%

    set dt=%ymd%%hms%

    echo %dt%

    mkdir "%dt%"

    pause

    2.使用for  /f 来进行命名(使用不同的写法实现一样的效果)

    eol=/   指以/ 号开头的行为为注释行

    tokens=x,y,m-n   指每行的哪一个符号被传递到每个迭代的 for 本身,m-n是格式指的是一个范围

    delims=xx   指分隔符集。这个替换了空格和跳格键的默认分隔符集

    1.写法一

    @echo off

    color 0a

    for /f "tokens=1,2 eol=/ delims=/ " %%a in ('date/t') do set yyyy=%%a

    for /f "tokens=1,2 eol=/ delims=/" %%a in ('date/t') do set mm=%%b

    for /f "tokens=2,3 delims=/ " %%a in ('date/t') do set dd=%%b

    set ymd=%yyyy%%mm%%dd%

    set tmp_hms=%time:~-11,2%%time:~-8,2%%time:~-5,2%

    set hms=%tmp_hms: =%6

    set dt=%ymd%%hms%

    echo %dt%

    mkdir "%dt%"

    pause

    2.写法二

    rem for /f "tokens=1-3 delims=/ " %%i in ('date/t') do echo %%i%%j%%k 等价于下面的写法

    @echo off

    color 0a

    for /f "tokens=1,2 delims=/" %%i in ('date/t') do set yyyy=%%i

    for /f "tokens=2 delims=/" %%j in ('date/t') do set mm=%%j

    for /f "tokens=3 delims=/ " %%k in ('date/t') do set dd=%%k

    set date=%yyyy%%mm%%dd%

    set tmp_time=%time:~-11,2%%time:~-8,2%%time:~-5,2%

    set time=%tmp_time: =%6

    set d=%date%%time%

    echo %d%

    pause

    当时间为12小时制时,以上几种写法会出空格现象,下面将展示一下解决方法。

    可以在之前的脚本中加上一句判断

    if "%time:~0,1%"==" " set "time=0%time:~1%"

    @echo off

    color 0a

    for /f "tokens=*" %%a in ('time/t') do set now=%%a

    set ymd=%date:~0,4%%date:~5,2%%date:~8,2%

    set hms=%now:~0,2%%now:~3%%time:~6,2%

    set dt=%ymd%%hms%

    echo %dt%

    pause

    C# 创建文件时,文件夹不存在,如何自动创建文件夹

    c# 创建文件时怎么创建文件夹?strhtml=......StreamWriter sw=new StreamWriter("D:/test/1.aspx",false);sw. ...

    mkdirs自动创建文件夹

    //保存路径 如file路径是E:\filer\a.jpg File toSaveFile=new File("filePath"); if(toSaveFile!=null){ ...

    python——在文件存放路径下自动创建文件夹!

    1.a.py文件存放的路径下为(D:\Auto\eclipse\workspace\Testhtml\Test) 2.通过os.getcwd()获取的路径为:D:\Auto\eclipse\works ...

    bat自动创建文件夹(以当前时间命名)

    先cmd中查看当前的日期和时间: @echo off color 0a set dt=%date%%time% echo %dt%pause 1.使用截取进行命名(时间为12小时制时命名会出现空格,不 ...

    Java创建文件夹

    import java.io.File; public class Mkdirs { public static void main(String[] args) { /** *创建文件夹,如果路径不 ...

    Java——如何创建文件夹及文件,删除文件,文件夹

    package com.zz; import java.io.File; import java.io.IOException; /** * Java创建文件夹 */ public class Cre ...

    MVC如何在解决方案下创建文件夹

    背景:为什么要在解决方案下创建文件夹? 比如,在开发过程中,会抽象出大量的公共方法,如数据库访问的方法.配置文件读取方法等等,将这些方法生成自己的DLL库文件,方便在其他的项目中进行复用.那么,这些方 ...

    Java创建文件夹、创建文件、上传文件,下载文件

    1.创建文件夹 /** * 判断文件夹是否存在 * @param myPath */ public static void judeDirExists(File myPath) { if (!myPa ...

    PHP判断文件夹是否存在和创建文件夹的方法(递归创建多级目录)

    在开始之前,我先说明一下,可能许多朋友与我一样认为只要给一个路径,mkdir就可以创建文件夹,其实不是那样,单个的MKDIR只能创建一级目录,对于多级的就不行了,那如何用mkdir来创建呢?先我抄一段 ...

    随机推荐

    Visual Studio Emulator for Android 的安装与使用 感觉最干净好看的模拟器.

    Step1 win8+ 6G+ 添加删除程序\ hyper  创建虚拟机 安装visual studio android 模拟器, 自带三个模拟器 使用管理员打开模拟器 参考文献 Visual Stu ...

    java hook

    linux下 hook的触发,需要 发送信号为15. 后续补充具体内容.

    JavaScript SetInterval与setTimeout使用方法详解

    setTimeout和setInterval的语法相同.它们都有两个参数,一个是将要执行的代码字符串,还有一个是以毫秒为单位的时间间隔,当过了那个时间段之后就将执行那段代码.不过这两个函数还是有区别的 ...

    【javascript基础】1、基本概念

    前言 最近迷茫了一段时间,不知道应该从何处开始学习前端知识,好像这种状态已经持续了一年了,天天也在看前端的东西,但是记住的多少或者说在脑中一团糟,没有什么清晰的概念.最近加入了jQuery源码交流群( ...

    揪出Android流氓软件

    揪出Android流氓软件 http://www.icpcw.com/Smartphone/Android/Android/1471/147142_all.htm http://www.william ...

    Class Abstraction -- Object Interfaces

    Python之路2Day(基础深入)

    一,整数 1.int型 具有的功能: class int(object): (1).返回表示该数字的时占用的最少位数 def bit_length(self): 例: >>> bin ...

    【D3】cluster layout

    一. 和其他D3类一样,layout 可以链式传递,使用简明的申明添加多种自定义设置. 二.API # d3.layout.cluster() Creates a new cluster layout ...

    【故障】MySQL主从同步故障-Slave_SQL_Running: No

    转自:http://www.linuxidc.com/Linux/2014-02/96945.htm 故障现象:进入slave服务器,运行:mysql> show slave status\G  ...

    【BZOJ2144】Throw 数论

    题目大意 给你三个数\(a,b,c\),每次你可以选择一个数\(s_1\),再选择一个数\(s_2\),把\(s_1\)变成\(2s_2-s_1\),但要求\(s_3\)不在\(s_1\)到\(2s_ ...

    更多相关内容
  • dos bat批量创建软链接

    2021-01-22 19:54:24
    windows 下,要将 train2017/、val2017/ 两个目录下的图片并入个目录 images/,用 mklink 创建软链接[1]可以不用额外空间。 win10也可以写 .sh 脚本用 ln -s,但效果似乎同 copy?因为用 ln -s 得出的 images/ 是...

    windows 下,要将 train2017/val2017/ 两个目录下的图片并入一个目录 images/,用 mklink 创建软链接[1]可以不用额外空间。

    win10 也可以写 .sh 脚本用 ln -s,但效果似乎同 copy?因为用 ln -s 得出的 images/ 是有空间占用的,而用 mklink 是 0 bytes。

    Code

    @echo off
    setlocal enabledelayedexpansion
    cls
    
    set SRC=G:\dataset\COCO\2017
    set DEST=G:\dataset\COCO-stuff\images
    if not exist %DEST% (
    	mkdir %DEST%
    )
    
    set n_dir=0
    for /d %%d in (train2017 val2017) do (
    	set "src=%SRC%\%%d"
    	echo --- !src! ---
    
    	set n_image=0
    	for %%f in (!src!\*.*) do (
    		REM `n`: 文件名, `x`: 后缀名
    		REM echo %%~nxf
    		set "src_img=!src!\%%~nxf"
    		REM echo !src_img!
    		set "dest_img=%DEST%\%%~nxf"
    		REM echo !dest_img!
    
    		REM 屏蔽 mklink 的输出
    		mklink !dest_img! !src_img! > nul 2>&1
    
    		REM 每 1000 张提示一下
    		set /A n_image += 1
    		set /A r = !n_image! %% 1000
    		if !r! EQU 0 (
    			echo !n_image!
    		)
    	)
    	set /A n_dir += 1
    )
    echo #dir: !n_dir!
    

    References

    1. windows软链接
    2. bat文件循环、字符串
    3. BAT脚本之判断文件是否存在
    4. Create list or arrays in Windows Batch,数组
    5. Batch Script - Arrays,数组
    6. Arrays, linked lists and other data structures in cmd.exe (batch) script,数组
    7. for,截文件名
    8. bat批处理 if 命令示例详解,if、比较运算
    9. Exiting out of a FOR loop in a batch file?,break
    10. How to break inner loop in nested loop batch script,break
    11. “continue” equivalent command in nested loop in Windows Batch,continue
    12. batch script “continue” in loop?,continue
    13. Batch Script - Arithmetic operators,四则运算、取模
    14. Suppress command line output,屏蔽命令输出
    展开全文
  • Bat2Exe

    2021-03-06 06:33:08
    蝙蝠侠2我比较复杂的项目之一您将需要将k组件系统安装到VS中,但如果没有,则已经创建了文件供您使用Bat2Exe转换器。 如果您决定编辑程序并构建解决方案,它将弹出exe和dll文件。 如果您只希望它具有exe文件,则需要...
  • 扩展名为bat的文件的创建

    千次阅读 2018-06-26 17:54:24
    、在了解bat文件前要了解下DOS命令,DOS命令:计算机术语,是指DOS操作系统的命令,是种面向磁盘的操作命令,主要包括目录操作类命令、磁盘操作类命令、文件操作类命令和其它命令。...二、bat文件的创建:...

    一、在了解bat文件前要了解下DOS命令,DOS命令:计算机术语,是指DOS操作系统的命令,是一种面向磁盘的操作命令,主要包括目录操作类命令、磁盘操作类命令、文件操作类命令和其它命令。而bat文件就是把一系列的DOS命令存放在一个BAT格式的文件里, 以后,只要你想再按相同的顺序来执行这一系列的DOS命令而又不想再次一条条来输入的话,就直接运行刚才那个bat文件就OK了.

     

    如果bat文件运行就闪退。说明有错误。可以用cmd进入路径运行bat文件看报错。

    1.dos命令不区分大小写。

    2.子bat文件中可以访问父bat中的定义的变量,子bat修改变量后父bat中对应的变量也会改变。

    二、bat文件的创建:1.新建txt文本文件2.向文本文件中输入命令3.保存并修改文本文件后缀为.bat4.双击保存后的bat文件,双击可运行。

    三、bat命令大全:

    1.echo

    @                          #关闭单行回显

    echo off                   #从下一行开始关闭回显(就是执行的命令)

    @echo off                 #从本行开始关闭回显。一般批处理第一行都是这个

    echo on                   #从下一行开始打开回显

    echo                       #显示当前是 echo off 状态还是 echo on 状态

    echo.                      #输出一个”回车换行”,空白行

    2. errorlevel

    echo %errorlevel%

    每个命令运行结束,可以用这个命令行格式查看返回码

    默认值为0,一般命令执行出错会设 errorlevel 1, 例子:if not errorlevel 0 goto p

        

       3.dir

    dir                       #显示当前目录中的文件和子目录

    dir /a                    #显示当前目录中的文件和子目录,包括隐藏文件和系统文件

    dir c: /a:d              #显示 C 盘当前目录中的目录

    dir c: /a:-d             #显示 C 盘根目录中的文件

    dir c:\ /b/p             #/b只显示文件名,/p分页显示

    dir *.exe /s             #显示当前目录和子目录里所有的.exe文件

    4 cd

    cd\                       #进入根目录

    cd                        #显示当前目录

    cd /d f:\sdk            #可以同时更改盘符和目录 进入f盘 sdk目录

    批处理文件中 %cd%表示当前目录。会改变。

    5 md

    md d:\a\b\c               #如果 d:\a 不存在,将会自动创建中级目录

    #如果命令扩展名被停用,则需要键入 mkdir \a\b\c

    6 rd

    rd abc                    #删除当前目录里的 abc 子目录,要求为空目录

    rd /s/q d:\temp         #删除 d:\temp 文件夹及其子文件夹和文件,/q安静模式

    7 del

    del d:\test.txt            #删除指定文件,不能是隐藏、系统、只读文件

    del /q/a/f d:\temp\*.*   #删除 d:\temp 文件夹里面的所有文件,包括隐藏、只读、系统文件,不包括子目录

    del /q/a/f/s d:\temp\*.*   #删除 d:\temp 及子文件夹里面的所有文件,包括隐藏、只读、系统文件,不包括子目录

    8 ren

    ren d:\temp tmp           #支持对文件夹的重命名

    9 cls

    清屏

    10 type

    显示文件内容

    type c:\boot.ini          #显示指定文件的内容,程序文件一般会显示乱码

    type *.txt                #显示当前目录里所有.txt文件的内容

    11 copy

    拷贝文件

    copy c:\test.txt d:\test.bak

    复制 c:\test.txt 文件到 d:\ ,并重命名为 test.bak

    copy con test.txt

    从屏幕上等待输入,按 Ctrl+Z 结束输入,输入内容存为test.txt文件

    con代表屏幕,prn代表打印机,nul代表空设备

    copy 1.txt + 2.txt 3.txt

    合并 1.txt  2.txt 的内容,保存为 3.txt 文件

    如果不指定 3.txt ,则保存到 1.txt

    copy test.txt +

    复制文件到自己,实际上是修改了文件日期

    12 title

    设置cmd窗口的标题

    title 新标题              #可以看到cmd窗口的标题栏变了

    13 ver

    显示系统版本

    14 label  vol

    设置卷标

    vol                       #显示卷标

    label                     #显示卷标,同时提示输入新卷标

    label c:system        #设置C盘的卷标为 system

    15 pause

    暂停命令

    16 rem  ::

    注释命令

    注释行不执行操作

    17 date  time

    日期和时间

    date                #显示当前日期,并提示输入新日期,按\"回车\"略过输入

    date/t              #只显示当前日期,不提示输入新日期

    time                #显示当前时间,并提示输入新时间,按\"回车\"略过输入

    time/t              #只显示当前时间,不提示输入新时间

    18 goto  :

    跳转命令

    :label                标签:行首为:表示该行是标签行,标签行不执行操作

    goto label         #跳转到指定的标签那一行

       1.) 运行 Goto :eof 后,CMD 返回并将等待下一命令。 

        2.) 运行 Exit 后,CMD 将直接关闭并返回到曾启动 Cmd.exe 的程序或返回到“资源管理器”。

    19 find (外部命令)从文件中收索字符串  格式:find 参数 "字符串" 路径\文件名

    查找命令

    find \"abc\" c:\test.txt

     c:\test.txt 文件里查找含 abc 字符串的行

    如果找不到,将设 errorlevel 返回码为1

    find /i “abc” c:\test.txt

    查找含 abc 的行,忽略大小写

    find /c \"abc\" c:\test.txt

    显示含 abc 的行的行数

          参数: /V 显示所有未包含指定字符串的行。

          /C 仅显示包含字符串的行数。

          /N 显示行号。

          /I 搜索字符串时忽略大小写。

    20 more (外部命令)

    逐屏显示

    more c:\test.txt          #逐屏显示 c:\test.txt 的文件内容

    21 tree

    显示目录结构

    tree d:\                  #显示D盘的文件目录结构

    22 &

    顺序执行多条命令,而不管命令是否执行成功

    23 &&

    顺序执行多条命令,当碰到执行出错的命令后将不执行后面的命令

    find \"ok\" c:\test.txt && echo 成功

    如果找到了\"ok\"字样,就显示\"成功\",找不到就不显示

    24 ||

    顺序执行多条命令,当碰到执行正确的命令后将不执行后面的命令

    find \"ok\" c:\test.txt || echo 不成功

    如果找不到\"ok\"字样,就显示\"不成功\",找到了就不显示

    25 |

    管道命令

    dir *.* /s/a | find /c \".exe\"

    管道命令表示先执行 dir 命令,对其输出的结果执行后面的 find 命令

    该命令行结果:输出当前文件夹及所有子文件夹里的.exe文件的个数

    type c:\test.txt|more

    这个和 more c:\test.txt 的效果是一样的

    26 >  >>

    输出重定向命令

    清除文件中原有的内容后再写入

    >> 追加内容到文件末尾,而不会清除原有的内容

    主要将本来显示在屏幕上的内容输出到指定文件中

    指定文件如果不存在,则自动生成该文件

    type c:\test.txt >prn

    屏幕上不显示文件内容,转向输出到打印机

    echo hello world>con

    在屏幕上显示hello world,实际上所有输出都是默认 >con 

    copy c:\test.txt f: >nul

    拷贝文件,并且不显示\"文件复制成功\"的提示信息,但如果f盘不存在,还是会显示出错信息

    copy c:\test.txt f: >nul 2>nul

    不显示”文件复制成功”的提示信息,并且f盘不存在的话,也不显示错误提示信息Echo ^^W ^> ^W>c:\test.txt

    生成的文件内容为 ^W > W

     > 是控制命令,要把它们输出到文件,必须在前面加个 ^ 符号

    27 <

    从文件中获得输入信息,而不是从屏幕上

    一般用于 date time label 等需要等待输入的命令

    @echo off

    echo 2005-05-01>temp.txt

    date <temp.txt

    del temp.txt

    这样就可以不等待输入直接修改当前日期

    28 %0 %1 %2 %3 %4 %5 %6 %7 %8 %9 %*

    命令行传递给批处理的参数

    %0 批处理文件本身

    %1 第一个参数

    %9 第九个参数

    %* 从第一个参数开始的所有参数

     

    批参数(%n)的替代已被增强。您可以使用以下语法:

     

              %~1               - 删除引号(\"),扩充 %1

              %~f1              -  %1 扩充到一个完全合格的路径名

              %~d1              - 仅将 %1 扩充到一个驱动器号

              %~p1              - 仅将 %1 扩充到一个路径

              %~n1              - 仅将 %1 扩充到一个文件名

              %~x1              - 仅将 %1 扩充到一个文件扩展名

              %~s1              - 扩充的路径指含有短名

              %~a1              -  %1 扩充到文件属性

              %~t1              -  %1 扩充到文件的日期/时间

              %~z1              -  %1 扩充到文件的大小

              %~$PATH : 1 - 查找列在 PATH 环境变量的目录,并将 %1

                            扩充到找到的第一个完全合格的名称。如果环境

                            变量名未被定义,或者没有找到文件,此组合键会

                            扩充到空字符串

     

    可以组合修定符来取得多重结果:

     

             %~dp1             - 只将 %1 扩展到驱动器号和路径

             %~nx1             - 只将 %1 扩展到文件名和扩展名

             %~dp$PATH:1 - 在列在 PATH 环境变量中的目录里查找 %1

                            并扩展到找到的第一个文件的驱动器号和路径。

             %~ftza1           -  %1 扩展到类似 DIR 的输出行。

    可以参照 call/?  for/? 看出每个参数的含意

    echo load \"%%1\" \"%%2\">c:\test.txt

    生成的文件内容为 load \"%1\" \"%2\"

    批处理文件里,用这个格式把命令行参数输出到文件

    29 if

    判断命令

    if \"%1\"==\"/a\" echo 第一个参数是/a

    if /i \"%1\" equ \"/a\" echo 第一个参数是/a

    /i 表示不区分大小写,equ  == 是一样的,其它运算符参见 if/?

    if exist c:\test.bat echo 存在c:\test.bat文件

    if not exist c:\windows (

              echo 不存在c:\windows文件夹

              )

    if exist c:\test.bat ( echo 存在c:\test.bat ) else (  echo 不存在c:\test.bat  )

    /i 表示忽略大小

    30 setlocal  endlocal

    设置”命令扩展名”和”延缓环境变量扩充”

    SETLOCAL ENABLEEXTENSIONS                  #启用\"命令扩展名\"

    SETLOCAL DISABLEEXTENSIONS                 #停用\"命令扩展名\"

    SETLOCAL ENABLEDELAYEDEXPANSION            #启用\"延缓环境变量扩充\"

    SETLOCAL DISABLEDELAYEDEXPANSION           #停用\"延缓环境变量扩充\"

    ENDLOCAL                                   #恢复到使用SETLOCAL语句以前的状态

    “命令扩展名”默认为启用

    “延缓环境变量扩充”默认为停用

    批处理结束系统会自动恢复默认值

    可以修改注册表以禁用\"命令扩展名\",详见 cmd /? 。所以用到\"命令扩展名\"的程

    序,建议在开头和结尾加上 SETLOCAL ENABLEEXTENSIONS  ENDLOCAL 语句,以确

    保程序能在其它系统上正确运行

    \"延缓环境变量扩充\"主要用于 if  for 的符合语句,在 set 的说明里有其实用例程

    31 set

    设置变量

    引用变量可在变量名前后加 % ,即 %变量名%

    set                          #显示目前所有可用的变量,包括系统变量和自定义的变量

    echo %SystemDrive%           #显示系统盘盘符。系统变量可以直接引用

    set p                        #显示所有以p开头的变量,要是一个也没有就设errorlevel=1

    set p=aa1bb1aa2bb2           #设置变量p,并赋值为 = 后面的字符串,即aa1bb1aa2bb2

    或者 set TOOL_HOME=%TOOL_HOME% %0   吧两个变量和中间的空客连在一起赋值给原变量

    echo %p%                     #显示变量p代表的字符串,即aa1bb1aa2bb2

    echo %p:~6%                  #显示变量p中第6个字符以后的所有字符,即aa2bb2

    echo %p:~6,3%                #显示第6个字符以后的3个字符,即aa2

    echo %p:~0,3%                #显示前3个字符,即aa1

    echo %p:~-2%                 #显示最后面的2个字符,即b2

    echo %p:~0,-2%               #显示除了最后2个字符以外的其它字符,即aa1bb1aa2b

    echo %p:aa=c%                #c替换变量p中所有的aa,即显示c1bb1c2bb2

    echo %p:aa=%                 #将变量p中的所有aa字符串置换为空,即显示1bb12bb2

    echo %p:*bb=c%               #第一个bb及其之前的所有字符被替换为c,即显示c1aa2bb2

    set p=%p:*bb=c%              #设置变量p,赋值为 %p:*bb=c% ,即c1aa2bb2

    set /a p=39                  #设置p为数值型变量,值为39

    set /a p=39/10               #支持运算符,有小数时用去尾法,39/10=3.9,去尾得3p=3

    set /a p=p/10                # /a 参数时,在 = 后面的变量可以不加%直接引用

    set /a p=1&0               #”与”运算,要加引号。其它支持的运算符参见set/?

    set p=                       #取消p变量

    set /p p=请输入

    屏幕上显示”请输入”,并会将输入的字符串赋值给变量p

    注意这条可以用来取代 choice 命令

    注意变量在 if  for 的复合语句里是一次性全部替换的,如

    @echo off

    set p=aaa

    if %p%==aaa (

              echo %p%

              set p=bbb

              echo %p%

              )

    结果将显示

    aaa

    aaa

    因为在读取 if 语句时已经将所有 %p% 替换为aaa

    这里的\"替换\",在 /? 帮助里就是指\"扩充\"\"环境变量扩充\"

    可以启用”延缓环境变量扩充”,用 ! 来引用变量,即 !变量名!

    @echo off

    SETLOCAL ENABLEDELAYEDEXPANSION

    set p=aaa

    if %p%==aaa (

              echo %p%

              set p=bbb

              echo !p!

              )

    ENDLOCAL

    结果将显示

    aaa

    bbb

    还有几个动态变量,运行 set 看不到

    %CD%                        #代表当前目录的字符串

    %DATE%                      #当前日期

    %TIME%                      #当前时间

    %RANDOM%                    #随机整数,介于0~32767

    %ERRORLEVEL%                #当前 ERRORLEVEL 

    %CMDEXTVERSION%             #当前命令处理器扩展名版本号

    %CMDCMDLINE%                #调用命令处理器的原始命令行

    可以用echo命令查看每个变量值,如 echo %time%

    注意 %time% 精确到毫秒,在批处理需要延时处理时可以用到

    32 start

    批处理中调用外部程序的命令,否则等外部程序完成后才继续执行剩下的指令

    当bat文件里启动系统自带的程序时,不需要注意路径问题,如果是本地安装的第三方程序,就要注意路径的问题。

    并注意bat指令的写法,比如说加上/d,并在程序路径上加上英文半角引号

    比如 start /d "D:\Program Files (x86)\Tencent\QQ\Bin" QQ.exe

    DOS批处理命令Start的使用介绍吗,使用start命令快捷启动程序_MayMatrix 的博客-CSDN博客_dos start命令

    /B 启动应用程序,但不创建新窗口。应用程序已忽略 ^C 处理。除非应用程序启用 ^C 处理,否则 ^Break 是唯一可以中断
    该应用程序的方式

    set "LUA_BIN=lua53.exe"
          set "MAIN_LUA=main.lua"
          set "ARG1=args"
          set "ARG2=args"
          "%LUA_BIN%" "%MAIN_LUA%" "%ARG1%" "%ARG2%“

    也可以直接调用变量来调用程序并执行main方法。

    33 call

    批处理中调用另外一个批处理的命令,否则剩下的批处理指令将不会被执行

    有时有的应用程序用start调用出错的,也可以call调用

    call 调用批处理命令时如果有参数可以将参数写在 命令后面  call b.bat %0 world

    call 后面也可以跟标签 如 call :xx  执行完标签内容后继续执行call下面的,这是与goto的区别

    34 choice (外部命令)

    选择命令

    让用户输入一个字符,从而选择运行不同的命令,返回码errorlevel1234……

    win98里是choice.com

    win2000pro里没有,可以从win98里拷过来

    win2003里是choice.exe

    choice /N /C y /T 5 /D y>nul

    延时5

    35 assoc  ftype

    文件关联

    assoc 设置'文件扩展名'关联,关联到'文件类型'

    ftype 设置'文件类型'关联,关联到'执行程序和参数'

    当你双击一个.txt文件时,windows并不是根据.txt直接判断用 notepad.exe 打开

    而是先判断.txt属于 txtfile '文件类型'

    再调用 txtfile 关联的命令行 txtfile=%SystemRoot%\system32\NOTEPAD.EXE %1

    可以在\"文件夹选项\"\"文件类型\"里修改这2种关联

    assoc                 #显示所有'文件扩展名'关联

    assoc .txt            #显示.txt代表的'文件类型',结果显示 .txt=txtfile

    assoc .doc            #显示.doc代表的'文件类型',结果显示 .doc=Word.Document.8

    assoc .exe            #显示.exe代表的'文件类型',结果显示 .exe=exefile

    ftype                 #显示所有'文件类型'关联

    ftype exefile         #显示exefile类型关联的命令行,结果显示 exefile=\"%1\" %*

    assoc .txt=Word.Document.8

    设置.txtword类型的文档,可以看到.txt文件的图标都变了

    assoc .txt=txtfile

    恢复.txt的正确关联

    ftype exefile=\"%1\" %*

    恢复 exefile 的正确关联

    如果该关联已经被破坏,可以运行 command.com ,再输入这条命令

    36 pushd  popd

    切换当前目录

    @echo off

    c: & cd\ & md mp3             # C:\ 建立 mp3 文件夹

    md d:\mp4                     # D:\ 建立 mp4 文件夹

    cd /d d:\mp4                  #更改当前目录为 d:\mp4

    pushd c:\mp3                  #保存当前目录,并切换当前目录为 c:\mp3

    popd                          #恢复当前目录为刚才保存的 d:\mp4

    37 for

    循环命令

    这个比较复杂,请对照 for/? 来看

    for %%i in (c: d: e: f:) do echo %%i

    依次调用小括号里的每个字符串,执行 do 后面的命令

    注意%%i,在批处理中 for 语句调用参数用2%

    默认的字符串分隔符是\"空格键\"\"Tab\"\"回车键\"

    for %%i in (*.txt) do find \"abc\" %%i

    对当前目录里所有的txt文件执行 find 命令

    for /r . %%i in (*.txt) do find \"abc\" %%i

    在当前目录和子目录里所有的.txt文件中搜索包含 abc 字符串的行

    for /r . %%i in (.) do echo %%~pni

    显示当前目录名和所有子目录名,包括路径,不包括盘符

    for /r d:\mp3 %%i in (*.mp3) do echo %%i>>d:\mp3.txt

     d:\mp3 及其子目录里的mp3文件的文件名都存到 d:\mp3.txt 里去

    for /l %%i in (2,1,8) do echo %%i

    生成2345678的一串数字,2是数字序列的开头,8是结尾,1表示每次加1

    for /f %%i in ('set') do echo %%i

     set 命令的输出结果循环调用,每行一个

    for /f \"eol=P\" %%i in ('set') do echo %%i

     set 命令的输出结果,忽略以 P 开头的那几行

    for /f %%i in (d:\mp3.txt) do echo %%i

    显示 d:\mp3.txt 里的每个文件名,每行一个,不支持带空格的名称

    for /f \"delims=\" %%i in (d:\mp3.txt) do echo %%i

    显示 d:\mp3.txt 里的每个文件名,每行一个,支持带空格的名称

    for /f \"skip=5 tokens=4\" %%a in ('dir') do echo %%a

     dir 命令的结果,跳过前面5行,余下的每行取第4

    每列之间的分隔符为默认的\"空格\"

    可以注意到 dir 命令输出的前5行是没有文件名的

    for /f \"tokens=1,2,3 delims=- \" %%a in ('date /t') do (

              echo %%a

              echo %%b

              echo %%c

              )

     date /t 的输出结果,每行取123

    第一列对应指定的 %%a ,后面的 %%b  %%c 是派生出来的,对应其它列

    分隔符指定为 - \"空格\",注意 delims=- 后面有个\"空格\"

    其中 tokens=1,2,3 若用 tokens=1-3 替换,效果是一样的

    for /f \"tokens=2* delims=- \" %%a in ('date /t') do echo %%b

    取第2列给 %%a ,其后的列都给 %%b

    for循环里给变量复制 setlocal enabledelayedexpansion 后变量用!!代替%%标注

    38 subst (外部命令)

    映射磁盘。

    subst z: \server\d           #这样输入z:就可以访问\server\d

    subst z: /d                   #取消该映射

    subst                         #显示目前所有的映时

    39  xcopy (外部命令)

    文件拷贝

    xcopy a E:\testA

    a是个文件夹 执行的时候会询问testA是否为文件夹。

    xcopy a E:\testA\ 不会询问 表示testA已经是文件夹

     /I    如果目标不存在,且要复制多个文件,  则假定目标必须是目录

    ./S 复制目录和子目录,不包括空目录。

     /Q 复制时不显示文件名

    /E 复制目录和子目录,包括空的。

    /H 也复制隐藏和系统文件。

    /U 只复制已经存在于目标中的文件。

    /T 创建目录结构,但不复制文件。不包括空目录或子目录。/T /E 包括空目录和子目录。

    /L 显示要复制的文件

    /y 直接覆盖

    /c 即使有错误,也继续复制

    /R 覆盖只读文件

    echo D | xcopy a  E:\a /S /Q 表示把D 用管道符 传给xcopy用来当询问时的输入

    与copy的区别:

    copy不能在有子目录存在的文件中拷贝文件的同时重命名此文件名。

    copy a.txt asda\b.txt  其中asda不存在则不能copu,耳xcopy能

    copy命令能合并两个文件,而xcopy不能 copy /b c:\1.txt+2.txt c:\3.txt

    40.在DOS中,有着两种创建链接的方法:快捷方式和链接。

        快捷方式应该是使用得比较多的了,它其实是一个后缀名为.lnk的文件,其在BAT脚本中创建的方式是通过VB来进行创建,具体代码如下:

    :CreateShort

    mshta VBScript:Execute("Set a=CreateObject(""WScript.Shell""):Set b=

    a.CreateShortcut(""%~2.lnk""):b.TargetPath=""%~1"":b.WorkingDirectory=""%~dp1"":b.Save:close")

    这段代码相当于创建了一名为CreatShort的函数,然后可在bat脚本中通过

     call :CreateShort "目标文件的地址" "想要创建的快捷方式文件"

    的方式来进行调用,比如使用下列脚本便可创建一个test的文件夹以及与之对应的快捷方式文件,

    @echo off
    md test
     
    call :CreateShort "%CD%\链接" "链接"
    pause
    goto :eof
     
    :CreateShort
    mshta VBScript:Execute("Set a=CreateObject(""WScript.Shell""):Set b=a.CreateShortcut(""%~2.lnk""):b.TargetPath=""%~1"":b.WorkingDirectory=""%~dp1"":b.Save:close")
    将上述脚本复制便到文本文档并将文件的后缀名改为bat再双击执行,便可在当前目录下创建一个“链接”文件夹以及与之对应的快捷方式文件。

    二、链接的方式

    链接的方式与Linux下的ln命令很像,这是官网的解释:

    mklink [[/d] | [/h] | [/j]] <Link> <Target>


    Parameters
    Parameter    Description
    /d Creates a directory symbolic link. By default, mklink creates a file symbolic link.表示软连接

    /h Creates a hard link instead of a symbolic link.

    /j Creates a Directory Junction.

    <Link> Specifies the name of the symbolic link that is being created.

    <Target> Specifies the path (relative or absolute) that the new symbolic link refers to.

    /? Displays help at the command prompt.

    其可分为符号链接和硬链接,而符号链接让我感觉和Linux下得软连接很像,它最主要的作用是把C盘的文件软链接到别的盘中,从而使C盘不会太满;

    也可用于同步文件,其中硬链接只能链接文件,符号链接可以连接文件夹。

    https://blog.csdn.net/qwe15954250805/article/details/80641735 

    Tzutil.exe是Windows 7中新增的命令行工具,作用是设置系统时区,因为其功能非常单一,很少受到人们的注意,今天我简单看了下该命令的帮助,它似乎只有三个功能:

            tzutil.exe

            /g   显示当前系统所用时区

            /s    更改时区设置(命令格式可以看红框里的例子)

            /l     显示系统中可用的时区列表

    tzutil /l > aa.txt 将列表输出到aa。txt文件中,没有回创建aa。txt

    tzutil /s  Aleutian Standard Time(列表中的文件)

    %~dp0 : %~dp0是批处理文件所在的盘符:+路径  用在批处理文件中 

    %0,指的是当前脚本,而~代表各种扩展,如下:  "C:\Users\lihaotianpc\Desktop\文档\xx.bat"

    %~f0 将 %0 扩展到一个完全合格的路径名   C:\Users\lihaotianpc\Desktop\文档\xx.bat

    %~d0 仅将 %0 扩展到一个驱动器号            C:

    %~p0 仅将 %0 扩展到一个路径                  \Users\lihaotianpc\Desktop\文档\

    %~n0 仅将 %0 扩展到一个文件名               xx

    %~x0 仅将 %0 扩展到一个文件扩展名      .bat

    %~s0 扩展的路径只含有短名                  C:\Users\LIHAOT~1\Desktop\文档\xx.bat

    %~a0 将 %0 扩展到文件的文件属性         --a------

    %~t0 将 %0扩展到文件的日期/时间        2020/05/14 15:44

    %~z0 将 %0 扩展到文件的大小                 245(就是数字 本实例代表245字节)

    %1,代表传给脚本的第一个参数, 不会删除双引号

    %~1,也代表第一个参数,当参数以双引号开头时,%~1会自动将头和尾(如果有)的双引号删除,中间的不删除,单引号也不会删除。

    执行exe文件:"UnityMonoDevelopSetup.exe" /S /D=D:\Program Files\xxx\xxx

    /S 表示静默安装 
    /D 表示安装路径 不加默认安装路径
    "UnityMonoDevelopSetup.exe" 调用当前路径的这个exe

    exit: exit /b是用来退出批处理脚本的,而exit是用来退出解释器的;可以这么理解,exit /b 退出子进程,而exit则退出父进程,子进程结束不影响父进程的执行,但是父进程结束那就是彻底的结束。(当然,如果只有一个进程,exit /b也是能结束父进程的)。/b 后面跟的数字是 errorlevel

    shift:

    shift 命令通过将每个参数复制到前一个参数中,更改批处理参数 %0 到 %9 的值。也就是说,将 %1 的值复制到 %0,%2 的值复制到 %1,依次类推。该命令在撰写对任何数目的参数执行相同操作的批处理文件时非常有用。

    使用 10 个以上的批处理参数

    也可以使用 shift 命令创建可以接受 10 个以上批处理参数的批处理文件。如果在命令行上指定了 10 个以上的参数,第十个 (%9) 参数之后的参数将更改为 %9,一次更改一个。

    将 shift 命令行选项与命令扩展一起使用

    启用命令扩展(默认设置)后,shift 命令支持 /n 命令行选项,该选项通知命令在第 n 个参数处开始更改,n 可以是 0 到 8 的任何一个值。例如,

    SHIFT /2

    可以将 %3 改为 %2,将 %4 改为 %3 等等,而 %0 和 %1 保持不变。

    恢复参数

    没有反向的 shift 命令。执行了 shift 命令后,不能恢复更改前存在的第一个批处理参数 (%0)。

    Shift 对 %* 批处理参数没有影响 : %* 表示从第一个参数开始的所有参数

    41. jps 查看运行的程序进程,或tasklist 

    42.taskkill  /pid  {pid} 根据pid结束进程。/im  立即 /f     强制结束进程

    43.查看占用8080端口的进程号:netstat –aon | findstr “8080”  或者 netstat –aon | find “8080”  ,可以使用命令 tasklist | findstr “ 6900”进一步查看 6900进程的具体信息, tasklist | findstr “6400” 或者  tasklist | find “6400”  

    展开全文
  • windows bat脚本学习(基础指令)

    万次阅读 多人点赞 2022-02-11 16:00:45
    1.pause 暂停批处理的执行并在屏幕上显示"请按任意键继续..." ...调用另个批处理文件(如果不用call而直接调用别的批处理文件,那么执行完那个批处理文件后将无法返回当前文件并执行当前文件的..

    1.pause

    暂停批处理的执行并在屏幕上显示"请按任意键继续..."

    例如:

    改脚本执行结果为:

    2.echo

    显示指令,会把需要显示的内容展示出来。

    例如:

     结果为:

    3.echo off

    在此语句后所有运行的命令都不显示命令行本身,但是本身的指令是会显示出来的。

    例如:

     结果为:

    4.@

    不显示本行命令行

    例如:

    结果为:

    5.call

    调用另一个批处理文件(如果不用call而直接调用别的批处理文件,那么执行完那个批处理文件后将无法返回当前文件并执行当前文件的后续命令)

    创建另一个脚本test2.bat作为测试

     分情况,

    第一种,2号脚本和1号脚本在同一个目录下

    结果为:

    第二种,2号脚本和1号脚本不在同一个目录,并且2号脚本目录包含中文路径。

    结果报错:

    这是因为中文路径系统默认识别不了,可以通过软件转编码来完成。这里以notepad++为例。

    转码后保存,再次执行1号脚本

    结果为:

     第三种,2号路径中包含了空格

     

    修改脚本

    结果:

     6.start

    启动单独的“命令提示符”窗口来运行指定程序或命令。该命令包含有参数,如下:

    "title" 指定在“命令提示符”窗口标题栏中显示的标题。

    /dpatch 指定启动目录。

    /i 将 Cmd.exe 启动环境传送到新的“命令提示符”窗口。

    /min 启动新的最小化窗口。

    /max 启动新的最大化窗口。

    /separate 在单独的内存空间启动 16 位程序。

    /shared 在共享的内存空间启动 16 位程序。

    /low 以空闲优先级启动应用程序。

    /normal 以一般优先级启动应用程序。

    /high 以高优先级启动应用程序。

    /realtime 以实时优先级启动应用程序。

    /abovenormal 以超出常规优先级的方式启动应用程序。

    /belownormal 以低出常规优先级的方式启动应用程序。

    /wait 启动应用程序,并等待其结束。

    /b 启动应用程序时不必打开新的“命令提示符”窗口。除非应用程序启用 CTRL+C,否则将忽略 CTRL+C 操作。使用 CTRL+BREAK 中断应用程序。

    如果不加参数,则只开启新的窗口来执行命令。

    例如:

    结果:

    如果需要修改新的窗口标题,则使用参数"标题"

    例如:

    结果

     如果2号脚本路径包含空格,则路径需要加"路径"

    例如

    结果

     7.%0-%9

     %0是指批处理文件的本身,%1-%9是传入的参数。这个参数是从批处理外传入的。

    例如:

    直接打开脚本显示:

    在命令行输入:

    输出结果为

     这里再补充一下扩展知识。

    MDK 符号字解释

    KEY        例子                                                                描述

    %            PROJECT1.UVPROJX                                  带扩展名的文件名
    #            C:\MYPROJECT\PROJECT1.UVPROJX       带扩展名的完整路径和文件名
    @           PROJECT1                                                     没有扩展名或路径说明的文件名
    $            C:\MYPROJECT\                                            用反斜杠扩展的文件路径名。
    !            .\SRC\TEST.C                                    具有当前文件夹扩展名和相对路径规范的文件名
    ~ 1        123                                                                   当前光标位置的行号
    ^ 1         51                                                                    当前光标位置的列号

    $D            从设备数据库中选择的设备名称。
    E            编辑器文件名目前在焦点。
    F            根据上下文,这个文件代码返回:在窗口Project中选择的文件。 当前活动的编辑器文件。 当前由构建过程翻译的文件.
    H            应用程序HEX文件名 (PROJECT1.H86).
    $J           编译器的绝对路径。 编译器基本文件夹列在项目-管理-项目项目-文件夹/扩展- ARMCC文件夹。例如我自己的该参数的输出结果就是D:\kei5\ARM\ARMCC\include
    K            开发工具链的绝对根文件夹,不管使用的关键代码是什么
    L            链接器输出文件。 通常用于调试的可执行文件(PROJECT1).
    $M         CPU mask revision number.
    P            当前项目文件名。
    $S            当前激活的设备族包的安装文件夹.
    X            视觉可执行程序文件(…\UV4\UV4. exe)。 适用于Key Code %, #, and @.
    $X            目标-目标- XTAL选项中指定的以MHz为单位的XTAL时钟频率。
    ^X            XTAL时钟频率在千赫指定的目标-目标- XTAL选项。
    Y            预处理器符号文件co-arm_<target_name>.h为C文件类型定义。 适用于关键代码#。
    Z            预处理器符号文件co-arm_<target_name>.hpp为c++文件类型定义。 适用于关键代码#。

    $L           $表示应用的是路径,L表示Output->Name of Executable中设置的名字,即工程的输出名(包含路径)。

    @L        @表示引用的是文件名,@L引用工程的输出名字。换句话说就是使用Keil,在Output中设置的文件输出名字。

    #L        #表示引用的是本身,#L即工程的输出文件。keil的输出文件是.axf文件。如我自己的该参数的输出结果就是D:\myproject\project\Objects\app.axf

    实际fromelf.exe应该也要使用相对路径,所以命令可以改成:

    $KARM\ARMCC\bin\fromelf.exe --bin -o "$L@L.bin" "#L"

    $K        表示的是MDK的安装路径。

     10.choice

    使用此命令可以让用户输入一个字符,从而运行不同的命令。

    输入/?指令查看指令详情

    /c 添加自己的选项

    /n 不显示提示文本

    需要注意的是/t和/d需要配合使用。/t倒计时几秒。/d倒计时结束后的默认选项

    例如10秒倒计时结束后显示

    11.type

    显示文本文件的内容

    先创建一个测试文本test.txt

     调用脚本来显示

    结果为:

    type 文件名 | more

     有事显示的内容过多,想要一行一行显示时调用。

     

    最下行会显示more,任意键会再显示一行

    type 文件名 | find "关键字"

    只输出需要查找的关键字

     结果为

    12.set

    该指令用来设置变量

     不带参数为设置变量。

    例如

    @echo off
    echo hello world
    set value=123456
    echo 输入的值为%value%
    pause

    执行结果为:

     set /p 变量=等待输入的提示字

    例如

    @echo off
    echo hello world
    set /p value=请输入值
    echo 输入的值为%value%
    pause

    结果:

     set /a 变量=公式

    例如:

    @echo off
    echo hello world
    set /a value=1+2+3
    echo 结果:%value%
    pause

    结果:

     13.IF

    用于判断

     if exist 文件名

    查看该文件是否存在

    例如

    @echo off
    echo hello world
    if exist test1.txt (
    echo this file exist
    ) else (
    echo this file not exist)
    pause

    结果为

    可以写到一行,但是一定要注意空格,否则语法为失败。

     

    此外,如果换行,必须"括号"为行最后一个字符。否则无法执行。

     if "字符串"=="字符串"

     判断两个字符串是否相等。

    例如

    @echo off
    echo hello world
    if "123"=="134" (
    echo equality
    ) else (
    echo not equality)
    pause

    结果:

     if %变量%

    可以通过与set /p指令配合来完成输入数字的判断。

    例如:

    @echo off
    echo 1.输出数字
    echo 2.输出字符
    echo 3.输出汉字
    set /p value=请输入
    if %value%==1 (
    echo 数字
    ) else if %value%==2 (
    echo 字符
    ) else if %value%==3 (
    echo 汉字) else (
    echo 输入错误)
    pause

    结果:

     可以通过与choice /c指令配合来完成输入数字的判断。

     例如:

    @echo off
    echo 1.输出数字
    echo 2.输出字符
    echo 3.输出汉字
    choice /c 123
    if %errorlevel%==1 echo 数字
    if %errorlevel%==2 echo 字符
    if %errorlevel%==3 echo 汉字
    pause​

    结果:

    字符串对比

    @echo off
    echo hello world
    set /p value=请输入字符串
    if "%value%" == "true" (echo success
    )else (echo false)
    
    pause

    结果如下:

     /i 参数:不区分大小写,更改代码

    @echo off
    echo hello world
    set /p value=请输入字符串
    if /i "%value%" == "true" (echo success
    )else (echo false)
    pause

     结果:

    14.for

     循环指令。这里需要了解两个关键字%i、%%i

    %i这个关键字不能在bat中使用。只能再CMD命令下的for中使用。

    例如在cmd中:for %i in(command1) do command2

    %%i是在bat的for中使用的指令。

    例如for %%i in(command1) do command2

    for %%i in(command1) do command2是for的语法使用规则。

    1.for、in和do是for语句的关键字,它们三个缺一不可;

    2.%%I是for语句中对形式变量的引用,即使变量l在do后的语句中没有参与语句的执行,也是必须出现的;

    3.in之后,do之前的括号不能省略;

    4.command1表示字符串或变量,command2表示字符串、变量或命令语句;

    意思为:循环调用command1中的元素作为参数,来参与command2的执行

    此外需要注意几点

    1.for语句的形式变量I,可以换成26个字母中的任意一个,这些字母会区分大小写,也就是说,%%I和%%i会被认为不是同一个变量;形式变量I还可以换成其他的字符,但是,为了不与批处理中的%0~%9这10个形式变量发生冲突,请不要随意把%%I替换为%%0~%%9中的任意一个;

    2.in和do之间的command1表示的字符串或变量可以是一个,也可以是多个,每一个字符串或变量,我们称之为一个元素,每个元素之间,用空格键、跳格键、逗号、分号或等号分隔

    3.for语句依次提取command1中的每一个元素,把它的值赋予形式变量I,带到do后的command2中参与命令的执行并且每次只提取一个元素,然后执行一次do后的命令语句,而无论这个元素是否被带到command2中参与了command2的运行;当执行完一次do后的语句之后,再提取command1中的下一个元素,再执行一次command2,如此循环,直到command1中的所有元素都已经被提取完毕,该for语句才宣告执行结束。

    例如:

    @echo off
    echo hello world
    for %%a in (ele1 ele2 ele3) do (echo %%a)
    pause

    结果:

    for /l ....

    该集表示以增量形式从开始到结束的一个数字序列。

    例如:

    @echo off
    for /l %%i in (1,1,20) do (echo %%i)
    pause

    结果:

    高级用法

    搜索当前目录下有哪些文件?

    for %%i in (*.*) do echo "%%i"

    搜索当前目录下所有的文本文件?

    for %%i in (*.txt) do echo "%%i"

    15:goto

    跳转执行标签

    在Bat中有标签一词,跟C语言的函数类似。并且标签必须单独一行,并且以冒号开头

    这里做一个死循环,如下:

    @echo off
    :loop
    echo 1.输出数字
    echo 2.输出字符
    echo 3.输出汉字
    set /p value=请输入
    if %value%==1 (
    echo 数字
    ) else if %value%==2 (
    echo 字符
    ) else if %value%==3 (
    echo 汉字) else (
    echo 输入错误)
    goto loop
    pause

    结果

    这样在每次输入结果后,就会回到起始,重新执行。

    16.符号(&、&&、||、|、>、>>)

     顺序执行多条命令,而不管命令是否执行成功

    && 顺序执行多条命令,当碰到执行出错的命令后将不执行后面的命令

    || 顺序执行多条命令,当碰到执行正确的命令后将不执行后面的命令(即:只有前面命令执行错误时才执行后面命令)

    |  管道命令 前一个命令的执行结果输出到后一个命令 如:help | more

    清除文件中原有的内容后再写入

    >>  追加内容到文件末尾,而不会清除原有的内容主要将本来显示在屏幕上的内容输出到指定文件中指定文件如果不存在,则自动生成该文件

    17.延迟环境变量扩展

            CMD在解释我们的命令的时候,首先会读取命令行一条完整的命令。然后对其进行一些命令格式的匹配操作,看你所输入的命令格式是不是符合他的要求。如果我们要在我们的命令中引用一些变量,那么我们如何让CMD在解释我们的命令时。能识别出这个变量呢?这时我们就可以在变量名字两边加一个%号, 如%name%。当CMD在对读取我们的整行命令进行格式匹配的时候,就会发现name这个字符两边加了%号,就不会把他当作普通字符处理,而是会把他当 作一个变量处理。变量名叫name。然后CMD就会找到变量名对应的值,用变量名的值替换掉这个变量名字(name),(如果变量名不存在值,就返回空 值)。再将这个替换好并且匹配的命令执行。这个替换值的过程就叫做变量扩展。说白了就是把变量的名字,用他的值给替换掉后执行。也就是批处理如何识别一 个变量的过程.

    例如:

    set var=test

    echo %var%

     此时编译器再读取的时候直接将%var%替换为test。所以显示就显示test。

    在看下边这个

    for /l %%i in (1,1,5) do (
    set var=%%i
    echo %var%)

    这个在预编译的时候将%var%替换成%%i,但是%%i又不认识是什么,所以程序在运行的时候就会出错。运行结果如下:

    此时就需要使用延迟环境变量扩展,即每条指令在执行之前才将变量进行替换,以保证对变量的任何修改都可以实时生效.。

    使用setloacl ENABLEDELAYEDEXPANSION这个命令来启用\"延迟环境变量扩展\",遇到的变量需要用!变量!进行替换。那上边异常的代码可以修改为:

    setlocal ENABLEDELAYEDEXPANSION
    for /l %%i in (1,1,5) do (
    set var=%%i
    echo !var!)

    执行的结果为:

    18.exit

    退出当前DOS控制台。

    例如:

    echo hello world
    for /l %%a in (0,0,0) do (
    set /p input=请输入:
    echo !input!
    if !input!==pass (exit))
    pause

    结果:

    只有输入pass,程序才会退出。

    展开全文
  • 批处理(Batch),也称为批处理脚本。它应用于DOS和Windows...文员、网管必会技能:Windows命令行bat/cmd批处理脚本的编写应用文件管理应用1.1.1bat脚本命令MD MKDIR 创建目录 创建文件夹视频教程:http://edu.51...
  • bat批处理for循环

    千次阅读 2020-01-16 11:54:16
    注:in和do之间的set表示的字符串或变量可以是个,也可以是多个,每个字符串或变量,我们称个元素, 每个元素之间,用空格键、跳格键、逗号、分号或等号分隔。 2.带开关的for用法: (1)含 开关/L 的...
  • 脚本: @echo off set /p a=添加共享扫描scan文件夹按y...因为其他命令在实例种都说了其具体意义,现在只说net use net use在众多作用中有个重要作用,就是映射默认共享文件夹 net use z:\IP\c$ "密码" /user:.
  • 文件rename.bat @echo off setlocal EnableDelayedExpansion set /p name=请输入平台名称后回车: set /p str=请输入关键词后回车: set /p w=请输入文件扩展名后回车: set a=0 Set "Num=0%a%" & Set "Nu
  • 玩转Windows系列之bat脚本

    千次阅读 2019-11-26 00:38:39
    玩转windows之Bat常用的骚操作脚本 目录 1、bat脚本中编辑的中文内容提示总是乱码怎么办? 2、Windows中如何开启上帝模式? 3、如何查看电脑连上的wifi密码? 4、如何一键查看电脑所有配置信息? 5、如何通过...
  • XPan批处理版是款最新为用户打造的bat批量加密辅助软件。每个人都有点私货存放,不要提到私货,就想到那种你懂的xxoo类,还包括重要文档,隐私资料,当然只要是你想保密点存储的,防范点菜鸟戳戳有余,目的...
  • 并且使用 7-Zip 创建的 zip 格式比大多数其它压缩软件创建的都小 2-10%。 Typora Typora是款轻便简洁的Markdown编辑器,支持即时渲染技术,这也是与其他Markdown编辑器最显著的区别,将写作与预览窗口相结合,为...
  • 个小白的BAT 文件编写

    万次阅读 2018-09-07 12:40:47
    修改工程代码的时候经常看到这个文件,也对里面的一些内容做过简单的修改,但是如果让我新增个功能时,对语法等还是有一些困惑的。 首先什么是BAT文件? BAT文件也就是我们常说的批处理文件。批处理文件是个...
  • bat Forfiles 整理

    千次阅读 2017-11-02 13:23:07
    要列出驱动器 C: 上 1993 年 1 月 1 日以前创建的所有文件,而且对于日期早于 1993 年 1 月 1 日的文件显示“file is quite old!”,请键入: forfiles /p c:\ /s /m *.* /dt-01011993 /c "cmd /c echo @file is ...
  • windows下定时执行bat脚本

    万次阅读 2020-08-20 14:31:06
    今天闲来无事,在自己windows上写了个bat脚本玩玩。写完了想定时跑个,想java中倒是有定时器,不过这不还得弄个项目写个定时任务??想了想系统应该有自带的可以跑的定时器吧,不然怎么设置一些开机自启动的东西...
  • bat文件注册成服务

    千次阅读 2022-01-04 09:09:19
    以管理员身份运行cmd,然后执行C:\DosCommand\instsrv.exe test1 C:\DosCommand\srvany.exe命令创建名为test1服务,两个地址命令即为instsrv.exe和srvany.exe的存放地址 完成后显示效果如下: 3、然后cmd执行...
  • windows BAT 批处理常见命令解析

    千次阅读 2020-02-14 09:19:42
    在上篇“windows bat 批处理脚本编写指南”博文中,比较系统地介绍了如何编写windows bat 批处理脚本,本文将重点介绍bat脚本中常用命令及部分DOS内外部命令使用方法,基本思路如下: 1)将命令分成bat脚本使用的...
  • windows bat 命令-指定目录拷贝文件

    千次阅读 2021-02-03 17:36:24
    创建bat命令就不说了,割……………………………… 阿巴巴 今天要用到个自动化工具,将生成出来的文件一键拷贝到多个目录,找遍全网巴拉巴拉巴拉说了大堆 我以为有多复杂,各种五花八门的命令骚操作 比如这...
  • BAT批处理命令

    千次阅读 2021-10-24 15:11:13
    1.批处理文件是个“.bat”结尾的文本文件,这个文件的每行都是条DOS命令。可以使用任何文本文件编辑工具创建和修改。 2.批处理是种简单的程序,可以用 if 和 goto 来控制流程,也可以使用 for 循环。 3....
  • 批量修改注册表之Bat脚本

    千次阅读 2021-03-13 16:28:57
    在Horizon桌面环境里,有时需要对桌面映像注册表进行修改以实现模板优化,但是在生产环境场景多变,难免需要对批桌面进行注册表批量修改,那怎么实现,本文将介绍如何使用域策略配置开机脚本,执行批量修改租户...
  • 概述 exe程序添加到Windows服务 .bat批处理文件添加到Windows服务 二 exe程序添加到Windows服务 2.1 创建——管理员模式 sc.exe create "Service Name" binPath= "C:\Your Program.exe" //注:binPath=后的...
  • 、介绍bat批处理文件之前先了解下基本批处理代码 1.::添加注释。 2.set设置变量。 3.echo内容输出,输出字符串常量不需要加引号、双引号,输出变量时,变量两边需要加英文感叹号!,如!NowYM!。 4.delims切割函数,...
  • Python中调用设置环境变量的bat

    千次阅读 2020-12-21 11:07:30
    工作中用到个python脚本,自动化运行某目录下的多个vc工程代码。编译工程代码的命令如下,直接运行会失败,系统找不到devenv,我们需要添加devenv.exe所在的目录到环境变量中。os.system('devenv'+name+'.sln/...
  • 制作批处理.bat文件一键安装MongoDB并给其设置账号及权限下载MongoDB安装包创建批处理(bat)文件,安装MongoDB批处理文件设置MongoDB权限账号 下载MongoDB安装包 进入MongoDB下载地址:...
  • bat 脚本使用

    万次阅读 多人点赞 2020-01-11 23:35:47
    bat文件是存在于dos/windows中的脚本文件,bat的直接操作对象是dos命令,dos命令是system32下的exe或者cmd可执行程序的子集,长驻于内存中,具有简单、处理速度快的特点,取名为批处理毫无争议,也是非图形shell在...
  • windows bat脚本编写

    万次阅读 多人点赞 2018-08-03 17:55:31
     开始之前先简单说明下cmd文件和bat文件的区别:在本质上两者没有区别,都是简单的文本编码方式,都可以用记事本创建、编辑和查看。两者所用的命令行代码也是共用的,只是cmd文件中允许使用的命令要比bat文件多。...
  • 常用bat脚本命令

    千次阅读 2020-10-20 18:32:36
    前言: ... 个使用 cmd 运行的, 个用 dos 解释器解释运行。 cmd 文件只有在 windows2000 以上的系统中才能运行,而 bat 文件则没有这个限制。 cmd 文件的描述是 windows nt 命令脚本, bat 文件的
  • win10滑动下拉关机bat

    千次阅读 2020-12-20 11:41:14
    win10滑动下拉关机bat不知道大家有没有想过想关手机一样关电脑呢?今天小编就告诉大家怎么做到滑动以关电脑。具体如下:1. 首先我们打开电脑,右键,在弹出的窗口中点击新建,然后选择文本文档。2. 新建之后我们再...
  • bat批处理修改注册表

    千次阅读 2020-01-21 17:38:55
    [/d Data] [/f]reg add 先热个身吧(bat为程序设置开机启动项): reg add HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run /v rainmeter /t REG_SZ /d "C:\Program Files\Rainmeter\Rainmeter....
  • 拷贝要求,需要根据文件最后的修改日期判断,保留最近60天内的文件,60天之前的需要拷贝备份 举例:将【E:\FTP\dzfp\pdf】文件夹下的符合要求的pdf文件(60天之前的)拷贝到【E:\FTP\pdfBackup\pdf】 2)拷贝...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 58,794
精华内容 23,517
热门标签
关键字:

创建bat之一