当前位置: win11系统之家 >  微软资讯 >  win10bat脚本制作

win10bat脚本制作 Windows批处理脚本编写教程

更新时间:2024-07-15 18:00:56作者:relsound

  在Windows操作系统中,批处理脚本是一种非常实用的工具,可以帮助用户自动化执行一系列的命令和任务,本教程将详细介绍如何使用win10bat脚本来制作Windows批处理脚本,让您能够更高效地管理和处理各种操作系统任务。无论您是初学者还是有一定经验的用户,都能从本教程中学到实用的技巧和方法。让我们一起来吧!

win10bat脚本制作 Windows批处理脚本编写教程 目录常见用途bat命令速查常用参数echo注释Rem使用::声明dir :获取目录内容> :将输出重定向到文件变量命令行参数set命令字符串数值局部变量 vs 全局变量环境变量输出字符串创建空字符串字符串拼接字符串长度转int截取右对齐删除字符串删除两端(保留中间)删除空格:=替换数组创建访问修改迭代数组长度结构体if语句if defined :变量是否存在if exists:文件是否存在if errorlevel:测试运行的最后一个命令的退出代码for语句/d/r/l/fgoto语句运算符关系运算符系统日期日期格式化系统时间输入输出重定向函数调用 call :function_name进程查看进程列表TASKLIST终止进程启动进程别名doskey 别名管理创建删除管道(|)

常见用途 为不同的目的设置服务器自动管理活动和日志,如删除不需要的文件或日志文件自动将应用程序从一个环境部署到另一个环境。立即在各种机器上安装程序。

bat命令速查

常用参数

/L: for循环移动范围的/L参数用于迭代数组。/A:数值

echo
@echo off
“echo off” :关闭脚本的显示(不显示命令)。“@” :使命令也适用于自己。

注释

Rem
Rem Remarks

程序执行时忽略Rem关键字之后的任何内容。

使用::声明
:: Remarks

dir :获取目录内容

> :将输出重定向到文件
@echo off Rem This is for listing down all the files in the directory Program files dir "C:\Program Files" > C:\lists.txt echo "The program has completed"

变量

命令行参数
rem Test.bat@echo off echo %1 echo %2 echo %3

运行方式

Test.bat 1 2 3

set命令

set /A variable-name=value

variable-name: 变量的名称value:变量值。/A:如果该值本质上是数值,则使用此开关。

字符串
@echo off set message=Hello World echo %message%rem 变量需要包含在%符号中显示

数值
@echo off SET /A a=5 SET /A b=10 SET /A c=%a% + %b% echo %c%

局部变量 vs 全局变量 默认情况下为全局变量。调用SETLOCAL命令,使变量局部在脚本的范围内。在调用SETLOCAL之后,任何变量赋值在调用ENDLOCAL,调用EXIT,或者当执行到达脚本中的文件结尾(EOF)时都会返回。
@echo off set globalvar=5SETLOCALset var=13145set /A var=%var% + 5echo %var%echo %globalvar%ENDLOCAL

环境变量输出
@echo off echo %JAVA_HOME%

字符串

创建
set message=Hello World

空字符串
SET a= if [%a%]==[] echo "String A is empty" 

要检查是否存在空字符串,需要在方括号中包含变量名,并将其与方括号中的值进行比较。

字符串拼接
@echo off SET a=Hello SET b=World SET /A d=50 SET c=%a% and %b% %d%echo %c%:: Hello and World 50

字符串长度
@echo offset str=Hello Worldcall :strLen str strlenecho String is %strlen% characters longexit /b:strLensetlocal enabledelayedexpansion:strLen_Loop   if not "!%1:~%len%!"=="" set /A len+=1 & goto :strLen_Loop(endlocal & set %2=%len%)goto :eof

转int

使用set变量设置为字符串的变量后,可以使用set变量的**/A开关转换为整数**。

@echo offset var=13145set /A var=%var% + 5echo %var%

截取
%variable:~num_chars_to_skip% %variable:~num_chars_to_skip,num_chars_to_keep%

输出:

Helloworld Hello

~0,5用于指定需要显示的字符

右对齐
@echo off set x=1000 set y=1 set y=%y% echo %x% set y=%y:~-4% echo %y%

输出

10001

使用~-4选项来表示只想显示字符串y的最后4个字符。

删除字符串
@echo off set str=Batch scripts is easy. It is really easy. echo %str% :: 删除isset str=%str:is=% echo %str%:: Batch scripts easy. It really easy.

删除两端(保留中间)
@echo off set str=Batch scripts is easy. It is really easy echo %str% set str=%str:~1,-1% echo %str%:: atch scripts is easy. It is really eas

删除空格:=
@echo off set str=This string    has    a  lot  of spaces echo %str% set str=%str:=% echo %str%:: Thisstringhasalotofspaces

替换
@echo off set str=This message needs changed. echo %str% set str=%str:needs=has% echo %str%:: This message has changed.

数组 创建 方法一:set
set a[0]=1
方法二:值列表遍历
@echo off set list=1 2 3 4 (for %%a in (%list%) do (    echo %%a ))

访问
echo %a[0]%

修改
Set a[3]=4 

迭代
@echo off setlocal enabledelayedexpansion set topic[0]=comments set topic[1]=variables set topic[2]=Arrays set topic[3]=Decision making set topic[4]=Time and date set topic[5]=Operators for /l %%n in (0,1,5) do (    echo !topic[%%n]! )

for循环移动范围的/L参数用于迭代数组。

数组长度
@echo off set Arr[0]=1 set Arr[1]=2 set Arr[2]=3 set Arr[3]=4 set "x=0" :SymLoop if defined Arr[%x%] (    call echo %%Arr[%x%]%%    set /a "x+=1"   GOTO :SymLoop )echo "The length of the array is" %x%

结构体
@echo off set len=3 set obj[0].Name=Joe set obj[0].ID=1 set obj[1].Name=Mark set obj[1].ID=2 set obj[2].Name=Mohan set obj[2].ID=3 set i=0 :loop if %i% equ %len% goto :eof set cur.Name= set cur.ID=for /f "usebackq delims==.tokens=1-3" %%j in (`set obj[%i%]`) do (    set cur.%%k=%%l ) echo Name=%cur.Name% echo Value=%cur.ID% set /a i=%i%+1 goto loop

if语句
if %c%==15 (echo "The value of variable c is 15") else (echo "Unknown value") 

if defined :变量是否存在
if defined str1 echo "Variable str1 is defined"

if exists:文件是否存在
if exist C:\set3.txt (echo "File exists") else (echo "File does not exist")

if errorlevel:测试运行的最后一个命令的退出代码
if errorlevel n somecommand

各种命令发出整数退出代码来表示命令的状态。 通常,如果命令成功完成,则命令通过传递0;如果命令失败,命令通过传递1。

for语句 %variable 指定一个单一字母可替换的参数。注意:批处理脚本中使用%%variable(set) 指定一个或一组文件。可以使用通配符。command 指定对每个文件执行的命令。command-parameters 为特定命令指定参数或命令行开关。

/d

/r

/l

/f

goto语句
@echo off SET /A a=5 if %a%==5 goto :labela if %a%==10 goto :labelb:labela echo "The value of a is 5" exit /b 0:labelb echo "The value of a is 10"

运算符

关系运算符 运算符备注EQU相等NEQ不等LSS左小于右LEQ小于等于GTR大于GEQ大于等于

系统日期
echo %DATE%

日期格式化
@echo off echo/Today is: %year%-%month%-%day% goto :EOF setlocal ENABLEEXTENSIONS set t=2&if "%date%z" LSS "A" set t=1 for /f "skip=1 tokens=2-4 delims=(-)" %%a in ('echo/^|date') do (    for /f "tokens=%t%-4 delims=.-/ " %%d in ('date/t') do (       set %%a=%%d&set %%b=%%e&set %%c=%%f)) endlocal&set %1=%yy%&set %2=%mm%&set %3=%dd%&goto :EOF

系统时间
echo %TIME%

输入输出 0:stdin 标准输入1:stdout 标准输出2:stderr 错误消息

重定向
DIR C:\ > lists.txt 2> &1
使用文件编号和"&"前缀来组合stdout和stderr流

函数
:function_name Do_something EXIT /B 0
function_name是赋予函数的名字,它应该与函数的实际功能相匹配。EXIT语句用于确保函数正常退出.
:Display SET /A index=2 echo The value of index is %index% EXIT /B 0

调用 call :function_name
@echo offRem mainSETLOCALCALL :Display 5 , 10EXIT /B %ERRORLEVEL%Rem function:Displayecho The value of parameter 1 is %~1echo The value of parameter 2 is %~2EXIT /B 0
确保在主程序中放入EXIT / B%ERRORLEVEL%语句,以便将主程序的代码与函数分开。使用~1来访问发送给函数的第一个参数,同样使用~2来访问第二个参数。

进程

查看进程列表TASKLIST
:: 获取内存大于40MB的进程tasklist /fi "memusage gt 40000"
  /S system指定要连接的远程系统/U [domain]user指定命令应在其下执行的用户上下文/P [password]指定给定用户上下文的密码。 提示输入,如果省略。/M [module]列出当前使用给定的exe / dll名称的所有任务。 如果未指定模块名称,则显示所有已加载的模块。/SVC显示每个进程中托管的服务。/V显示详细的任务信息。/FI filter显示一组符合过滤器指定条件的任务。/FO format指定输出格式。 有效值:TABLE,LIST,CSV。/NH指定“列标题”不应显示在输出中。 仅适用于TABLE和CSV格式。
:: 获取内存大于40MB的进程tasklist /fi "memusage gt 40000"

终止进程
START "title" [/D path] [options] "command" [parameters]
  /S system指定要连接的远程系统/U [domain]user指定命令应在其下执行的用户上下文。/P [password]指定给定用户上下文的密码。 提示输入,如果省略。/FI FilterName应用过滤器来选择一组任务,允许使用*通配符。/PID processID指定要终止的进程的PID。使用TaskList来获取PID。/IM ImageName指定要终止的进程的映像名称。 通配符*可用于指定所有任务或图像名称。/T终止指定的进程以及由其启动的任何子进程。/F指定强制终止进程。
:: 杀死(终止)打开的记事本任务taskkill /f /im notepad.exe:: 杀死了一个ID为9901的进程taskill /pid 9901

启动进程
START "title" [/D path] [options] "command" [parameters]
  titleCMD窗口标题栏的文本(必需)path起始目录。command命令,批处理文件或可执行程序运行。parameters传递给命令的参数

options:

  /MIN启动窗口最小化。/MAX启动窗口最大化。/LOW使用IDLE优先级。/NORMAL使用NORMAL优先级。/ABOVENORMAL使用ABOVENORMAL优先级。/BELOWNORMAL使用BELOWNORMAL优先级。/HIGH使用HIGH优先级。/REALTIME使用REALTIME优先级。
:: 在新窗口中运行批处理脚本test.bat。 窗口将以最小化模式启动,并且指定标题为:“Test Batch Script”。START "Test Batch Script" /Min test.bat:: 在另一个进程中运行Microsoft Word,然后在MS Word中打开文件TESTA.txtSTART "" "C:\Program Files\Microsoft Office\Winword.exe" "D:\test\TESTA.txt"

别名
dw=dir /w

当要执行dir /w命令时,可以简单地键入dw这个单词。dw这个词现在已经成为命令dir /w的别名。

doskey 别名管理
DOSKEY [options] [macroname=[text]]

创建
@echo offdoskey cd=cd/testdoskey d=dir

删除
@echo offdoskey cd=cd/testdoskey d=dird=

将d的值设置为NULL,所以宏d将被删除。

管道(|)

管道运算符(|)将一个命令的输出(默认为STDOUT)引导到另一个命令的输入(默认为STDIN)。

:: 两个命令同时启动,但是sort命令暂停,直到它接收到dir命令的输出。 :: sort命令使用dir命令的输出作为输入,然后将其输出发送到句柄1(即STDOUT)。dir C:\ | sort

到此这篇关于win10bat脚本制作的文章就介绍到这了,更多相关bat脚本Windows批处理内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!

  以上就是win10bat脚本制作的全部内容,如果你也遇到了同样的情况,请参考我的方法来处理,希望这对你们有所帮助。