变量与延迟变量

延迟变量
enableextension启用命令扩展
disableextensions禁用命令扩展
enabledelayedexpansion启用变量延迟
disabledelayedexpansion禁用变量延迟
setlocal开始;endlocal结束
1、批处理为“逐条执行”,不是“逐行执行”,即复合句(for if)的代码块都是为“条“;
2、为什么要使用变量延迟?因为要让复合语句内部的变量实时感知到变量值的变化。
3、在哪些场合需要使用变量延迟语句?在复合语句内部,如果某个变量的值发生了改变,并且改变后的值需要在复合语句内部的其他地方被用到,那么,就需要使用变量延迟语句。而复合语句有:for语句、if……else语句、用连接符&、||和&&连接的语句、用管道符号|连接的语句,以及用括号括起来的、由多条语句组合而成的语句块。最常见的场合,则是for语句和if……else语句。 
4、怎样使用变量延迟?    (1) 使用 setlocal enabledelayedexpansion,将 % 对变量引用改为使用 !;  (2) 使用 call 语句:在原来命令的前部加上 call 命令,并把变量引用的单层 % 对改为双层 %%


ECHO 处于关闭状态
@echo off
set num=0&&echo %num%
pause  
改进-拆成两行
@echo off
set num=0
echo %num%
pause
改进-变量延迟
@echo off
setlocal enabledelayedexpansion
set num=0&&echo !num!
pause
改进-call
@echo off
set num=0 && call echo %%num%%
pause 






变量与扩展变量
@echo off
 
setlocal EnableDelayedExpansion
for /r %%i in (*.jsp) do (
 echo %%i
 echo %%~xi
 pause;
)
 
pause; 
%~I 展开删除了周围的任何引号 (") 的 %I 
%~fI 将 %I 展开到完全合格的路径名 
%~dI 只将 %I 展开到驱动器号 
%~pI 只将 %I 展开到路径 
%~nI 只将 %I 展开到文件名 
%~xI 只将 %I 展开到文件扩展名 
%~sI 展开路径以只包含短名称 
%~aI 将 %I 展开到文件的文件属性 
%~tI 将 %I 展开到文件的日期/时间 
%~zI 将 %I 展开到文件大小 
%~$PATH:I 搜索 PATH 环境变量所列出的目录
%~dpI 只将 %I 展开到驱动器号和路径 
%~nxI 只将 %I 展开到文件名和扩展名 
%~fsI 将 %I 展开到只包含短名称的完整路径名 
%~dp$PATH:I 在 PATH 环境变量所列出的目录中搜索 %I,并展开到第一个找到结果的驱动器号和路径 
%~ftzaI 将 %I 扩展到与 dir 相似的输出行 
Echo 删除引号:%~1 
Echo 扩充到路径:%~f1  
Echo 扩充到一个驱动器号:%~d1 
Echo 扩充到一个路径:%~p1 
Echo 扩充到一个文件名:%~n1 
Echo 扩充到一个文件名:%~n0 
Echo 扩充到一个文件扩展名:%~x1 
Echo 扩充的路径指含有短名:%~s1  
Echo 扩充到文件属性:%~a1  
Echo 扩充到文件的日期/时间:%~t1  
Echo 扩充到文件的大小:%~z1  
Echo 扩展到驱动器号和路径:%~dp1 
Echo 扩展到驱动器号和路径:%~dp0  
Echo 扩展到文件名和扩展名:%~nx1 
Echo 扩展到类似 DIR 的输出行:%~ftza1 
Echo.







http://blog.csdn.net/xxb2008


占位记录,还不是很清晰使用




@echo off
echo 产生一个临时文件 > tmp.txt
Rem 下行先保存当前目录,再将c:\\windows设为当前目录
pushd c:\\windows
call :sub tmp.txt
rem 下行恢复前次的当前目录
popd
call :sub tmp.txt
pause
del tmp.txt
exit
:sub
@echo off
echo 删除引号:%~1
echo 扩充到路径:%~f1
echo 扩充到一个驱动器号:%~d1
echo 扩充到一个路径:%~p1
echo 扩充到一个文件名:%~n1
echo 扩充到一个文件名:%~n0
echo 扩充到一个文件扩展名:%~x1
echo 扩充的路径指含有短名:%~s1
echo 扩充到文件属性:%~a1
echo 扩充到文件的日期/时间:%~t1
echo 扩充到文件的大小:%~z1
echo 扩展到驱动器号和路径:%~dp1
echo 扩展到驱动器号和路径:%~dp0
echo 扩展到文件名和扩展名:%~nx1
echo 扩展到类似 DIR 的输出行:%~ftza1
echo.
goto :eof
pause;

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值