Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » Командная строка, батники, сценарии (bat, cmd) 2

Модерирует : gyra, Maz

Widok (10-03-2009 12:39): Лимит страниц. Продолжаем здесь.  Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

   

Elroir



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору


Код:
 
@echo off
del tmp?.txt 2>nul
rem ========================================================================================================  
rem Вытаскиваем информацию из реестра, с помощью программы regedit, в файл temp1.txt
regedit /ea temp1.txt HKEY_CURRENT_USER\Software\Borland\Delphi\7.0\Library
rem Первые 3 строчки нам не нужны, поэтому переписываем содержимое temp1.txt в temp2.txt, пропустив эти строчки
more +3 temp1.txt>temp2.txt
rem Теперь у нас есть одна длинная строка, которую нам надо разбить на кусочки.
rem Для этого - заменяем все символы ";", которые отделяют разные пути, на два  
rem символа: "возврат каретки" и "новая строка" (в Windows именно так указывается
rem  переход на новую строку).
 
gsar -s; -r:013:010 -f temp2.txt temp1.txt >nul
rem В файле temp2.txt все символы "\" удвоены - заменяем их на единичные.
gsar -s\\ -r\ -f temp1.txt temp2.txt >nul
rem Находим первую строчку и заносим ее в переменную tempVar1
for /f "tokens=*" %%a in ('type temp2.txt ^| find "Search Path"') do set "tempVar1=%%a"
rem Вырезаем из переменной первые 15 символов ("Search Path"=") - они нам не нужны
set "tempVar1=%tempVar1:~15%"
rem Записываем первую строчку из переменной tempVar1 в файл temp1.txt
echo %tempVar1%>temp1.txt
rem Переписываем все, кроме первой строки из temp2.txt в temp1.txt
more +1 temp2.txt>>temp1.txt
rem В переменной lines будет общее число строк в temp1.txt
set "lines=0"
rem Подсчитываем число строк
for /f "tokens=*" %%a in (temp1.txt) do set /a "lines+=1"
rem Теперь у нас есть все, что нам надо для дальнейшей работы
rem ===========================================================================  
 
Echo ******* Building *******  
   
if exist .cfg ren .cfg .cf~  
if exist DCC32.cfg ren DCC32.cfg DCC32.cf~  
rem # Make console target, unless overridden later  
echo -$A8 >> DCC32.cfg  
echo -$B- >> DCC32.cfg  
echo -$C+ >> DCC32.cfg  
echo -$D+ >> DCC32.cfg  
echo -$E->> DCC32.cfg  
echo -$F- >> DCC32.cfg  
echo -$G+ >> DCC32.cfg  
echo -$H+ >> DCC32.cfg  
echo -$I+ >> DCC32.cfg  
echo -$J- >> DCC32.cfg  
echo -$K- >> DCC32.cfg  
echo -$L+ >> DCC32.cfg  
echo -$M- >> DCC32.cfg  
echo -$N+ >> DCC32.cfg  
echo -$O+ >> DCC32.cfg  
echo -$P+ >> DCC32.cfg  
echo -$Q- >> DCC32.cfg  
echo -$R- >> DCC32.cfg  
echo -$S- >> DCC32.cfg  
echo -$T- >> DCC32.cfg  
echo -$U- >> DCC32.cfg  
echo -$V+ >> DCC32.cfg  
echo -$W- >> DCC32.cfg  
echo -$X+ >> DCC32.cfg  
echo -$YD >> DCC32.cfg  
echo -$Z1 >> DCC32.cfg  
echo -GD >> DCC32.cfg
echo -cg >> DCC32.cfg
echo -AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; >> DCC32.cfg
echo -H+ >> DCC32.cfg
echo -W+ >> DCC32.cfg
echo -M >> DCC32.cfg
   
rem # Min/MaxStackSize
echo -M16384,1048576 >> DCC32.cfg
rem # ImageBase
echo -K$00400000 >> DCC32.cfg
 
echo -LE"c:\program files\borland\delphi7\Projects\bpl" >> DCC32.cfg
echo -LN"c:\program files\borland\delphi7\Projects\Bpl" >> DCC32.cfg
echo -DEUREKALOG;EUREKALOG_VER6 >> DCC32.cfg
rem # Packages
echo -LUvcl;vclx >> DCC32.cfg
rem # SearchPath
rem Записываем "-U" в файл DCC32.cfg без перевода строки - то есть следующая запись
rem будет производится на этой же строке, без каких-либо пробелов.
rem Использование этой конструкции, в официальных источниках не описано.

set /p=-U<nul>>DCC32.cfg
rem Вызываем блок записи всего пути в файл DCC32.cfg, одной строкой
call :writeSearchPath DCC32.cfg
rem Переходом на следующую строку в файле DCC32.cfg
echo.>>DCC32.cfg
rem # SearchPath
set /p=-R<nul>>DCC32.cfg
call :writeSearchPath DCC32.cfg
echo.>>DCC32.cfg
rem # SearchPath
set /p=-O<nul>>DCC32.cfg
call :writeSearchPath DCC32.cfg
echo.>>DCC32.cfg
rem # SearchPath
set /p=-I<nul>>DCC32.cfg
call :writeSearchPath DCC32.cfg
echo.>>DCC32.cfg
rem # BuildAll
echo -B >> DCC32.cfg
   
 
"c:\Program Files\Borland\Delphi7\Bin\DCC32.EXE" *.dpr %1 %2 %3 %4 %5 %6 %7 %8 %9
if errorlevel 1 goto GotError
goto Finish
   
rem # Got an error. Wait for user input
:GotError
echo Error!
pause
   
:Finish  
del DCC32.cfg
if exist DCC32.cf~ ren DCC32.cf~ DCC32.cfg
if exist .cf~ ren .cf~ .cfg
del temp?.txt 2>nul
Echo ******* Done. *******
   
:End
goto :EOF
 
:writeSearchPath
rem Включаем отложенное раскрытие заначения переменных
setlocal enabledelayedexpansion
set "count=1"
rem Хм... не помню, почему я ввел эту строчку :-)
set /p=""<nul>>"%~1%"
rem Идем по всем строчкам из файла temp1.txt и записываем их в DCC32.cfg через
rem знак ";" - все на одной строке

for /f "tokens=*" %%a in (temp1.txt) do (
rem Добавляем ";" в конез строки и вносим ее (строку) в переменную sp)
set "sp=%%a;"
rem Если это первая строчка - добавляем кавычку первым символом
if !count!==1 set "sp="""!sp!"
rem Если последняя строка - убираем ";" в конце
if !count!==!lines! set "sp=!sp:~0,-1!"
rem Пишем строку в файл
set /p=!sp!<nul>>"%~1%"
rem Увеличиваем счетчик строк, чтобы поймать последнюю строку
set /a count+=1
)  
 
 


Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 02:55 13-11-2008
   

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Компьютеры » Программы » Командная строка, батники, сценарии (bat, cmd) 2
Widok (10-03-2009 12:39): Лимит страниц. Продолжаем здесь.


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru