CMD/BAT - переменная меняется внутри цикла for, последовательно принимая значения имен файлов

Аватара пользователя
islily

CMD/BAT - переменная меняется внутри цикла for, последовательно принимая значения имен файлов

Сообщение islily »

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%

не работает
Аватара пользователя
islily

Re: CMD/BAT - переменная меняется внутри цикла for, последовательно принимая значения имен файлов

Сообщение islily »

Цитата islily:



а вот уже 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, последовательно принимая значения имен файлов

Сообщение Iska »

Цитата Georgio:



Iska, если внутри цикла, то сработают только конструкции с удвоенными знаками процента:

Код: Выделить весь код

call set aa=%%list:~0,1%%

и аналогичные ей.
»




Угу. Это я описался. Спасибо, что заметили, поправил.
Аватара пользователя
islily

Re: CMD/BAT - переменная меняется внутри цикла for, последовательно принимая значения имен файлов

Сообщение islily »

вот
Вложения

[Расширение jpg было запрещено, вложение больше недоступно.]

Аватара пользователя
islily

Re: CMD/BAT - переменная меняется внутри цикла for, последовательно принимая значения имен файлов

Сообщение islily »

Iska, Georgio, выше написала на каком этапе я не могу продолжить написание батника

Решение будет состоять из 3х батников, 1.bat определяет каким днем должны быть-> от сегодняшнего - 3 дня и от сегодняшнего - месяц -3дня, 2.bat должен работать с папкой с логами, определить что архивировать, как архивировать и куда. 3.bat должен просто выполнить первые 2 батника и удалить txt кот создавались ими (не обяз-но).
Аватара пользователя
Georgio

Re: CMD/BAT - переменная меняется внутри цикла for, последовательно принимая значения имен файлов

Сообщение Georgio »

islily, а что Вы хотите получить с помощью "1.bat" и "2.bat"?

Приведите желаемые результаты в том же виде, в каком Вы их хотите видеть по завершении работы этих пакетных файлов (то есть желаемое содержимое файла "1.txt" в обоих случаях).
Аватара пользователя
Georgio

Re: CMD/BAT - переменная меняется внутри цикла for, последовательно принимая значения имен файлов

Сообщение Georgio »

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

.........
Ответить

Вернуться в «Скриптовые языки администрирования Windows»