Ru-Board.club
← Вернуться в раздел «Microsoft Windows»

» Задачи на bat-файлах 8

Автор: mugil_cephalus
Дата сообщения: 15.04.2010 16:21
Black Gate

Цитата:
скорей экспериментатор.

напоминает одного афганского моджахеда с cnn с ожогом лица, который еще в 9 лет начал с экспериментов со ...

Добавлено:
и nickname у тебя соответсвующий...
Автор: Nuke142
Дата сообщения: 15.04.2010 19:50
Помогите пожалуйста.

Задача:
прописать в реестр параметр "xxx" со значением, которое будет являться путем папки, в зависимости от того где лежит запускаемый батник.

Например:
батник "go.bat" лежит в c:\temp
и мне нужно чтобы в реестр в путь HKEY_LOCAL_MACHINE\SOFTWARE\helloworld
добавился параметр "hello" со значением "c\temp"

Сделайте пожалуйста целиком все, я по примеру подкорректирую.


---
еще было бы желательно, чтобы в зависимости от разрядности Windows, к пути добавлялся "Wow6432Node" ,т.к. в 64-битных виндах именно туда добавляются параметры.

т.е. :
HKEY_LOCAL_MACHINE\SOFTWARE\helloworld (на 32-битной винде)
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\helloworld (на 64-битной винде)
Автор: king_stiven
Дата сообщения: 15.04.2010 21:22
Nuke142
шапка

Цитата:
Переменная %0


Вопрос
sed -r "s/rar//g"
надо, чтоб rar заменяло без учёта регистра букв
Автор: Ortios
Дата сообщения: 15.04.2010 22:04
king_stiven

Цитата:
без учёта регистра букв


Код: sed -r "s/rar//gi"
Автор: kermit
Дата сообщения: 15.04.2010 22:05
ivn1978
а почему бы не поискать по очереди эти две ошибки?
Автор: Nuke142
Дата сообщения: 16.04.2010 11:58
Подскажите пожалуйста, как конкретно с помощью cpath убирать черту в конце пути, при использовании %~dp0 ?
Или как убрать лишний пробел в конце при использовании команды echo %cd% ?
Автор: mugil_cephalus
Дата сообщения: 16.04.2010 12:56
set "var=val"
set "var=%var:~0,-1%"
Автор: duh_S
Дата сообщения: 16.04.2010 14:26
подскажите плз:

Код: for /F "tokens=1* usebackq" %i in (`"dir C:\ /s /b | find "avp.com""`) do @echo %i
Автор: mugil_cephalus
Дата сообщения: 16.04.2010 14:43
duh_S
for /f "tokens=*" %%i in ('dir C:\ /s/b ^|find "avp.com"') do @echo.%%~dpi
а лучше
for /f "tokens=*" %%i in ('dir C:\ /a-d/s/b ^|find "avp.com"') do @echo.%%~dpi
Автор: K1ska
Дата сообщения: 17.04.2010 16:37

Автор: tails80486
Дата сообщения: 17.04.2010 19:52
такая задача:

имеется текст с большим количеством строк нужно к каждой строке добавить ";
ЗЫ строки различной длинны
Автор: wolf0425
Дата сообщения: 17.04.2010 22:29
Nuke142
Цитата:
Или как убрать лишний пробел в конце при использовании команды echo %cd% ?
а там нет лишнего пробела - если ты сам его после %cd% не ставишь.



Добавлено:

Цитата:
имеется текст с большим количеством строк нужно к каждой строке добавить ";
sed -i -r "s/$/\x22;/g" file.txt
ну или
for "delims=" %%a in (file.txt) do 1>>file2.txt echo.%%a";
Автор: BorlandIMHO
Дата сообщения: 17.04.2010 22:43
tails80486

Код: 1>>newtext.txt for /f "delims=" %%A in (yourtext.txt) do echo %%A;
Автор: Grim_Repo
Дата сообщения: 17.04.2010 22:44
Здравствуйте. Нужен BAT'ник который действовал бы таким образом:

Получает расширение файла
Сканирует указанную директорию (и все ее поддиректории)
Все найденные файлы с указанным расширением передает консольной проге (utility -a -b -c "%file_and_path%"), отделяя каждый запрос к проге через pause > nul
Все ответы консольной проги логируются в log.log

Заранее, благодарю!
Автор: wolf0425
Дата сообщения: 17.04.2010 22:55
duh_S наверно ты хотел написать
for /F "tokens=*" %i in (' dir C:\ /s /b ^| find "avp.com" ') do @echo %i


Добавлено:
Grim_Repo как-то так

Код: for /f "tokens=*" %%a in (' dir /b/s/a-d c:\folder\*.ext ') do 1>>log.log utility -a -b -c "%%~fa" & pause>nul
Автор: Grim_Repo
Дата сообщения: 17.04.2010 23:27
wolf0425
Большое спасибо! Скрипт работает! Вот только в log ничего не пишет. Это можно исправить? Там при обращении к проге, она выводит информацию о себе, прогресс обработки файла, то есть можно ли записать в лог все что говорит прога, после обработки файла?
И еще несколько пожеланий (не знаю реально ли их воплотить в жизнь): можно ли сделать что бы директорию, расширение файла, и прогу - можно было задавать через переменные? Вроде %DIR%, %EXT%, %PROG%.

Заранее, благодарю!
Автор: wolf0425
Дата сообщения: 18.04.2010 02:38

Цитата:
Большое спасибо! Скрипт работает! Вот только в log ничего не пишет.
а cтранно.
ну давай ещё и stderr попробуем в лог.

Цитата:
И еще несколько пожеланий (не знаю реально ли их воплотить в жизнь): можно ли сделать что бы директорию, расширение файла, и прогу - можно было задавать через переменные? Вроде %DIR%, %EXT%, %PROG%.
можно

Код:
set dir=c:\dir
set ext=ext
set prog=utility -a -b -c
for /f "tokens=*" %%a in (' dir /b/s/a-d %DIR%.\*.%EXT% ') do (
    1>>log.log 2>&1 %PROG% "%%~fa"
    pause>nul
)
Автор: tails80486
Дата сообщения: 18.04.2010 13:38
wolf0425
огромное спасибо, а где можно достать документацию по regex'у на русском?
Автор: wolf0425
Дата сообщения: 18.04.2010 16:25

Цитата:
а где можно достать документацию по regex'у
по кому???
если по регэкспам и sed - ну можно у линуксоидов посмотреть,
http://www.opennet.ru/docs/RUS/bash_scripting_guide/a14586.html

Автор: mugil_cephalus
Дата сообщения: 18.04.2010 23:04
аберрация локализации или что я делаю не так?
открывая блокнотом file.txt , stdout и stderr команд, промаркированных зеленым колером, сплошь - кракозябры , предыдущие, соответсвенно, - удобочитаемая кириллица. win 5.1 pro ru sp3 .
NB если chcp оставить 866-ой и открыть file.txt word'om (он запросит лексикон для dos) то аутпут обоих блоков команд - читаем...


Код: chcp 1251
1>file.txt 2>&1 (
for /?
ver
netsh diag show computer /v
echo
dir c:\false.txt

systeminfo
taskkill /f /im explorer_.exe
tasklist /v

)
Автор: Nikitosik19
Дата сообщения: 19.04.2010 06:52
Добрый день, помогите дописать скрипт и его оптимизировать.

echo off
rem ОБМЕН С ЦЕНТРАЛЬНЫМ ОФИСОМ

set Out_Centr="\\%COMPUTERNAME%\Обмен\В_ЦентральныйОфис"
set in_Centr="\\192.168.10.110\Supermarket\Центр"

set Out="\\%COMPUTERNAME%\Обмен\В_Эскадру_№30"
set in="\\192.168.10.110\supermarket\В_Эскадру_№30"

set dirout="C:\Обмен\В_Эскадру_№30"

rem ОБМЕН СЕРВИС

set Out_service="\\%COMPUTERNAME%\Обмен\Сервис"
set in_service="\\192.168.10.110\supermarket\Сервис"

rem ОБМЕН С ЭСКАДРОЙ 1

set Out_es1="\\%COMPUTERNAME%\Обмен\В_Эскадру_№1"
set in_es1="\\192.168.10.110\supermarket\В_Эскадру_№1"

rem ОБМЕН С ЭСКАДРОЙ 2

set Out_es2="\\%COMPUTERNAME%\Обмен\В_Эскадру_№2"
set in_es2="\\192.168.10.110\supermarket\В_Эскадру_№2"

rem ОБМЕН С ЭСКАДРОЙ 11

set Out_es11="\\%COMPUTERNAME%\Обмен\В_Эскадру_№11"
set in_es11="\\192.168.10.110\supermarket\В_Эскадру_№11"

rem ОБМЕН С ЭСКАДРОЙ 12

set Out_es12="\\%COMPUTERNAME%\Обмен\В_Эскадру_№12"
set in_es12="\\192.168.10.110\supermarket\В_Эскадру_№12"

rem ОБМЕН С ЭСКАДРОЙ 15

set Out_es15="\\%COMPUTERNAME%\Обмен\В_Эскадру_№15"
set in_es15="\\192.168.10.110\supermarket\В_Эскадру_№15"

rem ОБМЕН С ЭСКАДРОЙ 20

set Out_es20="\\%COMPUTERNAME%\Обмен\В_Эскадру_№20"
set in_es20="\\192.168.10.110\supermarket\В_Эскадру_№20"

rem ОБМЕН С ЭСКАДРОЙ 21

set Out_es21="\\%COMPUTERNAME%\Обмен\В_Эскадру_№21"
set in_es21="\\192.168.10.110\supermarket\В_Эскадру_№21"

rem ОБМЕН С ЭСКАДРОЙ 22

set Out_es22="\\%COMPUTERNAME%\Обмен\В_Эскадру_№22"
set in_es22="\\192.168.10.110\supermarket\В_Эскадру_№22"

rem ОБМЕН С ЭСКАДРОЙ 23

set Out_es23="\\%COMPUTERNAME%\Обмен\В_Эскадру_№23"
set in_es23="\\192.168.10.110\supermarket\В_Эскадру_№23"

rem ОБМЕН С ЭСКАДРОЙ 30

set Out_es30="\\%COMPUTERNAME%\Обмен\В_Эскадру_№30"
set in_es30="\\192.168.10.110\supermarket\В_Эскадру_№30"

rem ОБМЕН С ЭСКАДРОЙ 31

set Out_es31="\\%COMPUTERNAME%\Обмен\В_Эскадру_№31"
set in_es31="\\192.168.10.110\supermarket\В_Эскадру_№31"

rem ОБМЕН С ЭСКАДРОЙ 32

set Out_es32="\\%COMPUTERNAME%\Обмен\В_Эскадру_№32"
set in_es32="\\192.168.10.110\supermarket\В_Эскадру_№32"



rem pause

rasdial meat /disconnect
rasdial meat2 /disconnect

rem УБРАТЬ КОММЕНТАРИЙ ПРИ РАБОТЕ С МОДЕМА
rem rasdial etk cdma cdma

ping 192.168.10.110 -l 1 -n 5

echo on

IF NOT EXIST \\192.168.10.110\Supermarket\NotDelete (rasdial meat eskadra31 48gjkjdbyreghjcbv /domain:fortnoks) ELSE goto exchange

ping 127.0.0.1 -l 1 -n 5
ping 192.168.10.110 -l 1 -n 5

IF NOT EXIST \\192.168.10.110\Supermarket\NotDelete (rasdial meat2 eskadra31 48gjkjdbyreghjcbv /domain:fortnoks) ELSE goto exchange

ping 127.0.0.1 -l 1 -n 5
ping 192.168.10.110 -l 1 -n 5

:exchange

rem ОБМЕН ФАЙЛАМИ ВЫГРУЗОК НАРУЖУ

IF EXIST %out_Centr%\*.zip xcopy %out_Centr%\*.zip %in_Centr%\*.zip /d /z /Y
IF EXIST %in_Centr%\*.zip del %out_Centr%\*.zip

IF EXIST %Out_es1%\*.zip xcopy %Out_es1%\*.zip %in_es1%\*.zip /d /z /Y
IF EXIST %in_es1%\*.zip del %Out_es1%\*.zip

IF EXIST %Out_es2%\*.zip xcopy %Out_es2%\*.zip %in_es2%\*.zip /d /z /Y
IF EXIST %in_es2%\*.zip del %Out_es2%\*.zip

IF EXIST %Out_es11%\*.zip xcopy %Out_es11%\*.zip %in_es11%\*.zip /d /z /Y
IF EXIST %in_es11%\*.zip del %Out_es11%\*.zip

IF EXIST %Out_es12%\*.zip xcopy %Out_es12%\*.zip %in_es12%\*.zip /d /z /Y
IF EXIST %in_es12%\*.zip del %Out_es12%\*.zip

IF EXIST %Out_es15%\*.zip xcopy %Out_es15%\*.zip %in_es15%\*.zip /d /z /Y
IF EXIST %in_es15%\*.zip del %Out_es15%\*.zip

IF EXIST %Out_es20%\*.zip xcopy %Out_es20%\*.zip %in_es20%\*.zip /d /z /Y
IF EXIST %in_es20%\*.zip del %Out_es20%\*.zip

IF EXIST %Out_es21%\*.zip xcopy %Out_es21%\*.zip %in_es21%\*.zip /d /z /Y
IF EXIST %in_es21%\*.zip del %Out_es21%\*.zip

IF EXIST %Out_es30%\*.zip xcopy %Out_es30%\*.zip %in_es30%\*.zip /d /z /Y
IF EXIST %in_es30%\*.zip del %Out_es30%\*.zip

IF EXIST %Out_es31%\*.zip xcopy %Out_es31%\*.zip %in_es31%\*.zip /d /z /Y
IF EXIST %in_es31%\*.zip del %Out_es31%\*.zip

IF EXIST %Out_es32%\*.zip xcopy %Out_es32%\*.zip %in_es32%\*.zip /d /z /Y
IF EXIST %in_es32%\*.zip del %Out_es32%\*.zip

rem ЗАКАЧКА ФАЙЛОВ ВЫГРУЗОК НА ЛОКАЛЬНЫЙ СЕРВЕР

IF EXIST %in%\*.zip xcopy %in%\*.zip %out%\*.zip /d /z /Y
IF EXIST %Out%\*.zip del %in%\*.zip

rem ЗАКАЧКА СЕРВИСНЫХ ФАЙЛОВ НА ЛОКАЛЬНЫЙ СЕРВЕР

xcopy %in_service%\*.rar %out_service%\*.rar /d /z /Y
xcopy "c:\Обмен\Сервис\ДневныеОтчеты\*.DBF" "\\192.168.10.110\supermarket\Центр\ДневныеОтчеты\*.DBF" /d /z /Y

echo off

rem ОТКЛЮЧЕНИЕ ВПН и МОДЕМНЫХ СОЕДИНЕНИЙ

rasdial meat /disconnect
rasdial meat2 /disconnect
rasdial etk /disconnect

rem РАЗАРХИВАЦИЯ
c:
cd \
cd %dirout%
"c:\Program Files\WinRar\winRar.exe" x -y *.zip
IF EXIST %dirout%\*.xml del %dirout%\*.zip
:end

rem pause



Это скрипт обмена между ЦО и филиалами по vpn, бывает так что vpn канал падает и обмен надо сделать по внешнему адресу через ftp желательно, но можно и в файловом режиме...
Помогите дописать ту часть текста что бы по внешке цеплятся и файлы копировать.
Автор: Victor_Dobrov
Дата сообщения: 19.04.2010 13:39
Папка содержит файлы с именами: dir1_-_name1.ext, dir2_-_name2.ext ... dir9_-_name9.ext

Подскажите, как из них создать несколько папок вида: dir1\name1.ext, dir2\name2.ext ... ?
Автор: Joo1z
Дата сообщения: 19.04.2010 15:23
Nikitosik19
Для начала вынеси все параметры в ini-файл. Скрипт будет меньше.
Для работы с ftp юзай wget.
Victor_Dobrov
Пролистай несколько страниц назад, подобные вопросы регулярно решаются.
Автор: wolf0425
Дата сообщения: 19.04.2010 15:54
Victor_Dobrov

Код: for %%a in (*.ext) do for /f "tokens=1,2 delims=-_" %%i in ("%%~a") do md "%%~i" 2>nul & move "%%~fa" "%%~i\%%~j"
Автор: vov4ka
Дата сообщения: 20.04.2010 06:19
Господа,товарищи,поможет ли мне кто-нибудь батник по моей проблеме написать???!!!
Еще раз попробую пояснить задачу:мне нужна пара батников,чтобы их по компам раскидать:

1.Чтоб запретил компу быть мастер браузерами,запретил ему участвовать в выборах и отключил службу "обозреватель компьютеров".

2. Наоборот-дал компу роль Единственного мастер браузера и вкл. службу "обозреватель компьютеров".

Откликнитесь,кто-нить,пожалуйста!!!Заранее благодарен!!!!
Автор: Joo1z
Дата сообщения: 20.04.2010 10:26
vov4ka
Создаешь файлик со списком компов и запускаешь скрипт со своего компа. Даже раскидывать ничего не надо.

Код: @echo off
FOR /f %%a IN (pclist.txt) DO (
REG ADD \\%%a\HKLM\SYSTEM\CurrentControlSet\Services\Browser\Parameters /v IsDomainMaster /t REG_SZ /d FALSE /f
REG ADD \\%%a\HKLM\SYSTEM\CurrentControlSet\Services\Browser\Parameters /v MaintainServerList /t REG_SZ /d NO /f
sc \\%%a stop browser
)
Автор: mediate
Дата сообщения: 20.04.2010 14:21
Всем привет, никогда не занимался батниками, но вот пришлось задача такова - есть текстовый файл - в нем данные такого вида:

A
AA
ACTS
ACTSVOLS
ADDR
ADDRFOLD
ADDRRECIP
AGENTS
...

строки с символами перехода на след строку на концах. Надо поставить после каждой строки запятую и расположить их подярд, т.е. получить вот что:

A, AA, ACTS, ACTSVOLS, ADDR, ADDRFOLD, ADDRRECIP, AGENTS

в конце не должно быть запятой.

Дальше интереснее - вот эту полученную строку сохранить в файлик рядом. Потом, другой батник запускается и в нём есть строчка - tables=.... - вот вместо .... надо вставить A, AA, ACTS, ACTSVOLS, ADDR, ADDRFOLD, ADDRRECIP, AGENTS из сохраненного файлика - как это сделать все?

Даже, если подскажете как фалик со строкой одной создать - уже будет замечательно!
Автор: wolf0425
Дата сообщения: 20.04.2010 14:52
mediate
Цитата:
Даже, если подскажете как фалик со строкой одной создать - уже будет замечательно!
промежуточный файлик я посчитал лишним, а вообще, вместе со вставкой это делается примерно так:

Код: for /f %%a in (file.lst) do call set xx=%%xx%%, %%a
sed.exe -i -e "s/^(tables=).*$/\1%xx:~2%/" file.ini
Автор: Free_Soft
Дата сообщения: 20.04.2010 15:28
Ребята, как можно поменять значок (иконку) в заголовке окна консоли?
Автор: mugil_cephalus
Дата сообщения: 20.04.2010 15:45
mediate

Код: for /f "tokens=*" %%i in (G:\scripts\TEST\3.txt) do set "var=%%~i" &&goto:exit
:exit
0>nul 1>G:\scripts\TEST\3_.txt set /p="%var%"
for /f "skip=1 tokens=*" %%i in (G:\scripts\TEST\3.txt) do 0>nul 1>>G:\scripts\TEST\3_.txt set /p=", %%~i"
set /p var=<G:\scripts\TEST\3_.txt
for /f "tokens=*" %%i in ('type "G:\scripts\TEST\batch.cmd"') do 1>>G:\scripts\TEST\batch_.cmd (
echo.%%~i|1>nul 2>&1 find /i "tables=" &&(echo.tables=%var%) ||(echo.%%~i)
)
set "var="
pause

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132

Предыдущая тема: XP не видит второй раздел на съемном USB-HDD


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.