0

好吧,我有一个奇怪的脚本评论,我不确定出了什么问题。我的脚本只是假设从一个文件夹中移动所有文件并显示它们的名称(不带扩展名)。但问题是它总是显示前一个文件的名称。

例如,我将文件 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%
    )    
)

和输出:

1 个 fichier(s) déplace(s)。x:\test3.txt x:\test3.txt x:\test3.txt "TEST" test123

test123 是以前的文件。为什么集合在显示之前不修改变量?

4

1 回答 1

0

在这里找到解释http://www.robvanderwoude.com/variableexpansion.php。似乎这一切都被解释为如果整个 for 行都写在同一行上,因此您必须手动延迟变量以设置它们并在 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!
)

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

于 2013-06-25T15:45:08.677 回答