Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Не сохраняет лог батника и вопрос по перепаковке файлов

Ответить
Настройки темы
CMD/BAT - Не сохраняет лог батника и вопрос по перепаковке файлов

Покинул форум


Сообщения: 3254
Благодарности: 893


Конфигурация

Профиль | Цитировать


В UpdatePack-XPSP3-Rus создаю новый аддон, прописываю сценарий выполнения в SpecCase, для открытия нового окна:

Код: Выделить весь код
Start /Wait Addons\TEST\TEST.CMD %1 >Addons\TEST\log\TEST.log
Почему лог сохраняется на винт, но он пустой, может что я забыл прописать в 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
В этом случае перепаковка показана в консольном окне, каждый файл упаковывается на отдельной строке, файлов 400. Как переделать эту команду чтобы файлы упаковывались на манер UpdatePack-XPSP3-Rus, то есть показывало кол-во файлов и обработку, а не растягивало экран лога на полкилометра.

Отправлено: 16:42, 11-04-2009

 


Moderator


Сообщения: 53441
Благодарности: 15497

Профиль | Отправить PM | Цитировать


Цитата prokazzza:
Start /Wait Addons\TEST\TEST.CMD %1 >Addons\TEST\log\TEST.logПочему лог сохраняется на винт, но он пустой
Потому что в лог записывается вывод команды Start (которая ничего не выводит), не TEST.CMD.

Цитата prokazzza:
чтобы файлы упаковывались на манер UpdatePack-XPSP3-Rus, то есть показывало кол-во файлов и обработку
Это только при создании .CAB архива.
При упаковке отдельных файлов можно либо выводить их список, либо не выводить (в nul).

Отправлено: 18:54, 11-04-2009 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


prokazzza
1. Например так, только неясен смысл "Start /WAIT", если ожидание батник сам держит
Код: Выделить весь код
Start "" /Wait CMD /C ("Addons\TEST\TEST.CMD" %1 1^>"Addons\TEST\log\TEST.log")
2. AFAIK тоже можно, но у вас многое осталось "за бортом" - нужен 100% рабочий пример

ADD: в вашем примере есть одна странность - цикл по файлам каталога TMP, содержимое которого меняется в процессе работы батника (архивы ложатся туда же), в таких случаях желательно сначала сохранять результат в текстовый файл и работать уже с ним, а не "вживую"

Последний раз редактировалось amel27, 13-04-2009 в 11:47.


Отправлено: 11:11, 13-04-2009 | #3


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Цитата prokazzza:
чтобы файлы упаковывались на манер UpdatePack-XPSP3-Rus »
где то так, сделал через временный файл (как сказал выше):

Код: Выделить весь код
@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



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Не сохраняет лог батника и вопрос по перепаковке файлов

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Система - [решено] Ищу программу, которая сохраняет лог загрузки процессора 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




 
Переход