批处理脚本-延迟环境变量扩展

批处理(Batch)脚本,使用的是按行读取的预处理方式。在for循环中,do后边的空号中的内容是作为一行来处理的,所以在扩号里的赋值后输出操作中赋值是无效的,如果需要使赋值有效,需要启用变量延迟(全称延迟环境变量扩展),变量延迟中的变量不能使用%v%输出,需要使用!v!输出。

开启变量延迟的方式:setlocal enabledelayedexpansion

1.for循环例:

错误:

@echo off

for %%i in (*.txt) do (

set v=%%i

echo %v%

)

pause

输出:echo处于关闭状态

正确:

@echo off

setlocal enabledelayedexpansion

for %%i in (*.txt) do (

set v=%%i

echo !v!

)

pause

输出:xx.txt

2.体现预处理输出和期望值不符合的例子:

错误:

@echo off

set v=1

set v=2&echo %v%

pause

输出:1

正确:

@echo off

setlocal enabledelayedexpansion

set v=1

set v=2&echo !v!

pause

输出:2

原文地址:http://blog.51cto.com/zuohao1990/2131861

时间: 2024-10-03 18:54:18

批处理脚本-延迟环境变量扩展的相关文章

在批处理中判断延迟环境变量扩展是否已启用的方法

研究背景 由于特殊原因,有时我们需要在批处理中判断延迟环境变量扩展是否已启用,可以用下面的方法进行判断. 使用脚本 @echo off setlocal enabledelayedexpansion set layedexpansion=1&if not "!layedexpansion!"=="1" (echo 延迟环境变量扩展未启用) else echo 延迟环境变量扩展已启用 pause 原文地址:http://blog.51cto.com/condu

crontab中运行newLISP脚本的环境变量设置

今天遇到一个问题,在终端里运行newLISP脚本,一切正常,移动到crontab中就不行.即便crontab -e命令运行在同一个用户下,还是有问题. 由于newLISP脚本要用到hive和hadoop,估计是环境变量的问题.所以先用newLISP shell运行(env)命令,将当前环境变量记录到文件evn.lsp中. 然后在newLISP脚本中加载之. 下面是env.lsp文件部分内容: (set 'local-envs '(("LC_PAPER" "en_US.UTF-

ssh连接远程主机执行脚本的环境变量问题

用ssh命令ssh [email protected] "/web/tomcat-7000/bin/startup.sh" 登陆到远程机器remote上执行脚本时,遇到一个奇怪的问题:tomcat服务不能启动 Neither the JAVA_HOME nor the JRE_HOME environment variable is definedAt least one of these environment variable is needed to run this progr

关于CMD中延迟环境变量嵌套的实现方法

在我昨天做的一个bat中(自动按日期重命名文件名)涉及到这方面的问题 以前涉及到这里时就想别的办法替代过去,今天好好扒出来说说: 实现变量嵌套的2种方法: 1,使用call实现变量嵌套 变量嵌套:即在变量中嵌套变量,将变量的值作为另外一个变量的名字(或一部分名字) 这种用法很多语言都支持,如PHP的$$p,如C语言的**p二级指针,但在BAT中这是第一次涉及 如:(需要通过a输入10) set a=1&set b1=10 call,echo %%b%a%%% call 这里实际是对命令行进行重新

批处理,修改环境变量path的方法(加环境变量)

方法一:批处理中,修改环境变量,一次性有效(也就是在当前的脚本中有效) CMD中运行 set path==%path%;d:/mypath 用 set path可以查看,当前的环境变量 方法二 :批处理中,修改环境变量,永久有效 ::更改path环境变量值,新增e:\toolswmic ENVIRONMENT where "name='path' and username='<system>'" set VariableValue="%path%;e:\tools

采用.bat批处理命令设置环境变量

背景: java课程培训,每次到机房需要重新安装JDK,每次都采用图形界面进行操作比较麻烦(慢),于是在网上查了一下CMD命令设置系统环境变量的方法,再次记录下来. 设置方法: 1.找到JDK安装路径 在设置环境变量之前需要安装好JDK,安装好之后找到安装路径(图1),复制下安装路径. 图1 如图,我的JDK安装路径为 C:\Program Files\Java\jdk1.8.0_92 2.编写批处理命令 网上找了一些人家说的方法,发现存在一些问题,一是设置之后关闭控制台就失效,二是设置的环境变

使用批处理设置JDK环境变量(Win7可用)

欢迎探讨,如有错误敬请指正 如需转载,请注明出处http://www.cnblogs.com/nullzx/ 1. JDK环境的设置 一般情况下来说按照网上大多数的教程设置JDK的环境变量即可.但对于某些特殊的情况,比如实验室中安装了还原系统的计算机,上课时教室里供老师使用的计算机等等我们可能需要重复的操作.一般我将JDK放在U盘中,每次上课,开机后盘符可能发生变化,这样每次都设置一次环境变量就显得非常繁琐,对于重复的劳动,一定要交给计算机完成.在网上查阅相关资料后,加上一定的修改(源代码最后一

BAT 批处理脚本教程

第一章 批处理基础第一节 常用批处理内部命令简介 批处理定义:顾名思义,批处理文件是将一系列命令按一定的顺序集合为一个可执行的文本文件,其扩展名为BAT或者CMD.这些命令统称批处理命令.小知识:可以在键盘上按下Ctrl+C组合键来强行终止一个批处理的执行过程.了解了大概意思后,我们正式开始学习.先看一个简单的例子!@echo offecho "欢迎来到非常BAT!"pause把上面的3条命令保存为文件test.bat或者test.cmd然后执行,他就会在屏幕上显示以下二行话:欢迎来到

SSH登录远程主机执行脚本找不到环境变量

这是因为在Linux上,bash会有四种模式,根据不同的case,Linux会加载不同模式的bash.一般如果你自己直接登录主机,能看到环境变量,但是使用ssh 远程登录执行脚本就找不到环境变量,那么在你的脚本中修改脚本解释器为如下形式,就能解决你的问题: #!/bin/bash --login 如果想了解详细的bash的四种模式以及各种模式的特点,请参考下面这篇文章,分析的非常详细: SSH连接远程主机执行脚本的环境变量问题