我有许多具有相同命名方案的文件。作为示例,四个文件分别称为“num_001_001.txt”、“num_002_001.txt”、“num_002_002.txt”、“num_002_003.txt”
第一组数字代表它来自哪个“包”,第二组数字只是用来区分它们。因此,在此示例中,包 001 中有一个文件,包 002 中有 3 个文件。
我正在编写一个 Windows Vista 批处理命令来获取所有文件并将它们移动到它们自己的目录中,其中每个目录代表一个不同的包。所以我想将包 001 的所有文件移动到目录“001”中,将 002 的所有文件移动到目录“002”中
我已经成功编写了一个脚本,它将迭代所有 txt 文件并回显它们。我还编写了一份脚本,将一个文件移动到另一个位置,并创建目录(如果不存在)。
现在我认为我需要使用子字符串,因此我使用 %var:~start,end% 语法来获取它们。作为测试,我编写此代码是为了验证我实际上可以提取子字符串并有条件地创建目录
@echo off
set temp=num_001_001.txt
NOT IF exist %temp:~0,7%\
mkdir %temp:~0,7%
它有效。伟大的。
然后我添加了 for 循环。
@echo off
FOR /R %%X IN (*.txt) DO (
set temp=%%~nX
echo directory %temp:~0,7%
)
但这是我的输出:
directory num_002
directory num_002
directory num_002
directory num_002
怎么了? vista不支持在每次迭代中重新分配变量吗?
这四个文件位于我的目录中,其中之一应创建 num_001。我用 003 004 005 放入不同的文件,所有这些都是最后一个包的名称。我猜我的设置方式有问题。
我有不同的解决方法来完成工作,但我很困惑为什么这样一个简单的概念行不通。