Показать полную графическую версию : переменная меняется внутри цикла 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%
не работает
islily, приведите полный код, поскольку непонятно, в каком месте кода set aa=%list:~0,1%
не работает ».
а вот уже set aa=%list:~0,1%
не работает »
Делайте аналогично:
set aa=!list:~0,1!
Либо обходным путём:
call set aa=%%list:~0,1%%
Update: и, да — присоединюсь к коллеге Georgio: приводите полный код.
Iska, если внутри цикла, то сработают только конструкции с удвоенными знаками процента:
Код: Выделить весь код
call set aa=%%list:~0,1%%
и аналогичные ей. »
Угу. Это я описался. Спасибо, что заметили, поправил.
Iska, Georgio, выше написала на каком этапе я не могу продолжить написание батника
Решение будет состоять из 3х батников, 1.bat определяет каким днем должны быть-> от сегодняшнего - 3 дня и от сегодняшнего - месяц -3дня, 2.bat должен работать с папкой с логами, определить что архивировать, как архивировать и куда. 3.bat должен просто выполнить первые 2 батника и удалить txt кот создавались ими (не обяз-но).
islily, а что Вы хотите получить с помощью "1.bat" и "2.bat"?
Приведите желаемые результаты в том же виде, в каком Вы их хотите видеть по завершении работы этих пакетных файлов (то есть желаемое содержимое файла "1.txt" в обоих случаях).
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
.........
islily, для создания архива файлов определённого временного диапазона посмотрите в сторону ключей -to, -tn архиватора rar
islily, для создания архива файлов определённого временного диапазона посмотрите в сторону ключей -to, -tn архиватора rar»
sov44, это применимо когда обрабатываем файлы по времени создания, в моем случае надо по имени лога
Помогите пожалуйста :dont-know
islily, это обязательно должен быть пакетный файл? Суть в том, что на WSH/PoSH работа с интервалами дат реализуется готовыми функциями/методами, а на пакетных файлах все вычисления надо делать «ручками».
Смысл задания не осилил ;).
Iska, Да, это должен быть CMD/BAT
Пофиг на смысл) Мне продолжить решение надо...я близка к концу, загвоздка вот в чем>
Есть логи
E:\log
20141112.log
20141111.log
20141110.log
.........
мне нужно работать с их именами в дальнейшем, для этого мне надо взять первые 8 символов и присвоить переменную. Т.к. логов много она должна меняться, а затем я буду писать условие, если аа LEQ d3, то тратата. аа - та самая переменная
@echo off
cd /d "E:\log"
setlocal enabledelayedexpansion
for /f %%i in ('dir /a-d/b *.log') do (
set aa=%%~ni
echo !aa!
if !aa! leq %d3% тратата
)
sov44, это применимо когда обрабатываем файлы по времени создания, в моем случае надо по имени лога »
Смею предположить, что имя лога связно с датой его изменения
Georgio, супер, супер, я могу снова продолжать решение))))))) до такого я б наверно не додумалась)
Georgio,
setlocal enabledelayedexpansion
for /f %%i in ('dir /a-d/b *.log') do (
set aa=%%~ni
echo !aa!
if !aa! leq %d3% тратата
)
Теперь пишу на юникс подобной ос, подскажите пжлст, как это будет выглядеть на bash?
Ребят!! Мой вопрос не по вашей части? Мне идти на другой форум? Или все же дадите решение моей проблемы, пожаааааааалуйста. На Винде сделала, а вот на Убунту нет, опять на той же фигне застопорилась(((
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.