bat文件中批处理设置变量延迟的问题

在bat文件中想实现对变量的赋值和输出,发现设置的变量在后续使用中为空,代码如下:

@echo off
for %%i in (*) do (
set var=%%i
echo %var%
)

理论上,输出结果应为当前命令所在目录里的所有文件名,可实际的输出结果 却为

问题分析:
这涉及到批处理命令中的变量延迟扩展问题,详细请参考:https://blog.csdn.net/subkiller/article/details/7344509
解决方法:

@echo off
for %%i in (*) do (
setlocal enabledelayedexpansion//设置变量延迟扩展
set var=%%i
echo !var!//使用变量
)

输出结果为:

原文地址:http://blog.51cto.com/13402621/2155167

时间: 2024-10-05 05:44:29

bat文件中批处理设置变量延迟的问题的相关文章

关于Lumen / Laravel .env 文件中的环境变量是如何生效的

.env 文件包含默认环境变量,我们还可自定义其他任何有效的变量,并可通过  调用 env() 或 $_SERVER 或 $_ENV  来获取该变量.那么env()是如何加载到这些变量的呢?在Lumen的vendor/laravel/lumen-framework/src/helpers.php中,我们可以发现env函数是这样被定义的: if (! function_exists('env')) { /** * Gets the value of an environment variable.

spring将service添加事务管理,在applicationContext.xml文件中的设置

在applicationContext.xml文件中的设置为: 1 <beans> 2 <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> 3 <property name="dataSource" ref="dataSource"

window下批处理操作:bat文件中调用.bat和.exe文件

文件名test.bat rem 启动GTRManager.exe start cmd /k "D:\GTRManager_old\GTRECM\GTRManager.exe" ping 127.0.0.1 -n 10  rem 启动start.bat D: cd D:\v2r3c06spc100_spe_hutaf\HutafAgent start cmd /k "" call start.bat ping 127.0.0.1 -n 10  rem 启动agentW

如何在Ubuntu Scope中定义设置变量并读取

在本遍文章中,我们来讲解怎么对我们的Ubuntu Scope进行设置.对Scope而言,有些时候我们希望能够使用设置来改变我们的显示,或对我们的搜索进行重新定义.关于更多Scope的开发,请参阅网站:http://developer.ubuntu.com/scopes/ 1)首先创建一个最基本的Scope 我们首先打开SDK,并选择"Unity Scope"模版.我们选择一个项目的名称为"settingscope": 接下来,我们选择"Empty scop

yml 文件中使用环境变量

Spring Boot 中可以用 spring.profiles.active 参数来指定系统环境,让系统加载不同的配置文件. 可以在程序启动的时候加上参数来指定需要的配置 java -Dspring.profiles.active="dev" -jar user.jar 当然我们也可以事先设置好系统的环境变量 expoer SERVER_EVN=test 然后在 yml 文件中用 active: ${SERVER_EVN} 来动态的获取系统已设置好的数据.这样这台 test 服务器中

在BAT文件中实现对空格分割的字符串的处理

1.      Bat代码 @echo off REM 待处理的字符串 set str="AAA BBB CCC" :STR_VISTOR REM 看看每次循环后的值,便于理解 echo str = %str% REM FOR语句是按行进行遍历,也就是一行一次循环,对于我们来说,只有一行字符串, REM 这个FOR循环肯定只进入一次.而我们是要对字符串进行空格分割后再处理.因此这 REM 里用GOTO语句来实现循环.而FOR语句只需看成是一条语句,这条语句实现了这样的 REM 功能:将

BAT:文件中替换字符(保留空格和换行)

1 @echo off 2 rem CMD:"color --help" 3 :: setting color:back white,content blue 4 color f9 5 6 ::old string and replace string 7 set old_str=ip 8 set new_str=#ip 9 10 :FILE 11 set "souerce_path=D:\xxx\bat\my_test.txt" 12 for /f "t

bat文件中运行python脚本方法

在脚本中使用start命令: 1 @echo off 2 3 start python xxx.py 注: start命令:启动单独的“命令提示符”窗口来运行指定程序或命令.如果在没有参数的情况下使用,start 将打开第二个命令提示符窗口. 原文地址:https://www.cnblogs.com/xbook-ben/p/11713491.html

cocos2d-x 头文件中添加方法变量导致编译报错

代码如下: HelloWorldScene.h #ifndef __HELLOWORLD_SCENE_H__#define __HELLOWORLD_SCENE_H__ #include "cocos2d.h"class HelloWorld : public cocos2d::Layer{public:    // there's no 'id' in cpp, so we recommend returning the class instance pointer    stati