简要说明如何使用批处理中的变量

来源:互联网 发布:大数据时代 txt 完整版 编辑:程序博客网 时间:2024/05/16 00:54

有时候windows的批处理能带来很方便的操作,批处理也有变量声明,下面一段就是说的如何使用批处理中的变量。
set 功能一览

[设置变量]
格式:set 变量名=变量值
详细:被设定的变量以%变量名%引用

[取消变量]
格式:set 变量名=
详细:取消后的变量若被引用%变量名%将为空

[展示变量]
格式:set 变量名
详细:展示以变量名开头的所有变量的值

[列出所有可用的变量]
格式:set

[计算器]
格式:set  /a 表达式
示例:set /a 1+2*3  输出 7

[设置变量为表达式计算后的值]
set a=1+2
echo %a% ==>输出1+2
————————————
set /a a=1+2
echo %a% ==>输出3

[设置变量为用户输入的值]
set /p a=输入一个值 ==>输出 输入一个值
echo %a% ==>显示用户输入的值
预定义的变量

下面是些已经被底层定义好可以直接使用的变量:不会出现在 SET 显示的变量列表中
%CD% – 扩展到当前目录字符串。
%DATE% – 用跟 DATE 命令同样的格式扩展到当前日期。
%TIME% – 用跟 TIME 命令同样的格式扩展到当前时间。
%RANDOM% – 扩展到 0 和 32767 之间的任意十进制数字。
%ERRORLEVEL% – 扩展到当前 ERRORLEVEL 数值。
%CMDEXTVERSION% – 扩展到当前命令处理器扩展名版本号。
%CMDCMDLINE% – 扩展到调用命令处理器的原始命令行。
%0 bat的完整路径名如”C:\Windows\system32\xxx.bat”
%1 bat参数1依次类推%2参数2…
%path% – 当前的环境变量。以分号隔开的路径列表,路径可包含空格,可以以’\'结尾, 可以以双引号包围之。
扩展变量

@ 与%i相关的变量(bat参数或者for循环的%i)
假设文件为C:\Documents and Settings\jinsun\桌面\ParseSinglePkgs.bat
%0        C:\Documents and Settings\jinsun\桌面\ParseSinglePkgs.bat
%~dp0  C:\Documents and Settings\jinsun\桌面\
%cd%   C:\Documents and Settings\jinsun\桌面
%~nx0   ParseSinglePkgs.bat
%~n0     ParseSinglePkgs
%~x0     .bat

@ 与%VAR%相关的变量
%VAR:str1=str2%   会将VAR中的str1替换为str2(str2如果为空则可以达到删除的效果,str1前可以加*,变量%ABC:*B=%是C)
%VAR:~0,-2%          会提取VAR 变量的所有字符,除了最后两个
%VAR:~2%              会提取VAR 变量的除前两个的所有字符
%VAR:~-2%             会提取VAR 变量的最后两个
%VAR:~2,5%           提取从第2个字符开始的5个字符

这篇文章看完了就懂了“%date:~0,4%%date:~5,2%%date:~8,2%.sql”是什么意思了。

sample:

要利用计划任务和mysqldump实现自动备份mysql,

于是写了下面这个bat文件,
@echo off
F:\wwwroot\APMServ5.2.6\MySQL5.1\bin\mysqldump.exe -u root -p 111111 hsjk120>F:\wwwroot\APMServ5.2.6\MySQL5.1\bin\%date:~0,4%%date:~5,2%%date:~8,2%.sql
但是执行的时候总是提示Enter password: 这样就失去自动备份的意义了。
后来发现-p 参数比较特殊,正确语法是 -ppassword,即-p和密码中间不能有空格,于是就修改成
@echo off
F:\wwwroot\APMServ5.2.6\MySQL5.1\bin\mysqldump.exe -u root -p111111 hsjk120>F:\wwwroot\APMServ5.2.6\MySQL5.1\bin\%date:~0,4%%date:~5,2%%date:~8,2%.sql
这样就直接备份不再提醒输入密码了。

下面这段是批处理,生成以当天日期为文件名的sql文件
%date:~0,4%%date:~5,2%%date:~8,2%.sql

 

=============================华丽分割线===============================

                     变量                                   类型                          描述 
%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%                                   系统                                      返回操作系统目录的位置。
原创粉丝点击