CMD/BAT - переменная меняется внутри цикла for, последовательно принимая значения имен файлов
-
islily
CMD/BAT - переменная меняется внутри цикла for, последовательно принимая значения имен файлов
cd E:\log
setlocal enabledelayedexpansion
set list=
for %%i in (*) do set list=!list! %%i
echo %list%
set list >>E:\1.txt
а вот уже set aa=%list:~0,1%
не работает
setlocal enabledelayedexpansion
set list=
for %%i in (*) do set list=!list! %%i
echo %list%
set list >>E:\1.txt
а вот уже set aa=%list:~0,1%
не работает
-
islily
Re: CMD/BAT - переменная меняется внутри цикла for, последовательно принимая значения имен файлов
islily, приведите полный код, поскольку непонятно, в каком месте кода
Цитата islily:
set aa=%list:~0,1%
не работает
.
Цитата islily:
set aa=%list:~0,1%
не работает
CMD/BAT - переменная меняется внутри цикла for, последовательно принимая значения имен файлов
.
-
islily
Re: CMD/BAT - переменная меняется внутри цикла for, последовательно принимая значения имен файлов
Цитата islily:
а вот уже set aa=%list:~0,1%
не работает
Делайте аналогично:
Код:
Либо обходным путём:
Код:
Update:[/i] и, да — присоединюсь к коллеге Georgio: приводите полный код.
а вот уже set aa=%list:~0,1%
не работает
CMD/BAT - переменная меняется внутри цикла for, последовательно принимая значения имен файлов
Делайте аналогично:
Код:
Код: Выделить всё
set aa=!list:~0,1!Либо обходным путём:
Код:
Код: Выделить всё
call set aa=%%list:~0,1%%Update:[/i] и, да — присоединюсь к коллеге Georgio: приводите полный код.
-
Iska
Re: CMD/BAT - переменная меняется внутри цикла for, последовательно принимая значения имен файлов
Цитата Georgio:
Iska, если внутри цикла, то сработают только конструкции с удвоенными знаками процента:
Код: Выделить весь код
call set aa=%%list:~0,1%%
и аналогичные ей.
Угу. Это я описался. Спасибо, что заметили, поправил.
Iska, если внутри цикла, то сработают только конструкции с удвоенными знаками процента:
Код: Выделить весь код
call set aa=%%list:~0,1%%
и аналогичные ей.
»
Угу. Это я описался. Спасибо, что заметили, поправил.
-
Iska
Re: CMD/BAT - переменная меняется внутри цикла for, последовательно принимая значения имен файлов
Iska, я тоже поправил...
-
Georgio
Re: CMD/BAT - переменная меняется внутри цикла for, последовательно принимая значения имен файлов
Iska, я тоже поправил...
-
islily
Re: CMD/BAT - переменная меняется внутри цикла for, последовательно принимая значения имен файлов
Iska, Georgio, выше написала на каком этапе я не могу продолжить написание батника
Решение будет состоять из 3х батников, 1.bat определяет каким днем должны быть-> от сегодняшнего - 3 дня и от сегодняшнего - месяц -3дня, 2.bat должен работать с папкой с логами, определить что архивировать, как архивировать и куда. 3.bat должен просто выполнить первые 2 батника и удалить txt кот создавались ими (не обяз-но).
Решение будет состоять из 3х батников, 1.bat определяет каким днем должны быть-> от сегодняшнего - 3 дня и от сегодняшнего - месяц -3дня, 2.bat должен работать с папкой с логами, определить что архивировать, как архивировать и куда. 3.bat должен просто выполнить первые 2 батника и удалить txt кот создавались ими (не обяз-но).
-
Georgio
Re: CMD/BAT - переменная меняется внутри цикла for, последовательно принимая значения имен файлов
islily, а что Вы хотите получить с помощью "1.bat" и "2.bat"?
Приведите желаемые результаты в том же виде, в каком Вы их хотите видеть по завершении работы этих пакетных файлов (то есть желаемое содержимое файла "1.txt" в обоих случаях).
Приведите желаемые результаты в том же виде, в каком Вы их хотите видеть по завершении работы этих пакетных файлов (то есть желаемое содержимое файла "1.txt" в обоих случаях).
-
Georgio
Re: CMD/BAT - переменная меняется внутри цикла for, последовательно принимая значения имен файлов
Georgio, чтобы понять каков результат должен быть, нужно прочитать задание, кот я прикрепила
1.txt я для самопроверки сделала.
1.bat я его сделала до конца, там он определяет с каким днем нужно сравнивать лог файлы в папке в зависимости от сегодняшнего дня %date%. Сравнение идет по двум условиям 1) не прошел месяц 2) прошло более месяца И там и там не берем файлы за последние 3 дня. И сделала эти переменные форматом yyyymmdd
2.bat не могу сделать. Т.к это множество лог файлов %list% нужно перебрать и сделать переменные aa=%list%:~0.8 чтобы они были тоже фотматом yyyymmdd. И затем эту переменную сравнивать. Если название лога yyyymmdd (из 2.bat)> yyyymmdd (из 1.bat), то архивируй в один файл и переписаны в другой каталог
E:\log
20141112.log
20141111.log
20141110.log
.........
1.txt я для самопроверки сделала.
1.bat я его сделала до конца, там он определяет с каким днем нужно сравнивать лог файлы в папке в зависимости от сегодняшнего дня %date%. Сравнение идет по двум условиям 1) не прошел месяц 2) прошло более месяца И там и там не берем файлы за последние 3 дня. И сделала эти переменные форматом yyyymmdd
2.bat не могу сделать. Т.к это множество лог файлов %list% нужно перебрать и сделать переменные aa=%list%:~0.8 чтобы они были тоже фотматом yyyymmdd. И затем эту переменную сравнивать. Если название лога yyyymmdd (из 2.bat)> yyyymmdd (из 1.bat), то архивируй в один файл и переписаны в другой каталог
E:\log
20141112.log
20141111.log
20141110.log
.........