【脚本语言】windows下bat文件常用语法学习

本文详细介绍了Windows批处理脚本(BAT文件)的常用语法,包括echo、注释、参数标识符%、call和start命令的使用、if条件判断、for循环、文件和文件夹操作、set /p命令以及各种符号的解释。此外,还提到了如何在批处理中调用Python脚本并获取返回码,以及如何通过批处理脚本来获取Git仓库的版本信息。
摘要由CSDN通过智能技术生成

部分参考自:https://www.jianshu.com/p/02f6fe974cfd?utm_campaign
http

0. ^折行

我们知道在C/C++中,只要不是在关键字中,或标识符中,或字符串常量中,你随时都可以回车换行而不会提示有语法错误。还能在可使用空格的地方使用反斜杠\实现换行,其前后可以有也可以没有空格,其后除空格外不能有其他符号包括注释符号。如:

#include <iostream> 
using namespace std;
 
main
()
{
	int a = 10;
	cout << "a="<< 
	a <<endl;
 
	int b \
	= \
	20 ;
	cout << 
	"b=" << b 
	<<endl;
	
    return 0;
}

Linux中使用\来实现折行。在BAT中使用^来折行。如:

for %%i in (resource1 ^
            resource2 ^
            resource3 ^
            resource4) ^
do echo %%i

1. echo

- echo 用于显示此命令后的字符。

echo Hello World!

PAUSE
注:pause是用来暂停的,直到用户输入任意键关闭。

结果:

E:\>echo Hello World!

Hello World!

E:\>PAUSE

请按任意键继续. . .

- echo off 表示此命令后的所有命令都不显示命令本身。

- @ 与echo off相似,但只是不显示当前行的命令。

@echo off 是经常组合放在开头的,关闭所有回显功能。

@echo off

echo Hello World!

PAUSE
结果:

Hello World!

请按任意键继续. . .

- echo.换行

换行命令,即echo后加一个点

- 新建文件、增加文件内容

@echo off
rem 格式:echo 文件内容>文件路径
echo @echo off>test1.bat
::其中>>在文末添加,>覆盖原内容
echo echo this is test>>test1.bat
echo pause>>test1.bat
rem 显示该文件内容
type test1.bat
pause

在这里插入图片描述
设置标题,可以用title

@echo off
::title设置标题
title 我测试一下!
pause

在这里插入图片描述

2. 注释、暂停

  • rem
  • ::
@echo off

echo Hello World!

rem 我是一个注释

:: 巧了我也是一个注释

PAUSE
结果:

Hello World!

请按任意键继续. . .
  • pause
    pause暂停,命令行中出现"请按任意键继续…"

3. 参数标识符 %

- 代表参数

%[1-9]表示参数,参数是指在运行批处理文件时在文件名后加的以空格(或者Tab)分隔的字符串。变量可以从%0到%9,%0表示批处理命令本身,其它参数字符串用%1到%9顺序表示

@echo off

type %1

type %2

pause
使用cmd,进入到对应目录下:

E:\>test a.txt b.txt

我是a我是b请按任意键继续. . .

注:test是我们写入内容的bat文件,a.txt和b.txt分别是当前目录下的两个txt,内容分别为“我是a”和“我是b”。

或者也可以新创建一个bat文件调用刚才写的bat文件:

@echo off

call test a.txt b.txt

pause

- 非for语句引用变量

@echo off

set a=HelloWorld! ::注意=两边不能有空格!!!

echo %a%  ::%变量名% 的方式来调用变量

pause

注意:“set a=HelloWorld!”这句,由于编程习惯,原意在等号两边加空格,但是这样的话就会出现“ECHO处于关闭状态”的错误了。

结果:

HelloWorld!

请按任意键继续. . .

- for语句要用“%%”

@echo off

for %%i in (1 2 3 4 5) do echo %%i

pause
结果:

1

2

3

4

5

请按任意键继续. . .

4. call、start

在程序中调用子脚本,在当前程序中运行子脚本代码,子脚本执行完后继续执行本程序之后的代码

  • 调用另一个bat文件
@echo off

echo 调用另一个bat文件:

call another

pause

another.bat:

@echo off

echo 我是另一个bat文件

pause
结果:

调用另一个bat文件:

我是另一个bat文件

请按任意键继续. . .
  • 带参数的

test.bat:

@echo off

echo %0 %1

pause

another.bat:

@echo off

call test.bat 我是参数

pause
运行another.bat,结果:

test.bat 我是参数

请按任意键继续. . .
  • call一个应用程序(但一般都用start)
    注意:执行start时将开启一个新线程来执行该程序,原程序不受影响继续执行
@echo off
::打开test.txt文件
start e:\test.txt
::启动jar包
start java -jar e:\demo.jar
pause
  • call一个标签
@echo off

call :b

start notepad.exe

exit

:b

start b.txt
结果:

先打开b.txt,然后打开了记事本。

bat中调用python脚本,如何获得返回码

Windows shell将返回代码保存在ERRORLEVEL变量中:

python somescript.py
echo %ERRORLEVEL%

在python脚本中,您可以通过调用exit()以下命令退出脚本并设置返回值:

exit(15) #退出并返回15

在旧版本的python中,您可能首先必须exit()从sys模块导入该函数:

from sys import exit
exit(15)

5. if

用于判断,类似C语言的if

- 字符串判断

if [not] “参数” == “字符串” 待执行的命令

another.bat:

@echo off

call test.bat a

pause

test.bat

@echo off

if not "%1"=="a" (echo 参数不是a)else (echo 参数是a)

pause

注意:判断结束后,要和“(”之间留一个空格,“else”也要和“(”之间留一个空格。

运行结果:

参数是a

请按任意键继续. . .

- 判断数值相等

@echo off

if 1 equ 2 (echo 1等于2) else (echo 1不等于2)

pause
结果:

1不等于2

请按任意键继续. . .

注:大于不能使用符号“>”,而应该使用GTR。

  • EQU - 等于

  • NEQ - 不等于

  • LSS - 小于

  • LEQ - 小于或等于

  • GTR - 大于

  • GEQ - 大于或等于

- 文件判断

@echo off

if exist e:\b.txt (echo e盘下有b.txt) else (echo e盘下没有b.txt)

pause
结果:

e盘下有b.txt

请按任意键继续. . .

- 判断某个变量是否已经被赋值,用 if defined str 语句

@echo off

set str=HelloWorld!

if defined str (echo 变量的值为%str%) else (echo 变量没有被赋值)

pause
结果:

变量的值为HelloWorld!

请按任意键继续. . 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值