我无法理解 DOS 批处理文件的变量替换机制,尤其是在 for 循环中。
简化批处理问题:想象如下目录
01foo.txt
02foo.dir(这是一个目录)
bar01(这是一个目录)
bar02(这是一个目录)
我想将此目录中不以“bar”开头的所有文件/目录移动到 bar+_the_first_2_characters_of_the_filename_or_directory_name 的子目录。
在这种情况下,01foo.txt 将被移动到 bar01,02foo.dir 将被移动到 bar02。
以下脚本是我的第一次尝试:
setlocal EnableDelayedExpansion
for %%A in (*) do (
set _x=%%A
if (!_x:~0,2! NEQ "bar") move %%A bar!_x:~0,2!
)
endlocal
除了这似乎只针对文件循环之外,它根本不起作用:-)。我在 if 语句中收到一个错误,说“3!此时出乎意料”
关于如何改善情况/脚本的任何想法?
谢谢