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

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

Автор: HaK1R
Дата сообщения: 12.06.2009 23:43
lorents
надо указать имя задачи а не процесса

Код: cmdow "NaMe" /max
Автор: Maza_Faka
Дата сообщения: 13.06.2009 06:36
HaK1R

Цитата:
надо указать имя задачи а не процесса

Вы о чём? В справке ясно сказано, что нужно указать заголовок окна, либо его дескриптор в hex-строке.
Автор: HaK1R
Дата сообщения: 13.06.2009 09:23
Maza_Faka
Я привел г-ну lorents пример, который позволяет решить его проблему, с пояснением, что в кавычках вместо NaMe нужно указать не имя процесса, а имя задачи(Диспетчер задач-вкладка "приложения"-столбец "задача")
Автор: alexander6161
Дата сообщения: 13.06.2009 12:08
Помогите решить задачу?
В процессе выполнения батника в переменной %A% получается число, например 12345.
В переменной %B% получается число 1234567890.

Хочу, чтобы если в %A% содержится частичное совпадение числа с %B%, то чтобы %B% стало другим. Пример:
set B=1234567890
set B=%B:12345=%
При таком раскладе в %B% получится число 67890.

set B=1234567890
set B=%B:%A%=%
А так сделать не получается, подскажите что делаю не так и как это можно реализовать средствами батника?
То есть надо определить, есть ли в %B% в любом месте строка %A%.

Заранее спасибо.
Автор: lorents
Дата сообщения: 13.06.2009 12:17
HaK1R, Maza_Faka
спасибо!
Автор: Maza_Faka
Дата сообщения: 13.06.2009 12:46
HaK1R

Цитата:
имя задачи

Это заголовок окна (window title)
Автор: smirnvlad
Дата сообщения: 13.06.2009 14:41
alexander6161


Код:
setlocal enabledelayedexpansion

set A=12345
set B=1234567890
set B=!B:%A%=!

echo B=%B%
Автор: alexander6161
Дата сообщения: 13.06.2009 16:28
smirnvlad
Огромное спасибо!
Правду говорят, век живи - век учись.
Автор: alexander6161
Дата сообщения: 14.06.2009 11:02
Подскажите пожалуйста, есть ли скрипт или утилита, которые могут убрать строки с комментариями и пустые строки из батника? Вроде всё внимательно в шапке посмотрел, но не нашёл. Просто после удаления этих строк батник становится почти вполовину меньше, а руками постоянно удалять - муторно.

То есть надо убрать все строки, начинающиеся на "rem" и "::", и заканчивающиеся переводом строки.
Автор: Maza_Faka
Дата сообщения: 14.06.2009 11:46
alexander6161
Быстро, эффективно и без проблем со спецсимволами, если использовать SED.EXE

Код:
@Echo Off

Sed "s/^::.*\|^rem.*//gi" < test.txt >out.txt
Del /F /Q test.txt>Nul

Sed "/./!d" < out.txt > test.txt
Del /F /Q out.txt>Nul
Автор: alexander6161
Дата сообщения: 14.06.2009 14:08
Maza_Faka
Большое спасибо! Чётко работает!
Автор: HaK1R
Дата сообщения: 14.06.2009 20:12
Maza_Faka

Цитата:
Это заголовок окна (window title)

Автор: Sergey_Demchuk
Дата сообщения: 15.06.2009 16:47
Никто не подскажет?
Надо настроить в Групповой политике сервер обновлений
В групповой политике это задается с помощью ключей в реестре по адресу
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Group Policy Objects\{10411CDD-D21D-41E6-A6CD-DCE52DED3CCE}Machine\Software\Policies\Microsoft\Windows\WindowsUpdate]

Подключ {10411CDD-D21D-41E6-A6CD-DCE52DED3CCE} для каждого компа разное.
Так что просто перекопировать его с одного компа на другой не получится. Может можно как то через коммандную строку все это настроить?
Надо включить Настройку автоматических обновлений а также Указать сервер обновлений в интрасети.
Автор: HaK1R
Дата сообщения: 15.06.2009 20:07
Sergey_Demchuk

Цитата:
Может можно как то через коммандную строку все это настроить?

можно

Цитата:
Подключ {10411CDD-D21D-41E6-A6CD-DCE52DED3CCE} для каждого компа разное.

нам их угадать надо?
Пожалуйста конкретно: что, где, на что надо исправить+входные параметры.
Автор: ZeroCrash
Дата сообщения: 15.06.2009 22:53
Есть проблемка, но я не знаю можно ли её решить. Вот кусок кода, который я использую:


Код: for %%i in (1,2,3,4,5) do (
for %%j in (q,w,r,t,p,s,d,f,g,h,j,k,l,z,x,c,v,b,n,m) do set l_%%i_!random!=%%j
for %%j in (e,y,u,i,o,a) do set j_%%i_!random!=%%j
for %%j in (1,2,3,4,5,6,7,8,9,0) do set k_%%i_!random!=%%j
)

for %%i in (1,2,3,4,5) do (
for /f "tokens=4 delims=_=" %%j in ('set l_%%i') do set l-%%i=%%j
for /f "tokens=4 delims=_=" %%j in ('set j_%%i') do set j-%%i=%%j
for /f "tokens=4 delims=_=" %%j in ('set k_%%i') do set k-%%i=%%j
)
echo %j-1%%l-1%%j-2%%l-2%%l-3%%j-3%%l-4%%j-4%%l-5%%z-6%%x-7%>>%randomValue%.txt
Автор: zzz528
Дата сообщения: 16.06.2009 06:56
ZeroCrash

в чем используеш? в обычном cmd всегда одни и те же буквы
Автор: 01MDM
Дата сообщения: 16.06.2009 08:36
ZeroCrash
Исправишь что надо по своему усмотрению, названия переменных поменял на a,b,c, исправь по необходимости:

Код:
@echo off
setlocal enabledelayedexpansion

for %%i in (1,2,3,4,5) do (
for %%j in (q,w,r,t,p,s,d,f,g,h,j,k,l,z,x,c,v,b,n,m) do set a_%%i_!random!=%%j
for %%j in (e,y,u,i,o,a) do set b_%%i_!random!=%%j
for %%j in (1,2,3,4,5,6,7,8,9,0) do set c_%%i_!random!=%%j
)

for %%i in (1,2,3,4,5) do (
for /f "tokens=4 delims=_=" %%j in ('set a_%%i_') do set a-%%i=%%j
for /f "tokens=4 delims=_=" %%j in ('set b_%%i_') do set b-%%i=%%j
for /f "tokens=4 delims=_=" %%j in ('set c_%%i_') do set c-%%i=%%j
)

:: Здесь можешь поменять порядок вывода
set "string=%a-1%%b-1%%c-1%%a-2%%b-2%%c-2%%a-3%%b-3%%c-3%%a-4%%b-4%%c-4%%a-5%%b-5%%c-5%"

:: Здесь генерируется длина строки (7-12)
for /l %%i in (7,1,12) do set "num_!random!=%%i"
for /f "tokens=3 delims=_=" %%i in ('set num_') do set "num=%%i"

echo !string:~0,%num%!>>file.txt
Автор: Sergey_Demchuk
Дата сообщения: 16.06.2009 08:50
HaK1R

Если вызываю gpedit.msc и настраиваю вручную параметры Настройка автоматических обновлений а также Указать сервер обновлений в интрасети, то в реестре появляются эти ветки

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Group Policy Objects\{10411CDD-D21D-41E6-A6CD-DCE52DED3CCE}Machine\Software\Policies\Microsoft\Windows\WindowsUpdate]
"WUServer"="http://10.11.177.3:8530"
"WUStatusServer"="http://10.11.177.3:8530"

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Group Policy Objects\{10411CDD-D21D-41E6-A6CD-DCE52DED3CCE}Machine\Software\Policies\Microsoft\Windows\WindowsUpdate\AU]
"DetectionFrequencyEnabled"=dword:00000001
"DetectionFrequency"=dword:00000001
"NoAutoUpdate"=dword:00000000
"AUOptions"=dword:00000004
"ScheduledInstallDay"=dword:00000000
"ScheduledInstallTime"=dword:0000000b
"UseWUServer"=dword:00000001

Пробовал просто на другом компе занести это все в реестр, номер нет проходит, ибо подключ {10411CDD-D21D-41E6-A6CD-DCE52DED3CCE} разный для разных машин.
Если на машине не настраивалось в групповой политике автообновление, то подключа Group Policy Objects нету вообще, так что я не знаю как угадать подключ {10411CDD-D21D-41E6-A6CD-DCE52DED3CCE}, может можно групповую политику настраивать из коммандной строки как то?
Автор: jonnydram
Дата сообщения: 16.06.2009 10:08
Доброго времени суток!

Пытаюсь создать запрос, который хочу вставить в логон. Суть в следующем.

ЕСЛИ <текущий пользователь> в домене НЕ является членом <группы> ТО Выполнять добавление реестрового файлика (или ключей) в реестр (от имени <другой пользователь> если возможно) ИНАЧЕ ничего не делать. Вывести на экран сообщение какое-нибудь.

доковырялся пока что до фразы


Код: dsquery user -samid USERNAME | dsget user -memberof
Автор: ZeroCrash
Дата сообщения: 16.06.2009 10:24
01MDM

Спасибо. Буду осваивать.
Автор: Maza_Faka
Дата сообщения: 16.06.2009 10:50
Sergey_Demchuk

Цитата:
в реестре появляются эти ветки

Это ссылки, а вот где реально прописываются параметры:

Код:
HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\WindowsUpdate\AU
Автор: Sergey_Demchuk
Дата сообщения: 16.06.2009 11:54
Maza_Faka
Я хотел добиться того, чтоб при вызове gpedit.msc эти параметры были там прописаны и их было видно. Очевидно, они где то хранятся в файле груп. политики.
Автор: Nagual
Дата сообщения: 16.06.2009 12:35
Господа, есть два текстовых файла
Задача: вывести построчно содержимое каждого из них в результирующий

пример:
1.txt:
aaa1
bbb1
ccc1

2.txt:
aaa2
bbb2
ccc2

надо получить 3.txt
aaa1
aaa2
bbb1
bbb2
ccc1
ccc2

у кого есть идеи?
Автор: 01MDM
Дата сообщения: 16.06.2009 14:26
Nagual

Однострочных идей нет:

Код:
@echo off
setlocal

for /f "tokens=*" %%i in (1.txt) do set "last=%%i"
for /f "tokens=1 delims=:" %%i in ('findstr /n %last% 1.txt') do set "last=%%i"

for /l %%i in (1,1,%last%) do (
1>>3.txt sed -n "%%i p" 1.txt
1>>3.txt sed -n "%%i p" 2.txt
)
Автор: wolf0425
Дата сообщения: 16.06.2009 18:56
01MDM

Код: for /f "tokens=*" %%i in (1.txt) do set "last=%%i"
for /f "tokens=1 delims=:" %%i in ('findstr /n %last% 1.txt') do set "last=%%i"
Автор: HaK1R
Дата сообщения: 16.06.2009 20:48
jonnydram


Код: @echo off
chcp 1251 1>nul
net localgroup "Имя группы" | find "%username%" 1>nul 2>&1
if errorlevel 1 (reg import "C:\11\file.reg")
chcp 866 1>nul
Автор: 01MDM
Дата сообщения: 16.06.2009 21:50
wolf0425


Цитата:

for /f %%i in ('type 1.txt ^|find /c /v "" ') do set "last=%%i"


Я о find даже и не вспомнил
Давно им не пользовался. Как-то сравнивал время работы find и findstr - последний оказался заметно шустрее.

А так да, твой способ выглядит быстрее и короче.

"do set /a last+=1" специально не использовал - он теряет пустые строки.

Автор: wolf0425
Дата сообщения: 16.06.2009 23:45

Цитата:
Как-то сравнивал время работы find и findstr - последний оказался заметно шустрее.

ну шустрее так шустрее - вроде можно и им в один проход
for /f "tokens=1 delims=:" %%i in ('findstr /n "^" 1.txt') do set "last=%%i"
правда на тестовом файлике 10000 строк он уже заметно отстает

в твоем варианте подсчета last, кстати, глюки:
если 1.txt заканчивается на пустые строки - хвост 2.txt будет проигнорирован.
т.е. по надежности несильно лучше счетчика set /a last+=1
Автор: danilik
Дата сообщения: 17.06.2009 09:56
Есть такая задачка:

У меня есть список папок с разными названиями. В каждой папке (на пример папка с названием 123456) лежит текстовый файлик (например 123456.txt) с названием папки. в текстовом файлике куча разных строк. Мне надо строка, которая всегда начинается с pw_cu: и имеет вид "pw_cu: хххххххххххххх". Мне надо выкусить значение хххххххххххххх и переименовать в него папку в которой нахится этот файл.
Помогите пожалуйста
Автор: Nagual
Дата сообщения: 17.06.2009 10:54
01MDM, спасибо за идею
если поставить это
for /f "tokens=*" %%i in (1.txt) do set "last=%%i"
for /f "tokens=1 delims=:" %%i in ('findstr /n %last% 1.txt') do set "last=%%i"
у меня выдает
FINDSTR: Не удается открыть file
FINDSTR: Не удается открыть not
FINDSTR: Не удается открыть found
FINDSTR: Не удается открыть in
FINDSTR: Не удается открыть settings
FINDSTR: Не удается открыть directory
FINDSTR: Не удается открыть attempting
FINDSTR: Не удается открыть to
FINDSTR: Не удается открыть download

wolf0425
такой вариант вполне устроил, спасибо
for /f %%i in ('type 1.txt ^|find /c /v "" ') do set "last=%%i"
при файле в 956 строк
Exit code: 0 Time: 19.015
только sed, как обычно, по дефолту не использует перевод строк а-ля windows
поэтому приходится добивать своим скриптом из шапки
хотя я как то недавно видел обход этой ошибки в посте 01MDM

в общем спасибо, задача решена

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778

Предыдущая тема: во вкладке автозагрузка


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