批量变量更新

时间:2013-06-25 15:24:44

标签: batch-file

好吧,我有一个奇怪的脚本版本,我不知道出了什么问题。我的脚本只是想从文件夹中移动所有文件并显示其名称(不带扩展名)。但问题是它总是显示以前文件的名称。

例如我把文件test2.txt放在文件夹中,运行脚本,把test1.txt,运行脚本,它会给我test2作为答案。

这是我的剧本:

@echo off

for /r %%i in (*); do (

    MOVE /Y "%%i" C:\THEPATH 
    echo %%i

    For %%A in (%%i) do (
        echo %%A
        echo %%i
        set Name=%%~nA
        echo "TEST"
        echo %Name%
    )    
)

和ouput:

1 fichier(s)déplacé(s)。 X:\ test3.txt X:\ test3.txt X:\ test3.txt “测试” test123

test123是上一个文件。为什么设备不会修改变量而是显示它?

1 个答案:

答案 0 :(得分:0)

在此处找到解释http://www.robvanderwoude.com/variableexpansion.php。似乎所有这些都被解释为如果整行for line写在同一行上,所以你必须手动延迟变量来设置它们并在FOR中使用它们......这就是我做的方式:

@echo off

SETLOCAL ENABLEDELAYEDEXPANSION

for /r %%i in (*); do (

    MOVE /Y "%%i" C:\Users\xlaportf\Desktop\Updater\dist; 
    echo %%i 

    For %%A in ("%%i") do (       
        set Name=%%~nA      
    ) 

    echo !Name!
)

回答我自己的问题似乎无论如何对某人有用!