![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-07 17:14 |
共 48,041 主题排行 / 350,128 发帖 / 今日 3 篇 / 48,252 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 系统变量 |
| 可打印版本 831 / 2 |
| 第1楼 loser | 发表于 2008-03-08 12:05 |
| 新手上路 发帖 1 积分 4 | |
|
系统变量 系统变量2008-03-07 17:12可用set命令查看和设置有关系统变量的值。
变量 类型 描述 %ALLUSERSPROFILE% 本地 返回“所有用户”配置文件的位置。 %APPDATA% 本地 返回默认情况下应用程序存储数据的位置。 %CD% 本地 返回当前目录字符串。 %CMDCMDLINE% 本地 返回用来启动当前的 Cmd.exe 的准确命令行。 %CMDEXTVERSION% 系统 返回当前的“命令处理程序扩展”的版本号。 %COMPUTERNAME% 系统 返回计算机的名称。 %COMSPEC% 系统 返回命令行解释器可执行程序的准确路径。 %DATE% 系统 返回当前日期。使用与 date /t 命令相同的格式。由 Cmd.exe 生成。有关 date 命令的详细信息,请参阅 Date。 %ERRORLEVEL% 系统 返回上一条命令的错误代码。通常用非零值表示错误。 %HOMEDRIVE% 系统 返回连接到用户主目录的本地工作站驱动器号。基于主目录值而设置。用户主目录是在“本地用户和组”中指定的。 %HOMEPATH% 系统 返回用户主目录的完整路径。基于主目录值而设置。用户主目录是在“本地用户和组”中指定的。 %HOMESHARE% 系统 返回用户的共享主目录的网络路径。基于主目录值而设置。用户主目录是在“本地用户和组”中指定的。 %LOGONSERVER% 本地 返回验证当前登录会话的域控制器的名称。 %NUMBER_OF_PROCESSORS% 系统 指定安装在计算机上的处理器的数目。 %OS% 系统 返回操作系统名称。Windows 2000 显示其操作系统为 Windows_NT。 %PATH% 系统 指定可执行文件的搜索路径。 %PATHEXT% 系统 返回操作系统认为可执行的文件扩展名的列表。 %PROCESSOR_ARCHITECTURE% 系统 返回处理器的芯片体系结构。值:x86 或 IA64(基于 Itanium)。 %PROCESSOR_IDENTFIER% 系统 返回处理器说明。 %PROCESSOR_LEVEL% 系统 返回计算机上安装的处理器的型号。 %PROCESSOR_REVISION% 系统 返回处理器的版本号。 %PROMPT% 本地 返回当前解释程序的命令提示符设置。由 Cmd.exe 生成。 %RANDOM% 系统 返回 0 到 32767 之间的任意十进制数字。由 Cmd.exe 生成。 %SYSTEMDRIVE% 系统 返回包含 Windows server operating system 根目录(即系统根目录)的驱动器。 %SYSTEMROOT% 系统 返回 Windows server operating system 根目录的位置。 %TEMP% 和 %TMP% 系统和用户 返回对当前登录用户可用的应用程序所使用的默认临时目录。有些应用程序需要 TEMP,而其他应用程序则需要 TMP。 %TIME% 系统 返回当前时间。使用与 time /t 命令相同的格式。由 Cmd.exe 生成。有关 time 命令的详细信息,请参阅 Time。 %USERDOMAIN% 本地 返回包含用户帐户的域的名称。 %USERNAME% 本地 返回当前登录的用户的名称。 %USERPROFILE% 本地 返回当前用户的配置文件的位置。 %WINDIR% 系统 返回操作系统目录的位置。 ALLUSERSPROFILE=H:\Documents and Settings\All Users //所有用户的PROFILE路径 APPDATA=H:\Documents and Settings\Administrator\Application Data //当前用户的应用程序路径 ClusterLog=H:\WINDOWS\Cluster\cluster.log //集群日志路径 CommonProgramFiles=H:\Program Files\Common Files //应用程序公用的文件路径 COMPUTERNAME=E2003 //计算机名称 ComSpec=H:\WINDOWS\system32\cmd.exe //当前的命令解释器 HOMEDRIVE=H: //当前用户的主盘 HOMEPATH=\Documents and Settings\Administrator //当前用户的主目录 LOGONSERVER=\E2003 //登录的服务器 NUMBER_O_PROCESSORS=1 //当前计算机的处理器数字 OS=Windows_NT //当前系统的内核 Path=H:\Program Files\Support Tools\;H:\WINDOWS\system32; //学过DOS的都知道 PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH //以前DOS下默认的是COM,EXE,BAT,现在已经有这么多了哟,以前都不知道,脚本都可以不打扩展名了 PROCESSOR_ARCHITECTURE=x86 //处理器架构 PROCESSOR_IDENTIFIER=x86 Family 15 Model 1 Stepping 3, GenuineIntel //处理器标识符 PROCESSOR_LEVEL=15 //没注意过,不知道有什么用 PROCESSOR_REVISION=0103 //版本? ProgramFiles=H:\Program Files //应用程序的默认安装目录 PROMPT=$P$G //学过DOS的都知道 SESSIONNAME=Console //会话名称? SystemDrive=H: //系统所在的盘符 SystemRoot=H:\WINDOWS //系统所在的目录 TEMP=H:\DOCUME~1\ADMINI~1\LOCALS~1\Temp //当前用户的临时目录 TMP=H:\DOCUME~1\ADMINI~1\LOCALS~1\Temp //同上 USERDNSDOMAIN=MCSE.COM //当前用户所在的域的DNS表示 USERDOMAIN=MCSE //NETBIOS表示 USERNAME=administrator //当前用户名 USERPROFILE=H:\Documents and Settings\Administrator //当前用户的配置文件目录 windir=H:\WINDOWS //windows所在的目录,总是跟systemroot一样 @echo off set str=123456789 echo 第一个字符为:%str:~0,1% echo 头两个字符为:%str:~0,2% echo 头5个字符为:%str:~0,5% echo 去掉最后一个字符后的字符串为:%str:~0,-1% echo 去掉最后3个字符后的字符串为:%str:~0,-3% echo 第4个字符为:%str:~3,1% echo 第4个及其之后的3个字符为:%str:~3,4% echo 最后一个字符为:%str:~-1% echo 最后一个字符为:%str:~-1,1% echo 最后一个字符为:%str:~-1,2% echo 倒数第4个字符为:%str:~-4,1% echo 倒数第4个及其之后的字符为:%str:~-4% echo 倒数第4个及其之后的1个字符为:%str:~-4,2% echo 倒数第4个及其之后的2个字符为:%str:~-4,3% pause 为了说明这个问题,我在这里把批处理取字符,做下进一步的解释,希望对新手有所启发 如下: echo %var:~n,k% 我们在这里对每个参数做个说明:"%var",即我们要从中要截取字符的字符串." ~ "取字 符标志符(我是这么理解的),"n" 我们将其理解为指针,"k"我们将其理解为偏移地址.(注 :指针和偏移地址都是从零开始数的) 我们还是用namejm版主的例子做下说明: @echo off set str=123456789 rem 定义一个str字符串为123456789 echo 第一个字符为:%str:~0,1% rem 指针为0,偏移地址为1,即从第0位开始,取1位 echo 头两个字符为:%str:~0,2% rem 指针为0,偏移地址为2,即从第0位开始,取2位 echo 头5个字符为:%str:~0,5% rem 指针为0,偏移地址为5,即从第0位开始,取5位 echo 去掉最后一个字符后的字符串为:%str:~0,-1% rem 当"k"为负值时,我们可以这样理解:从指针开始处开始取其后面所有字符,然后减去 后面"abs(k)位"..所以这个句字我们可以做如下解释:从第0位开始取其全部字符 为:123456789然后从后面减去abs(k)位,所以最后结果为:12345678 echo 去掉最后3个字符后的字符串为:%str:~0,-3% rem 该句解释同上↑ echo 最后一个字符为:%str:~-1% rem 参数"n,"和"k"都可以为缺省,缺省"n,"时可以理解为:从abs(k)位开始取其全部 echo 倒数第4个及其之后的字符为:%str:~-4% rem 解释同上↑ echo 最后一个字符为:%str:~-1,1% rem n为负值时,表示从后面开始截取字符,取k位(此时n应从1开始数) echo 最后一个字符为:%str:~-1,2% rem 解释同上↑ echo 倒数第4个字符为:%str:~-4,1% rem 解释同上↑ echo 倒数第4个及其之后的1个字符为:%str:~-4,2% rem 解释同上↑ echo 倒数第4个及其之后的2个字符为:%str:~-4,3% rem 解释同上↑ pause 生成1到100之间的随机数 %random:~-2% set /a RandomNumber=%random%%%100+1 ::100是范围数,1是底数即开始的数.(在bat 中使用),在CMD中会出错. ::取随机两位数 set /a d=%random:~0,2% echo %d% ::避免00 set /a e=1%random:~0,2%-100 echo %e%@echo off :loop set /a RandomNumber=1%random:~-1%%random:~-1%-99 ::最大值100 if %RandomNumber% LSS 35 goto loop ::小于35返回 if %RandomNumber% GTR 75 goto loop ::大于75返回 echo %RandomNumber% if "%RandomNumber%" == "50" pause goto loop随机获取文件名: @echo off if "%1" NEQ "$" ( for /f "tokens=1,2 delims=:" %%a in ('"%~0" $^|sort') do @echo %%b ) else for /f "delims=" %%i in ('dir /b /a-d *.mp3') do @call :sub %%i goto :EOF:sub echo %random%:%* goto :EOF 在一个文本中随机取一行数据 @ECHO %DBG% OFF SETLOCAL ENABLEDELAYEDEXPANSION FOR /F "TOKENS=*" %%i IN (TEST.TXT) DO (SET /A h+=1 & SET r!h!=%%i) SET /A s=%RANDOM%%%%h%+1 ECHO !r%s%! 另外,一定要先set /a才行,不然会输出一些奇怪的数字。另外,也可以不加底数,%random%%%20也是可以的。 echo off & setlocal enabledelayedexpansion echo 输入二个数字 set /p a=输入起始数字: set /p b=输入最终数字: for /l %%i in (%a% 1 %b%) do set xianshi=%%i & echo (!xianshi!) pause |
|
| 第2楼 HAT | 发表于 2008-03-09 21:42 |
| 版主 发帖 5,017 积分 9,023 | |
|
楼主的收藏挺丰富的,呵呵。
|
|
| 第3楼 suntb | 发表于 2008-03-09 21:58 |
| 高级用户 发帖 277 积分 581 | |
|
这个倒是挺全的 看看
|
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |