evle

1 + int rand(100); | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору reyst Про && можно прочитать во встроенной справке в главе "Общие сведения о командной оболочке" (в WinXP ее можно открыть так: mk:@MSITStore:C:\WINDOWS\Help\ntcmds.chm::/ntcmds_shelloverview.htm) Если коротко, то этот символ означает выполнение следующей команды только в том случае, если предыдущая команда выполнена успешно (вернула 0), но лучше почитай тот раздел, там еще много интересного. По поводу алгоритма: я не очень понял, зачем нужно что-то вызывать, если ничего строка не найдена. ведь в этом случае папку нужно просто пропустить. Вообще, ты привел не очень удачный алгоритм. Незачем разбивать задачу на два случая (есть InBox и нет InBox). Поскольку папка, которую не надо удалять, уже не одна, то это уже список. Пусть хранится во внешнем файле. Подход такой: находим папки PostBox, удаляем в них все файлы, пробегаем по папкам и если папка не из списка, то удаляем ее. Код: for /R %%i in (.) do if exist %%~fi\PostBox\ call elet %%~fi\Postbox goto :end elet del /Q %1\*.* del /Q /AH "%1\*.*" for /D %%k in (%1\*.*) do ( findstr /I /c:"%%~nk" notdel || rd /S /Q %%k ) :end | Рядом с батником должен лежать файл "notdel" со списком папок, которые не надо удалять, каждое имя с новой строки. В данном случае файл будет выглядеть вот так: Цитата: Alan Mon Цитата: PS По-моему задача настолько усложнилась, что впору переходить на Perl или WSH. Уж больно некрасиво на cmd получается. А некрасивые самолеты нелетают | А мы вертолет строим - они летают. Я приводил код на перле, там еще веселее, к тому же там все равно вызываются стандртные команды. На WSH, конечно, можно перейти, но что-то лень. По поводу красоты: о вкусах не спорят. Мне лично решение через CMD нравится, да и ничего сложного в задаче нет.
---------- For every complex problem, there is a solution that is simple, neat, and wrong. |
|