好吧,我有一个奇怪的脚本版本,我不知道出了什么问题。我的脚本只是想从文件夹中移动所有文件并显示其名称(不带扩展名)。但问题是它总是显示以前文件的名称。
例如我把文件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是上一个文件。为什么设备不会修改变量而是显示它?
答案 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!
)
回答我自己的问题似乎无论如何对某人有用!