24 / 23 / 6
Регистрация: 18.08.2013
Сообщений: 637
|
||||||
1 | ||||||
Команды в цикле выполняются на один раз больше положенного числа раз22.06.2016, 19:12. Показов 2360. Ответов 9
Метки нет (Все метки)
Есть следующий скрипт:
0
|
22.06.2016, 19:12 | |
Ответы с готовыми решениями:
9
Вывести числа, которые встречаются в массиве несколько раз / один раз Функция в цикле срабатывает один раз Как распечатать в цикле один раз? Как сделать вывод в цикле один раз? |
3460 / 1998 / 635
Регистрация: 26.02.2014
Сообщений: 1,457
|
||||||
22.06.2016, 20:44 | 3 | |||||
Сообщение было отмечено ComSpec как решение
Решение
При использовании конструкций типа
пакетный файл будет всегда переименовывать (или, по крайней мере, пытаться переименовывать) уже переименованный файл.
Поэтому количество обрабатываемых файлов необходимо зафиксировать на момент начала их обработки (переименования) с помощью конструкции
0
|
Любознательный
5668 / 1683 / 314
Регистрация: 10.03.2016
Сообщений: 3,824
|
||||||
22.06.2016, 21:00 | 4 | |||||
Хмм, как это воспроизвести? Попытался упростить немного:
В папке 4 файла
0
|
3460 / 1998 / 635
Регистрация: 26.02.2014
Сообщений: 1,457
|
||||||
22.06.2016, 21:32 | 5 | |||||
Вот так... Файлы: 1.txt , 11.txt , 111.txt , 1111.txt .Код:
Результат:
1
|
24 / 23 / 6
Регистрация: 18.08.2013
Сообщений: 637
|
||||||
22.06.2016, 21:51 [ТС] | 6 | |||||
Проверил на трех файлах amr. В результате один файл переименовывается два раза.
Добавлено через 3 минуты Скажите пожалуйста, а это только при переименовании или при других операциях тоже? Просто использовал след. скрипт:
Добавлено через 6 минут Спасибо огромное! Исправил свой цикл на Ваш и все стало на свои места.
0
|
3460 / 1998 / 635
Регистрация: 26.02.2014
Сообщений: 1,457
|
|
22.06.2016, 21:55 | 7 |
Сообщение было отмечено ComSpec как решение
РешениеЭто может происходить только при переименовании и при операциях, в результате которых в каталог с обрабатываемыми файлами добавляются новые файлы, соответствующие заданной маске. Для приведённой Вами операции этот "эффект" не будет иметь место.
0
|
24 / 23 / 6
Регистрация: 18.08.2013
Сообщений: 637
|
|
22.06.2016, 22:01 [ТС] | 8 |
А можно ли сделать так, чтобы учитывались только файлы *.amr, у которых, к примеру, первый символ не А? Просто предположим ситуацию, когда в одной папке есть "переименованные" и "непереименованные" файлы. Нужно, чтоб цикл их фильтровал. Можно ли это сделать, используя dir или нужно добавлять IF в тело цикла?
P.S. Чем кавычки "" отличаются от апострофов '' в for /F ?
0
|
Любознательный
5668 / 1683 / 314
Регистрация: 10.03.2016
Сообщений: 3,824
|
||||||
22.06.2016, 22:11 | 9 | |||||
Понятно, спасибо.
Что интересно, при переименовании, если в имени целевого файла (в любом месте имени) присутствует %%-переменная цикла, то число проходов соответствует числу файлов, а если имя не содержит переменную, тогда число проходов n+1 ... Записать бы куда-нибудь эту особенность, чтобы не забылось со временем... как говорится: чудны дела твои, микрософт Добавлено через 6 минут
0
|
3460 / 1998 / 635
Регистрация: 26.02.2014
Сообщений: 1,457
|
||||||
22.06.2016, 22:13 | 10 | |||||
Сообщение было отмечено ComSpec как решение
РешениеМожно:
Двойные кавычки используются в такой конструкции для обработки заключённых в них строк, а одинарные — для обработки вывода результата выполнения заключённых в них команд.
0
|
22.06.2016, 22:13 | |
22.06.2016, 22:13 | |
Помогаю со студенческими работами здесь
10
Как в цикле можно выполнить действие один раз? В цикле почему-то проходит по условию только один раз Как в цикле выполнить определенное действие один раз? вывожу комментарии в цикле Но почемута первый коммент в 5 раз больше по высоте остальных! Окно появилось один раз и больше не появлялось В вечнообновляемом цикле сделать операцию, которая выполнится только один раз за нажатие Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |