![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Реализация условия в цикле |
|
CMD/BAT - [решено] Реализация условия в цикле
|
Новый участник Сообщения: 3 |
Здравствуйте, помогите пожалуйста, весь день парюсь не могу сообразить...
Имеется код для поиска и удаления файла по маске с запросом, все работает, ищет, удаляет. При исполнении пакетного файла должен сформироваться текстовый файл с результатом в виде Deleted (столько-то) files in directory (путь), и так столько строк, сколько было путей к файлам. В файл пишется такая строка, когда путь меняется, т.е. мы переходим к следующей директории. Проблема в том, что условие if в цикле верно при каждой итерации цикла for и каждый раз при нахождении файла, который надо удалить, в файл отчета пишется Deleted 0 files in directory, т.е. переменные не распознаются. Подскажите пожалуйста, что делать? Скрытый текст
setlocal enabledelayedexpansion
echo Result > C:\Result.txt set x=0 set /P maska="Vvedite masky:" for %%d in (a b c d e f g h i j k l m n o p q r s t u v w x y z) do ( if exist "%%d:\*" ( for /f "delims=" %%f in ('2^>nul dir /a-d/b/s "%%d:\%maska%"') do (set z2="%%~dpf%" if x==0 (set z1="%%~dpf%") if !z2! NEQ !z1! (>>C:\Result.txt echo Deleted !x! files in directory !z1! && set x=0 && set z1="%%~dpf%") del /P "%%f" if not exist "%%f%" (set /a x=x+1)) ) ) pause О том, что последняя директория не запишется, я знаю, это предусмотрю после цикла |
|
Отправлено: 17:06, 25-11-2017 |
Ветеран Сообщения: 2735
|
Профиль | Отправить PM | Цитировать Roman_Norther@vk, ИМХО, загвоздка в if !x!==0
Надо !x! Мне не нравится конструкция "%%~dpf Последний % лишний Я бы предпочёл написать set /a x+=1 или set /a x=!x!+1 Мой вариант Вашей задачи, здесь меньше всяких If, труднее погрязнуть в логике
@Echo Off Cls Set "LogFile=Z:\Result.txt" Set /P maska="Input mask, please: >" >"%LogFile%" ( Echo Rezult: Deleted files %maska% Echo: ) For %%d In (a b c d e f g h i j k l m n o p q r s t u v w x y z) Do ( Call :DelFile "%%d:" "%maska%" For /f "usebackq delims=" %%f in (`2^>nul Dir /A:D /B /S "%%d:\"`) Do Call :DelFile "%%f" "%maska%" ) Pause GoTo :Eof :DelFile Set /A N=0 For /f "usebackq delims=" %%i in (`2^>nul Dir /A:-D /B "%~1\%~2"`) Do ( Del /P "%~1\%%i" If Not Exist "%~1\%%i" Call Set /a N+=1 ) If %N% GTR 0 >>"%LogFile%" Echo Deleted %N% files in directory "%~1\" GoTo :Eof |
------- Последний раз редактировалось megaloman, 25-11-2017 в 20:36. Отправлено: 20:29, 25-11-2017 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 3
|
Профиль | Сайт | Отправить PM | Цитировать Спасибо огромное! Все работает!
|
Отправлено: 04:52, 26-11-2017 | #3 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - Цикл в Цикле | deamon7 | Скриптовые языки администрирования Windows | 5 | 15-04-2023 09:04 | |
C/C++ - Условия работы цикла | 31echo_echo@vk | Программирование и базы данных | 0 | 29-11-2016 13:24 | |
CMD/BAT - [решено] Условия внутри цикла for | blackmane | Скриптовые языки администрирования Windows | 4 | 02-08-2012 10:01 | |
CMD/BAT - Проверка условия | Доктор Ливси | Скриптовые языки администрирования Windows | 11 | 19-01-2012 16:01 | |
CMD/BAT - Условия на удоления в cmd | zinteco | Скриптовые языки администрирования Windows | 1 | 24-03-2010 19:58 |
|