常用命令
- 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