常用命令

  • chcp 65001:首句添加,将bat脚本编码设置为UTF-8,避免中文乱码,参考:bat脚本中文乱码
  • pause>nul:用于暂停脚本的执行并等待用户按下任意键继续;
  • @echo off:禁止显示命令本身在执行时的输出,使得执行过程更加清晰;
  • rem:注释;
  • %变量名%:解析变量是将变量名替换为其当前值的过程,可以使用 %变量名% 的形式来引用变量
       @echo off
       set name=John
       echo Hello, %name%!
  • setlocal enabledelayedexpansion:启用延迟变量扩展:
    • 延迟变量扩展允许在 for 循环或其他块结构中动态地访问和修改变量,而不是在开始时固定变量的值,也就是说变量在执行时才会被解析,而不是脚本加载时。
    • 这允许在循环中使用 !var! 语法来读取变量的值,而不是 %var%
  • set /A expression:expression 是一个数学表达式,可以包含基本的算术运算符、逻辑运算符、位运算符以及括号,比如set /A var=5+3 将会把变量 var 设置为8;
  • for /L %variable in (start,step,end) do command:用于执行循环的命令,比如for /L %i in (1,1,10) do echo %i 将会从1循环到10,并在每次迭代时输出当前的值。

 

例子1:

@echo off
setlocal enabledelayedexpansion

set count=0

for /L %%i in (1,1,5) do (
    set /A count+=1
    set current=Item_!count!
    echo !current!
)

endlocal
pause >nul


# 输出:
Item_1
Item_2
Item_3
Item_4
Item_5

 

例子2:启动python

@echo off
REM 设置Python解释器的路径,根据你的安装路径进行修改
set PYTHON_PATH=C:\Users\hujie\AppData\Local\Programs\Python\Python38\python.exe

REM 检查Python解释器是否存在
if not exist "%PYTHON_PATH%" (
    echo Python解释器未找到,请检查路径是否正确。
    pause
    exit /b
)

REM 启动Python脚本
"%PYTHON_PATH%" script.py

REM 暂停以查看输出
pause

 

 

 

 

 

字符串分割

分工上,delims负责切分字符串,而tokens负责提取字符串。如果把字符串当作蛋糕,Delims像刀子,用来切蛋糕,tokens像叉子,用来取切好的蛋糕。

  • for /f 命令用于解析文本文件的行。
  • tokens 选项用于指定要从每行中提取的单词(或标记),关键字用于指定如何分割输入行
    • tokens=* 表示提取整行内容,不进行任何分割。
    • tokens=1 表示提取每行的第一个单词。
    • tokens=2 表示提取每行的第二个单词。
    • tokens=1,2 表示提取每行的第一、二个单词。
    • tokens=2*,表示将输入行分割成两部分:第一部分是第一个空格前的内容,第二部分是剩余的内容。
  • delims
    • 默认情况下,单纯使用delims而不用tokens时,只显示第一个分隔符前的内容,第一个分隔符和第一个分隔符后面的内容将被忽略;
    • delims=注意delims和=之间不能有空格;
    • delims=,表示使用默认的分隔符,通常是空格和制表符;
    • delims=、,表示使用空字符串作为分隔符,这意味着不会进行任何分割,整行文本将被视为一个标记;

 

chcp 65001
@echo off
for /f "tokens=1,3 delims=、-." %%i in (歌曲列表.txt) do echo %%i %%j
pause>nul


# 歌曲列表.txt
1、饶天亮-玫瑰爱人.wma
2、高一首-我不愿错过.mp3
3、黃凱芹-傷感的戀人.MP3
4、黄灿-黄玫瑰.lrc
5、黎姿-如此这般的爱情故事.mp3

 

 

 

Leave a Reply