Пакетные файлы Windows: установка переменной в цикле for

У меня есть несколько файлов с та же схема именования. В качестве примера четыре файла называются "num_001_001.txt", "num_002_001.txt", "num_002_002.txt", "num_002_003.txt"

Первый набор чисел представляет, какой " Я написал это, чтобы убедиться, что я действительно могу извлечь подстроку и условно создать каталог

@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

Что не так? Не поддерживает ли перспектива переназначение переменных на каждой итерации? Четыре файла находятся в моем каталоге, и один из них должен создать номер num_001. Я вставлял разные файлы с 003 004 005, и все это было именем последнего пакета. Я предполагаю, что что-то не так с тем, как я настраиваю вещи.

У меня есть разные обходные пути, чтобы выполнить работу, но я сбит с толку, почему такая простая концепция не работает.

25
задан MxLDevs 10 April 2011 в 23:40
поделиться