我有一个批处理脚本试图执行anthill以获取包含plsql的文件夹名称进行编译。
for /F %%a in ('dir /b D:\AHP_WorkDir\var\jobs\projects\rprt_test\rprt_test\plsql') do (
set FOLDER=%%a
echo *** PROCESSING FOLDER %FOLDER% ***
)
这回声 *处理文件夹*
好像变量没有设置好,我很确定在花了太长时间验证它之后是真的
那么......我做错了什么?
答案 0 :(得分:24)
这基本上是question asked earlier today的副本。以下是我对这个问题的回答......
您需要查看批处理文件的EnableDelayedExpansion选项。从上述链接:
使用FOR循环时,延迟变量扩展通常很有用。通常,整个FOR循环被评估为单个命令,即使它跨越批处理脚本的多行。
所以你的脚本最终会看起来像这样:
@echo off
setlocal enabledelayedexpansion
for /F %%a in ('dir /b D:\AHP_WorkDir\var\jobs\projects\rprt_test\rprt_test\plsql') do (
set FOLDER=%%a
echo *** PROCESSING FOLDER !FOLDER! ***
)
作为替代方案,只需在内循环中使用%%a
变量,而不是创建新变量。