- Java锁的逻辑(结合对象头和ObjectMonitor)
- 还在用饼状图?来瞧瞧这些炫酷的百分比可视化新图形(附代码实现)⛵
- 自动注册实体类到EntityFrameworkCore上下文,并适配ABP及ABPVNext
- 基于Sklearn机器学习代码实战
我们在日常工作中常常会遇到一些需要重复进行的工作,又或者我们的项目在转交客户时需要去简化配置过程 。
这时我们就需要使用到一些自动化部署操作,我们常常会采用脚本来完成这部分功能 。
下面我们来介绍一种脚本类型Bat脚本,我们会从以下方面介绍:
首先我们需要去简单了解一下脚本 。
首先我们需要知道脚本是什么:
那么脚本具有什么优势:
那么市面上常见的脚本都有哪些:
首先我们需要先去了解一下Bat脚本:
Bat脚本是一种以.bat结尾的文件,可以直接双击点击使用即可 。
全称batch脚本,也称批处理文件,是Windows系统默认支持的脚本语言 。
然后我们给出一个简单的Bat脚本,介绍一下基本格式:
REM 这是注释,@echo off表示关闭Bat脚本内容展示
@echo off
REM set表示定义变量
set name=123
REM echo表示页面输出,%%中包含变量名可以使用变量
echo %name%
REM goto:eof表示结束不再继续下面的内容
goto:eof
下面我们会介绍Bat的基本语法内容 。
首先我们介绍注释信息:
@:表示不显示本行信息,但是仍执行 。
REM:表示注释信息,该注释信息不会显示 。
"::":也表示注释信息,实际上":"加任意符号都可以表示无信息显示,但我们通常用::来表示注释 。
我们给出简单示例:
REM 我是注释
:: 我是注释
首先我们来介绍echo的五种用处:
我们给出简单示例:
REM 我们采用@来隐藏该行指令,这样本行就不会出现在界面
REM 我们使用echo off,那么我们后续的指令就不会出现在界面中
@echo off
REM 正常输出语句
echo 123
REM 这里如果我们输出所拼接的字符串,直接拼接即可
echo hello world
REM 表示换行符
echo.
REM 表示将123写入t.txt文本中
echo 123 > t.txt
REM 表示将456覆盖进t.txt文本中,这时文本内为456
echo 123 > t.txt
REM 表示将789追加到t.txt文本中,这时文本内为789
echo 789 >> t.txt
我们先来简单介绍一个pause
我们常常会将其用于暂停页面查看信息
REM 我们采用@来隐藏该行指令,这样本行就不会出现在界面
REM 我们使用echo off,那么我们后续的指令就不会出现在界面中
@echo off
REM 我们查看一个较长的数据
echo 123
REM 我们可以在中途暂停查看数据,点击后查看下一个数据
pause
REM 我们查看一个较长的数据
echo 456
我们简单介绍title
我们给出简单实例
@echo off
REM 设置标题为this is a test
title this is a test
我们先来介绍一下set关键字
我们给出一个简单示例
@echo off
REM set 后跟变量名=变量值,注意不能存在空格
set name=ScriptHome
REM 然后我们可以采用%%去使用该数据
echo %name%
REM 我们可以直接进行拼接
set age=18
echo %name%%age%
REM set的变量值可以进行界面交互获取(set /P 变量名=提示信息)
set /P yourname=你的名字是:
echo %yourname%
下面我们来介绍跳转关键字
我们给出一个简单实例
:: goto展示
@echo off
REM 下述是一个死循环,我们正常使用时不能这样书写,下述会一直输出1
:top
echo 1
goto:top
:: goto:eof 表示结束,执行后就不会再执行后续命令
REM 下述命令只会执行1,不会执行2,因为在中间进行了中断
@echo off
echo 1
goto:eof
echo 2
首先我们需要知道Bat脚本其实是基于cmd命令来实现的,所以我们首先给出window的一些常用命令:
windows命令行 | 功能描述 | linux终端 |
---|---|---|
cd | 切换工作目录 | cd |
dir | 列出当前文件夹下所有文件 | ls [-lh] |
type | 查看文件内容 | cat |
md/mkdir | 创建目录 | mkdir |
del | 删除文件 | rm |
rd | 删除目录 | rm -r |
copy/xcopy | 拷贝 | cp [-r] |
cls | 清屏 | clear |
findstr | 根据关键字查找 | grep |
move/rename | 移动/重命名 | mv/rename |
tasklist | 查找进程 | ps [-ef] |
taskkill | 杀死进程 | kill [-9] |
下面我们统一来介绍一些其他语法 。
::首先我们需要介绍一个Bat脚本中文乱码修复办法:使用 chcp 65001 命令行
::当然我们也可以在保存时手动选择为ANSI编码格式来解决中文乱码问题
@echo off
chcp 65001
set param1=hello
set param2=world
REM 默认情况下可能会导致你好出现乱码状况,但是有chcp 65001相当于选择 ANSI 编码格式,可以修复乱码问题
echo %param1%%param2%你好
::start可以调用同目录级别下的其他文件
下面我们来介绍一些关于Bat的常用内容 。
除了常用的符号我们还需要注意一些常用的系统变量
REM 当前工作路径
%CD%
REM 当前日期,格式为"星期日 DD/MM/YYYY"
%DATE%
REM 当前时间,格式为"HH:MM:SS.SS"
%TIME%
REM 一个从0~32767之间的随机数
%RANDOM%
REM 之前的命令是否出错(出错为0,出错为1+)
%ERRORLEVEL%
REM 当前登录用户名
%USERNAME%
REM 当前用户的用户文件夹目录
%USERPROFILE%
REM 当前用户的应用程序数据文件夹目录
%APPDATA%
首先我们来介绍Bat中常用的各类符号的功能 。
命令行回显屏蔽符@的主要用途
批处理变量引导符%的主要用途
重定向符>的主要用途
命令管道符| 的主要用途
转义字符^的主要用途
组合命令&的主要用途
组合命令&&的主要用途
组合命令|| 的主要用途
下面我们来介绍Bat脚本中的一些进阶内容 。
首先我们需要了解Bat脚本中的函数:
我们来给出一些简单的函数实例:
::首先我们先来声明函数
REM 声明两个函数
:method1
@echo hello
:method2
@echo world
REM 但实际上输出的结果会是helloworld,因为只要存在在bat中该代码都会被执行,所以我们需要一些命令避免执行
:: 我们会采用call来调用函数同时分段在末尾书写goto:eof来中断后续代码执行
REM 声明两个函数并调用第二个函数
@echo off
call:method2
goto:eof
:method1
@echo hello
goto:eof
:method2
@echo world
goto:eof
REM 那么我们只会执行world,因为call调用method2,然后method2末尾有goto:eof回到原位置执行第二个goto:eof结束bat文件
下面我们来介绍一下数组:
我们下面给出数组实例:
:: 我们首先给出基础数组
set arr=1,3,5,6,8
REM 这里是一个for循环,我们会在后续介绍,大致意思就是从arr数组种提取数据a,然后展示
for %%a in (%arr%) do (
@echo %%a
)
:: 然后我们来展示带有下标的数组
set a[0]=1
set a[1]=3
set a[2]=5
set a[3]=7
set a[4]=9
set a[5]=11
REM 这里也是for循环,大致意思从0~5全部遍历一遍为n,然后去获得a[n]的值
for /l %%n in (0,1,5) do (
@echo !a[%%n]!
)
我们这里介绍的循环是for循环:
基本格式:FOR %%variable IN (set) DO command [command-parameters] 。
其中%%variable表示我们获取的数组中的各个元素值 。
其中set表示我们所定义的数组,有的可以是数组,有的可以是自定义的一些数据 。
最后do(),()中书写所需要执行的for循环内容 。
我们需要注意的是针对不同的for循环参数具有不同的意义:
下面我们给出关于for循环的一些案例:
:: 基本循环语法
for [/d/l/r/f] %%i in () do (
)
:: 这里讲解一个知识点:\dir /b 指定目录\ 这个语法可以用于获得指定目录下的所有文件和文件夹
REM %~dp0等同于%CD%,表示当前路径
set curdir=%~dp0test1\
for /f %%i in ('dir /b "%curdir%"') do (
echo %%i
)
:: /d 表示获取某一目录下的所有文件夹
REM 表示bat同目录级下的所有文件夹
for /d %%i in (%cd%\*) do (
@echo %%i
)
:: /l 可以使用一个序列来做循环,包含三个参数,第一个参数是开始值,第二个参数是跨步值,第三个参数是结束值
REM 例如下面我们会从1~10每隔两位输出,输出为1,3,5,7,9
for /l %%i in (1 2 10) do (
echo %%i
)
REM 此外也可以实现倒数输出
for /l %%i in (10 -2 1) do (
echo %%i
)
:: /r 可以获取某一个目录下所有的文件以及文件夹下的文件
REM 获得该目录下的所有文件及文件夹内的txt文本文件
for /r %%i in (*.txt) do (
@echo %%i
)
:: /f 读取文件(下述的/表示换行)
REM 例如我们的数据为:
REM ID NAME AGE
REM 1 zhang 18
REM 2 lisi 15
REM 3 wang 19
REM 读取user.txt文件并展示(默认只读取每行第一个空格前的信息)
REM 那么展示的数据就是ID /1 /2 /3
for /f %%a in (user.txt) do (
echo %%a
)
REM 可以增加一个"delims="的参数,表示不分割读取每一行
REM 那么展示的数据就是ID NAME AGE /1 zhang 18 /2 lisi 15 /3 wang 19
for /f "delims=" %%a in (user.txt) do (
echo %%a
)
REM 也可以采用"delims=分隔符"来将其分割输出,同时需要采用tokens设置获取几列数据
REM delims= 表示以空格作为分隔符;tokens=1-3表示获取第1~3列分别作为%%a,%%b,%%c来作为参数输出
for /f "tokens=1-3 delims= " %%a in (user.txt) do (
echo %%a - %%b - %%c
)
这篇文章中详细介绍了Bat脚本的优势和一些具体语法来帮助我们快速构建脚本,希望能为你带来帮助 。
下面给出我学习和书写该篇文章的一些参考文章,大家也可以去仔细观赏:
bat批处理脚本大全: bat批处理脚本大全_bat脚本_luffy5459的博客-CSDN博客 。
批处理文本脚本教程: 超详细 批处理文件脚本(bat) 教程(持续更新)_bat脚本_哈森程序猴的博客-CSDN博客 。
【最全】BAT批处理脚本教程: 【最全的】BAT 批处理脚本教程_bat脚本菜鸟教程_致守的博客-CSDN博客 。
最后此篇关于常用脚本学习手册——Bat脚本的文章就讲到这里了,如果你想了解更多关于常用脚本学习手册——Bat脚本的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
这段代码: class Bat{ public: Bat(); Bat(int i=0); virtual ~B
有没有办法摆脱整个测试文件?整个测试套件? 类似的东西 @test 'dependent pgm unzip' { command -v unzip || BAIL 'missing depend
我有一些 bats我运行以测试某些功能的脚本如何在脚本中回显 bats 文件名? 我的 bats 脚本如下所示: #!/usr/bin/env bats load test_helper echo $
我想创建一个 bat 文件,该文件创建一个文件列表和路径(MyList.txt)。将该文件保存到运行 bat 文件的同一目录中。 这就是我试图用 MyList.txt 完成的。我也想整理文件。 fil
有人可以教我如何使用 .bat 文件或建议更改代理设置吗? 老实说,我找不到有关的好信息。 我需要一个 .bat 文件,它将使用特定的代理 IP 和端口更改我的 Internet 设置(代理)。 谢谢
我想知道如何创建一个 bat 文件来执行在特定目录中找到的所有其他 bat 文件? 最佳答案 单向 for %%f in (c:\xxx\*.bat) do ( call %%f ) (要从同一
我想知道如何创建一个 bat 文件来执行在特定目录中找到的所有其他 bat 文件? 最佳答案 单向 for %%f in (c:\xxx\*.bat) do ( call %%f ) (要从同一
我需要创建 2 个 .bat 文件: 转储我的 PostgreSQL 数据库 恢复 PostgreSQL 数据库 如何将变量(数据库名称、登录名、密码等)移出到外部文件,以便两个 .bat 文件可以使
我正在尝试设置 Minecraft 服务器,实际上一切正常。我正在使用 launch.bat 文件启动服务器。 "%ProgramFiles%\Java\jre1.8.0_20\bin\java.ex
我在 Windows 2003 系统上,需要编写脚本来删除和创建 WebSphere Application Server 中的配置文件。这需要我调用 manageprofiles.bat 两次,一次
这里相对简单的事情没有一个容易发现的答案......我已经尝试了 start、/K 标志等的变体,但是每当我的批处理文件命中 servicecontroller 时行并运行该命令,它完成了命令,但之后
我正在尝试获取我的 commit-build.bat执行其他 .BAT 文件作为我们构建过程的一部分。 commit-build.bat的内容: "msbuild.bat" "unit-tests.b
我有一个要获取的实用程序脚本,其中包含两个提示用户输入的函数; anykey 和 yesno。 如何测试提示?提示文本不会显示在 $output 中。 此外,如何强制 yesno 中的 while 循
我有一个要获取的实用程序脚本,其中包含两个提示用户输入的函数; anykey 和 yesno。 如何测试提示?提示文本不会显示在 $output 中。 此外,如何强制 yesno 中的 while 循
我有一个 bat 文件,它根据文件名将每个文件放在一个文件夹中。但是,当我运行 bat 文件时,它也会将 bat 文件放在一个文件夹中。我想排除 bat 文件扩展名,因为我必须进入每个文件夹并剪切 b
我的机器上安装了 python.exe(多次),但没有安装 python.bat。我正在尝试构建 Chromium 嵌入式框架,主批处理文件显示 @echo off python.bat tools\
我想使用 master.bat 从不同位置执行多个 .bat 文件 我试过 Master.bat REM Echo Launch dir: "%~dp0" REM Echo Current dir:
嘿社区,我需要知道如何运行 .bat 文件以将文本字符串写入运行 .jar 的 .bat 文件以使用该命令。 用于运行其他批处理文件中的命令的批处理文件也将从 Windows 任务计划程序运行。 顺便
在C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC目录下,有两个.bat文件: ./vcvarsall.bat bin/vcvars32.b
我想在 tomcat 上部署时在 war 文件之外设置 application.properties 文件,这是我的观察 1. 当我将 jvm 属性设置为 spring.config.location
我是一名优秀的程序员,十分优秀!