|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Не сохраняет лог батника и вопрос по перепаковке файлов |
|
CMD/BAT - Не сохраняет лог батника и вопрос по перепаковке файлов
|
Покинул форум Сообщения: 3254 |
В UpdatePack-XPSP3-Rus создаю новый аддон, прописываю сценарий выполнения в SpecCase, для открытия нового окна:
Почему лог сохраняется на винт, но он пустой, может что я забыл прописать в TEST.CMD или неправильно прописываю команду? В этом же батнике есть функция: Echo Упаковка файлов. For /F "UseBackQ Delims=" %%I In (`Dir %WorkDir%\Tmp /B /ON 2^`) Do Call :PackFiles %%~I :PackFiles Set J=%~1 For /F "Delims=" %%K In (%WorkDir%\PackList) Do if /I "%%~K"=="%J:~0,-1%_" ( MakeCab /D CompressionMemory=21 /D CompressionType=LZX %WorkDir%\Tmp\%J% %WorkDir%\Tmp\%J:~0,-1%_ ) Goto :EOF |
|
Отправлено: 16:42, 11-04-2009 |
Сообщения: 53441
|
Профиль | Отправить PM | Цитировать Цитата prokazzza:
Цитата prokazzza:
При упаковке отдельных файлов можно либо выводить их список, либо не выводить (в nul). |
||
Отправлено: 18:54, 11-04-2009 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать prokazzza
1. Например так, только неясен смысл "Start /WAIT", если ожидание батник сам держит 2. AFAIK тоже можно, но у вас многое осталось "за бортом" - нужен 100% рабочий пример ADD: в вашем примере есть одна странность - цикл по файлам каталога TMP, содержимое которого меняется в процессе работы батника (архивы ложатся туда же), в таких случаях желательно сначала сохранять результат в текстовый файл и работать уже с ним, а не "вживую" |
Последний раз редактировалось amel27, 13-04-2009 в 11:47. Отправлено: 11:11, 13-04-2009 | #3 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Цитата prokazzza:
@Echo Off Set $WRK=C:\WORK Set $TMP=%$WRK%\TMP Set $LST=%$WRK%\PackList Set $TMF=%$WRK%\PackList.$$$ Call :FStatNew "%$LST%" "ШАГ 1: Упаковка файлов" 2>Nul Dir /B "%$TMP%\*"|FindStr /VRC:"_$" >"%$TMF%" For /F "UseBackQ Delims=" %%i In ("%$TMF%") Do Call :FilePack "%%i" "%$LST%" EXIT :FilePack :: ------------------------- :: Упаковка одного файла :: ------------------------- :: %1 - краткое имя файла :: %2 - имя файла со списком :: ------------------------- Set $FilePack=%~1 FindStr /IX "%$FilePack:~,-1%_" "%~2">>1 If ErrorLevel 1 GoTo :EOF MakeCab /D CompressionMemory=21 /D CompressionType=LZX "%$TMP%\%$FilePack%" "%$TMP%\%$FilePack:~0,-1%_" >Nul Call :FStatUpd "%~1" GoTo :EOF :FStatNew :: ------------------------- :: Создание статусной строки :: ------------------------- :: %1 - файл со списком :: %2 - текст заголовка :: ------------------------- Set $FStatBar=------------------------------------------------------------------------------ Set $FStatCLS= Set $FStatBST= Call :StringLen "%~2" Call Set $FStatBar=%%$FStatBar:~,%$StringLen%%% Echo. Echo %$FStatBar% Echo %~2 Echo %$FStatBar% Set FStatFile=%~dpnx1 For /F "Tokens=3 Delims=:" %%A In ('Find /V /C "" "%FStatFile%"') Do Set /A $FStatMax=%%A+0 Call :StringLen %$FStatMax% Set $FStatLen=%$StringLen% Set $FStatCnt=0 Goto :EOF :FStatUpd :: ------------------------- :: Обновить статусную строку :: ------------------------- :: %1 - рабочее имя элемента :: ------------------------- Set /A $FStatCnt+=1 Set /A $FStatPcn=100*%$FStatCnt%/%$FStatMax% Set $FStatCnt= %$FStatCnt% Set $FStatPcn= %$FStatPcn% Call Set $FStatTxt=%$FStatPcn:~-3%%%%% [%%$FStatCnt:~-%$FStatLen%%% из %$FStatMax% файлов] - "%~1" Call :StringLen "%$FStatTxt:"=_%" Call Set $FStatTxt=%%$FStatTxt%%%%$FStatCLS:~%$StringLen%%% <Nul Set /P $FStatTxt=%$FStatTxt%%$FStatBST% Goto :EOF :StringLen :: ----------------------- :: Нахождение длины строки :: ----------------------- :: %1 - текстовая строка :: ----------------------- If ""=="%~1" GoTo :EOF Set $StringLen=0&Set $StringBuf=%~1 :StringLenLoop Set /A $StringLen+=1 Call Set $StringChr=%%$StringBuf:~%$StringLen%%% If ""=="%$StringChr%" GOTO :EOF GoTo :StringLenLoop |
|
Отправлено: 11:51, 16-04-2009 | #4 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Система - [решено] Ищу программу, которая сохраняет лог загрузки процессора | Xavier Teodonius | Программное обеспечение Windows | 4 | 19-08-2015 13:44 | |
CMD/BAT - [решено] Открыть несколько лог-файлов | antoniospb | Скриптовые языки администрирования Windows | 4 | 10-04-2009 15:12 | |
Вопрос по русификации файлов | DJ Electronic | Наборы обновлений для Windows XP/2003/Windows 7 | 1 | 04-06-2007 14:48 | |
Лог открытых файлов. | INTELLIGENTIK | Microsoft Windows NT/2000/2003 | 2 | 24-11-2005 12:29 | |
Log Analyzer 1.1: программа для анализа серверных лог-файлов | NatalyaPohorela | Вебмастеру | 5 | 11-06-2004 22:40 |
|