相关疑难解决方法(0)

set语句似乎不适用于我的批处理文件

我发现这里似乎是对我问题的解释

DOS批处理:为什么我的set命令导致什么都没有存储?

但我真的不明白这个解释.

这是我的剧本......

for /R /d  %%f in (\Product\Database\SQL\Project\Model\Scripts\*) DO (

REM echo %%f
SET !LOAD_FILE_FILTER= %%f\*.sql
echo file: %!LOAD_FILE_FILTER%
CALL %!BATCH_FILE% -u %!USER_NAME% -p %!PASSWORD% -s %!SERVER_NAME% -d %!DATABASE_NAME% -f %!LOAD_FILE_FILTER% -o %!LOG_FILE%
IF %!EchoErrors%==1 (
    ECHO [
    TYPE %!LOG_FILE%
    ECHO ]
)
Run Code Online (Sandbox Code Playgroud)

)

echo始终打印文件:*.sql,我传递此var的脚本总是抱怨LOAD_FILE_FILTER为空.

我尝试setlocal EnableDelayedExpansion按照文章中的建议添加,但它没有解决问题.将echo file: %!LOAD_FILE_FILTER%始终打印在我运行的目录中的最后一个子目录.将echo %%f始终打印正确的值.

什么是'!' 变量背后为我做什么?

另外,有人可以向我解释两者之间的区别

SET!VAR和SET VAR

%VAR &&!VAR&!VAR!%% VAR

batch-file set

0
推荐指数
1
解决办法
1620
查看次数

标签 统计

batch-file ×1

set ×1