2015-08-27 2 views
0

Я пытаюсь написать пакетный файл для упорядочивания файлов в серии папок. Текущий макет - это несколько папок с числовыми именами от '-12.60' до '-7.60'. В каждой из этих папок есть серия изображений, пронумерованных численно от «00000.tiff» до «0006.tiff»Вложенная петля в .bat-файле

Я запускаю следующий код, но, похоже, работает с ошибкой и не может найти решение для Это. Любая помощь будет оценена

for /L %%di IN (1,1,7) DO (
mkdir C:\Users\manu\Documents\ReOrdered_stacks\t%%di 
for /L %%cm IN (7,1,12) DO (
    for /L %%mm IN (20,20,80) DO(
    rename "C:\Users\manu\Desktop\2015.07.24 11-57_r\Stack\Phase\%%cm.%%mm\0000%%di.tiff" %%cm.%%mm.tiff 
    copy "C:\Users\manu\Desktop\2015.07.24 11-57_r\Stack\Phase\%%cm.%%mm\%%cm.%%mm.tiff" C:\Users\manu\Documents\ReOrdered_stacks\t%%di\ 
) 
) 
) 
+0

Ошибка? Какая ошибка? Какая строка затронута? –

+0

Дело в том, что я новичок в пакетных файлах. Я предполагаю, что есть ошибка, но окно cmd закрывается, прежде чем что-либо можно будет прочитать. Все, что я могу понять на этом этапе, состоит в том, что цикл не работает, потому что файлы не копируются. –

+0

Затем запустите командную строку и запустите пакетный файл. –

ответ

1
  1. переменные цикла может иметь только один символ
  2. Скобки должны предшествовать пробел: do (
  3. Запуск пакетного файла из внутри командной строки консоли с, чтобы увидеть синтаксис ошибки

for /L %%d IN (1,1,7) DO (
    mkdir C:\Users\manu\Documents\ReOrdered_stacks\t%%d 
    for /L %%c IN (7,1,12) DO (
     for /L %%m IN (20,20,80) DO (
      rename "C:\Users\manu\Desktop\2015.07.24 11-57_r\Stack\Phase\%%c.%%m\0000%%d.tiff" %%c.%%m.tiff 
      copy "C:\Users\manu\Desktop\2015.07.24 11-57_r\Stack\Phase\%%c.%%m\%%c.%%m.tiff" C:\Users\manu\Documents\ReOrdered_stacks\t%%d\ 
     ) 
    ) 
) 

См. SS64.com для получения дополнительной информации о синтаксисе.

+0

Спасибо! Я все еще нелюбив, так что вы, ребята, огромная помощь! –

Смежные вопросы