ПРИМЕРЫ
Здесь я привожу примеры, которые, надеюсь,
помогут вам решить некоторую часть проблем, возникающих
при написании bat файлов.
Если у вас есть замечания, вопросы, пожелания, дополнения - пишите.
-----------------------------------------------------------------------------------------------------------------------------------------
ЭКРАНИРОВАНИЕ СПЕЦСИМВОЛОВ И ВЫВОД В ФАЙЛ.
echo ^ >mytest.html
echo ^
>>mytest.html
echo ^Test html page^ >>mytest.html
echo ^ >>mytest.html
echo ^ >>mytest.html
echo Hello World >>mytest.html
echo ^ >>mytest.html
echo ^ >>mytest.html
Экранирование символа %
echo моих собственных примеров здесь более 50%%
-----------------------------------------------------------------------------------------------------------------------------------------
ОЖИДАДАНИЕ ЗАДАННОГО ИНТЕРАЛА ВРЕМЕНИ
Паузу можно создать при помощи команды ping:
ping -n 1 -w 100000 192.168.254.254 >nul
-n 1 - выполнить один запрос
-w 100000 - ждать ответа 100 секунд
(значение указывается в миллисекундах)
192.168.254.254 - IP адрес, который заведомо не существует
в локальной сети (важно!),
т.е. никогда не ответит на ping
>nul - перенаправление всего вывода команды ping в никуда.
Можно использовать утилиту sleep.exe из Ресурскита.
-----------------------------------------------------------------------------------------------------------------------------------------
АНАЛИЗ РЕЗУЛЬТАТОВ РАБОТЫ КОМАНДЫ, ПРОГРАММЫ
FOR /F "usebackq" %%i IN (`hostname`) DO SET MYVAR=%%i
В переменную MYVAR запишется имя компьютера, с которого
запущена команда.
Приведено в качестве примера. Так как аналогичный результат можно
было получить и более просто (см. раздел Переменные) :
set MYVAR=%COMPUTERNAME%
FOR /F "usebackq" %%i IN (`md5sum.exe -t fin.txt`) DO ( set rrr=%%i )
Осуществляется запуск программы расчета контрольных сумм файла
с параметрами и последующий анализ результата.
ping ya.ru /n 1 | find "TTL">nul
if %ERRORLEVEL% NEQ 0 (
rem Действия, если ping был неудачным
) else (
rem Действия, в сучае удачного завершения ping
)
В приведенном выше примере утилита для проверки соединений
ping передает (конвейер) данные результата своей работы команде find
для анализа.
-----------------------------------------------------------------------------------------------------------------------------------------
ЗАМЕНА ОДНОЙ ПОДСТРОКИ НА ДРУГУЮ В ФАЙЛЕ
Для выполения этой операции можно использовать утилиту sbs2.com
Традиция и дошедший комментарий приписывает авторство Herbert Kleebauer.
Получить эту программку можно выполнив следующий бат файл:
rem Create the assembler program, by Herbert Kleebauer
echo Bj@jzh`0X-`/PPPPPPa(DE(DM(DO(Dh(Ls(Lu(LX(LeZRR]EEEUYRX2Dx=>sbs2.com
echo 0DxFP,0Xx.t0P,=XtGsB4o@$?PIyU!WvX0GwUY Wv;ovBX2Gv0ExGIuht6>>sbs2.com
echo ?@}IKuNWpe~Fpe?FNHlF?wGMECIQqo{Ox{T?kPv@jeoSeIlRFD@{AyEKj@>>sbs2.com
echo iqe~1NeAyR?mHAG~BGRgB{~H?o~TsdgCYqe?HR~upkpBG?~slJBCyA?@xA>>sbs2.com
echo LZp{xq`Cs?H[C_vHDyB?Hos@QslFA@wQ~~x}viH}`LYNBGyA?@xAB?sUq`>>sbs2.com
echo LRy@PwtCYQEuFK@A~BxPtDss@fFqjVmzD@qBEOEenU?`eHHeBCMs?FExep>>sbs2.com
echo LHsPBGyA?@xAunjzA}EKNs@CA?wQpQpKLBHv?s`WJ`LRCYyIWMJaejCksl>>sbs2.com
echo H[GyFGhHBwHZjjHeoFasuFUJeHeB?OsQH[xeHCPvqFj@oq@eNc?~}Nu??O>>sbs2.com
echo ~oEwoAjBKs?Zp`LBzHQzyEFrAWAG{EFrAqAGYwHTECIQ{coKIsaCsf{Oe~>>sbs2.com
echo CK}Ayre~CNFA{rAyEKFACrA{EKGAjbA}eKGSjNMtQFtc{OAyDGFj?{FDGQ>>sbs2.com
echo KAjNVk_OCAx@e?f{o?CosI}1EGizhljJ~H1ZeG}JBA~rACBMDGjjDG@g0>>sbs2.com
В результате, в папке, где будет запущен приведенный выше текст,
создастся файл sbs2.com.
Возможно, вы будете приятно удивлены его размером - 659 БАЙТ!
Использование:
sbs2.com 0 "Old String" "New String" < infile > outfile
Осуществляется замена всех вхождений Old String на New String
в файле infile. Результат запишется в файл outfile.
-----------------------------------------------------------------------------------------------------------------------------------------