当前位置:   article > 正文

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

window11 bat脚本编写

部分参考自: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;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

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

for %%i in (resource1 ^
            resource2 ^
            resource3 ^
            resource4) ^
do echo %%i
  • 1
  • 2
  • 3
  • 4
  • 5

1. echo

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

echo Hello World!

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

结果:

E:\>echo Hello World!

Hello World!

E:\>PAUSE

请按任意键继续. . .
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

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

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

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

@echo off

echo Hello World!

PAUSE
  • 1
  • 2
  • 3
  • 4
  • 5
结果:

Hello World!

请按任意键继续. . .
  • 1
  • 2
  • 3
  • 4
  • 5

- 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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

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

@echo off
::title设置标题
title 我测试一下!
pause
  • 1
  • 2
  • 3
  • 4

在这里插入图片描述

2. 注释、暂停

  • rem
  • ::
@echo off

echo Hello World!

rem 我是一个注释

:: 巧了我也是一个注释

PAUSE
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
结果:

Hello World!

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

3. 参数标识符 %

- 代表参数

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

@echo off

type %1

type %2

pause
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
使用cmd,进入到对应目录下:

E:\>test a.txt b.txt

我是a我是b请按任意键继续. . .
  • 1
  • 2
  • 3
  • 4
  • 5

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

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

@echo off

call test a.txt b.txt

pause
  • 1
  • 2
  • 3
  • 4
  • 5

- 非for语句引用变量

@echo off

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

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

pause
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

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

结果:

HelloWorld!

请按任意键继续. . .
  • 1
  • 2
  • 3
  • 4
  • 5

- for语句要用“%%”

@echo off

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

pause
  • 1
  • 2
  • 3
  • 4
  • 5
结果:

1

2

3

4

5

请按任意键继续. . .
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

4. call、start

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

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

echo 调用另一个bat文件:

call another

pause
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

another.bat:

@echo off

echo 我是另一个bat文件

pause
  • 1
  • 2
  • 3
  • 4
  • 5
结果:

调用另一个bat文件:

我是另一个bat文件

请按任意键继续. . .
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 带参数的

test.bat:

@echo off

echo %0 %1

pause
  • 1
  • 2
  • 3
  • 4
  • 5

another.bat:

@echo off

call test.bat 我是参数

pause
  • 1
  • 2
  • 3
  • 4
  • 5
运行another.bat,结果:

test.bat 我是参数

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

call :b

start notepad.exe

exit

:b

start b.txt
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
结果:

先打开b.txt,然后打开了记事本。
  • 1
  • 2
  • 3

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

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

python somescript.py
echo %ERRORLEVEL%
  • 1
  • 2

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

exit(15) #退出并返回15
  • 1

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

from sys import exit
exit(
  • 1
声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号