windows - 无法在 cmd 批处理中打印变量

标签 windows batch-file variables cmd environment

<分区>

我有以下批处理脚本

@echo off

setlocal

set TEST_DIR="E:/img"

:: for all png files in TEST_DIR
for /r "%TEST_DIR%" %%f in (*.png) do (

    :: print file full path
    echo TESTING %%f

    :: store the path into MY_VAR
    set MY_VAR=%%f

    :: print MY_VAR (always blank!?)
    echo TESTING %MY_VAR%

)

endlocal

MY_VAR 的打印总是空白。这是为什么?

如果img目录包含2个png文件: - img1.png - img2.png

然后这是控制台的输出:

E:\img>test.cmd
TESTING E:\img\img1.png
TESTING
TESTING E:\img\img2.png
TESTING

谢谢

最佳答案

我更正了脚本以使用延迟扩展。

@echo off

setlocal enableDelayedExpansion

set TEST_DIR="E:/img"

:: for all png files in TEST_DIR
for /r "%TEST_DIR%" %%f in (*.png) do (

    :: print file full path
    echo TESTING %%f

    :: store the path into MY_VAR
    set MY_VAR=%%f

    :: print MY_VAR
    echo TESTING !MY_VAR!

)


endlocal

现在输出是正确的。

E:\img>test.cmd
TESTING E:\img\img1.png
TESTING E:\img\img1.png
TESTING E:\img\img2.png
TESTING E:\img\img2.png

谢谢。

关于windows - 无法在 cmd 批处理中打印变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39906754/

相关文章:

java - 如何启动 Web 服务器并在完成后将浏览器指向它?

python - 从 Windows cmd 安装 Django 时遇到问题。 "pip install django"显示错误,尽管应设置 PATH

visual-studio - 在VS2008中运行批处理文件

powershell - "SFC"输出重定向格式化问题 - Powershell/Batch

javascript - 在 jQuery 中获取变量名

windows - 如何在 Windows 上从 "git gui"开始分离 "Git bash"?

windows - 为什么 gulp.watch 或 fs.watch 无法在 Windows 上 Ubuntu 上的 Bash 上运行?

batch-file - 如何有条件地在批处理文件中编写调用命令?

Python 脚本不更新变量

VBScript - 不知道为什么我的参数没有像变量一样使用