欢迎各位兄弟 发布技术文章
这里的技术是共享的
在DOS(Disk Operating System)环境中,常用的变量主要包括环境变量和批处理脚本中的变量。以下是详细的分类和说明:
这些是DOS/Windows预定义的全局变量,可直接在命令行或批处理脚本中使用:
| 变量名 | 说明 |
|---|---|
%PATH% | 系统可执行文件的搜索路径列表。 |
%TEMP% | 当前用户的临时文件夹路径(如 C:\Users\用户名\AppData\Local\Temp)。 |
%SystemRoot% | Windows系统目录(通常为 C:\Windows)。 |
%USERPROFILE% | 当前用户的主目录(如 C:\Users\用户名)。 |
%COMSPEC% | 命令行解释器的路径(通常为 cmd.exe)。 |
%DATE% | 当前日期(格式取决于系统区域设置,如 2024-05-20)。 |
%TIME% | 当前时间(格式如 14:30:45.00)。 |
%ERRORLEVEL% | 上一条命令的退出代码( 。“上一条命令的返回结果” 或 “程序执行状态码”。 Error Level ,翻译成 中文 "错误级别" |
定义变量:
batset var_name=value
例如:
batset name=John set count=10
引用变量:
使用 %var_name%(如 echo %name%)。
%0:当前脚本文件名。
%1 到 %9:传递给脚本的第1到第9个参数。
%*:所有参数的集合。
示例:
batecho 第一个参数是: %1 echo 所有参数: %*
%CD%:当前目录路径。
%~dp0:脚本所在目录的完整路径(常用于定位脚本资源)。
%RANDOM%:生成一个随机数(0-32767)。
使用 %%x(在批处理中)或 %x(命令行直接使用):
batfor %%x in (*.txt) do echo 文件: %%x
!var!)解决变量在代码块(如if、for)中实时更新的问题:
batsetlocal enabledelayedexpansion set num=0 for /l %%i in (1,1,5) do ( set /a num+=1 echo 当前值: !num! )
截取子串:
batset str=HelloWorld echo 前5个字符: %str:~0,5% # 输出 "Hello"
替换字符串:
batset str=abc-def echo 替换后: %str:-=% # 输出 "abcdef"(删除减号)
batset /a result=10 + 5 # 输出15 set /a count+=1 # 自增1
在命令行中输入以下命令查看全部变量:
batset
掌握这些变量能高效编写DOS批处理脚本或调试系统问题。根据需要选择全局变量或局部变量,并注意延迟扩展的使用场景。