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

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

Автор: garri671
Дата сообщения: 22.07.2010 13:45
res2001
Попробовал последний пример, все работает, только количество строк должно быть 60000, а в посладнем что останется но менее 60000
Автор: res2001
Дата сообщения: 22.07.2010 13:46
Только боюсь, как бы вновь скопированные файлы в обработку фора не попали - расширение то одно и то же.
Думаю есть смысл в форе копировать с другим расширением, а в конце переименовать все по маске.

Добавлено:
garri671
Если надо, сделаю.
Просто я тестировал на небольших файлах и у меня возникла ситуация: в случае если общее количество строк/количество файлов < количества файлов, то в последнем файле может оказаться строк больше чем во всех предыдущих. Поэтому сделал так как сделал.
Автор: garri671
Дата сообщения: 22.07.2010 14:11
wolf0425

Цитата:
Совершенно верно!
как-то так:

Увы батник выдергивает первую запись в строках и составляет файл, а необходимо полностью строку
Автор: res2001
Дата сообщения: 22.07.2010 14:21
garri671
в последнем файле остаток:

Код: @echo off
setlocal enabledelayedexpansion
set "max=10"
set "allfile=.\1\txtall.txt"
set "allfile2=.\1\txtall1.txt"
set "indir=.\1\"
set "outdir=.\2\"

2>nul del /f/q %allfile%
for /l %%a in (1;1;%max%) do >>%allfile% type %indir%txt%%a.txt
findstr /n /r ".*" %allfile% >%allfile2%
set /a "count=0"
for /f "tokens=2 delims=:" %%a in ('find /c /v "" %allfile2%') do set /a "count=%%a"
set /a "p=count/(max-1)"
set /a "fn=1"
set /a "it=0"
for /f "tokens=1,* delims=:" %%a in (%allfile2%) do (
if !it! geq !p! set /a "it=0" & set /a "fn+=1"
if %max% lss !fn! goto :step2
>>%outdir%txt!fn!.txt echo.%%b
set /a "it+=1"
)
:step2
set /a "it = p * max"
more +%it% %allfile% >>%outdir%txt%max%.txt
del /f/q %allfile%
del /f/q %allfile2%
Автор: Iacoyn
Дата сообщения: 22.07.2010 15:12
Помогите - надо из bat/cmd узнавать расположение папки с ярлыками рабочего стола
есть путь в реестре
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\Desktop=
вот это значение надо присвоить какой-нибудь переменной для последующего использования внутри этого же батника.
Спасибо!
Автор: res2001
Дата сообщения: 22.07.2010 15:33
Iacoyn

Код: @echo off
for /f "tokens=2,*" %%a in ('reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v Desktop ^| more +4') do set desk=%%b
set desk
Автор: garri671
Дата сообщения: 23.07.2010 10:45
res2001

Цитата:
в последнем файле остаток:


Цитата:
Заметил что find

Батник создает 10 файлов с 1-10, в первых девяти записано по одной строке, в 10 файле 65536 строк.
Автор: res2001
Дата сообщения: 23.07.2010 10:54
garri671
Ну с 10 файлами понятно - переменную max отрегулируй.
А по остальному ... похоже на переполнение.
У тебя в итоговом файле сколько строк получается? и сколько всего файлов?

Добавлено:
Проверил на больших файлах, >60000 строк в каждом - работает как надо.
Проверил переполнение - это не оно, думал переменные двухбайтовые, оказалось нет, обычный signed int - 4 байтовый со знаком. Диапазона значений хватит за глаза.
Автор: max200701
Дата сообщения: 23.07.2010 18:50
Всем привет,есть батник такого содержания

Код: @echo off
:inetchk
echo TEST INTERNET %time:~0,-3%
echo --------------------------------------
ping www.ya.ru|findstr /i "TTL">nul
if "_%errorlevel%" equ "_0" (
echo INTERNET OK!!! %time:~0,-3%
echo --------------------------------------
echo PAUSE 120 sec...
echo --------------------------------------
sleep 120
goto:inetchk
) else (
echo INTERNET ERROR %time:~0,-3%
echo --------------------------------------
:loop
echo REBOOT MODEM %time:~0,-3%
echo --------------------------------------
ZTnBatch -h 192.168.1.1 -p **** -c "sys reboot 0">nul
if not errorlevel=0 (
echo REBOOT ERROR!!! RESTART... %time:~0,-3%
echo --------------------------------------
goto loop
)
echo REBOOT OK!!! %time:~0,-3%
echo --------------------------------------
echo WAIT ~120 sec...
echo --------------------------------------
sleep 120
goto:inetchk
)
Автор: wolf0425
Дата сообщения: 23.07.2010 19:43
max200701 ко всем строкам echo четотам %time:~0,-3% допиши копии с перенаправлением в файл, типа так:

Код: echo REBOOT OK!!! %time:~0,-3%
1>>%date:~6,4%-%date:~3,2%-%date:~0,2%.txt echo REBOOT OK!!! %time:~0,-3%
Автор: max200701
Дата сообщения: 23.07.2010 20:15
wolf0425 спасибо большое всё работает ,вот токо русские буквы в лог не пишет ,а пишет какието кракозябры

Код: ЋЎ¬Ґ- Ї ЄҐв ¬Ё б ya.ru [87.250.251.3] Ї® 32 Ў ©в:



ЋвўҐв ®в 87.250.251.3: зЁб«® Ў ©в=32 ўаҐ¬п=66¬б TTL=54

ЋвўҐв ®в 87.250.251.3: зЁб«® Ў ©в=32 ўаҐ¬п=66¬б TTL=54

ЋвўҐв ®в 87.250.251.3: зЁб«® Ў ©в=32 ўаҐ¬п=70¬б TTL=54

ЋвўҐв ®в 87.250.251.3: зЁб«® Ў ©в=32 ўаҐ¬п=68¬б TTL=54



‘в вЁбвЁЄ  Ping ¤«п 87.250.251.3:

Џ ЄҐв®ў: ®вЇа ў«Ґ-® = 4, Ї®«гзҐ-® = 4, Ї®вҐап-® = 0 (0% Ї®вҐам),

ЏаЁЎ«Ё§ЁвҐ«м-®Ґ ўаҐ¬п ЇаЁҐ¬ -ЇҐаҐ¤ зЁ ў ¬б:

ЊЁ-Ё¬ «м-®Ґ = 66¬бҐЄ, Њ ЄбЁ¬ «м-®Ґ = 70 ¬бҐЄ, ‘।-ҐҐ = 67 ¬бҐЄ

INTERNET OK!!! 20:13:34
PAUSE 120 sec...
Автор: wolf0425
Дата сообщения: 23.07.2010 22:49

Цитата:
wolf0425 спасибо большое всё работает ,вот токо русские буквы в лог не пишет ,а пишет какието кракозябры
гонишь ты, это русские буквы и есть, просто ты их пишешь в лог в 866 кодировке (по умолчанию для консоли) а смотришь в 1251 (нотепадом, наверно).
допиши в начало батника строку
1>nul chcp 1251 - будет и писаться в виндовой.
и фонт у окошка выстави уникодный (люсиду) чтоб на экране 1251 без кракозябр показывало, а то по умолчанию фонт терминал - неуникодный нифига, только ОЕМ (866).


а нафига ты сам вывод пинга в лог пишешь то? и echo хватило бы
Автор: max200701
Дата сообщения: 24.07.2010 11:59
wolf0425 спасибо вам за помощь,со всем розобрался
Автор: LENIN87
Дата сообщения: 25.07.2010 23:01
Ребята, подскажите как решить задачу, возможно не батником. Есть упёртая железка, которая в нужном мне слоте не пашет. После установки дров работает, но стоит только перезагрузиться и система в последний момент загрузки залипает. Скорее всего конфликт irq, но в биосе p5k-e я не нашел места, где irq резервировать. Система грузится, если злосчастное устройство перед перезагрузкой/выключением отключать в диспетчере устройств. А после загрузки соответственно включать. Так вот, каким образом можно автоматизировать включение/выключение устройства, подобно тому, как это делается в диспетчере устройств. Вот подумал о варианте через батник, помню, что их можно как-то автоматически при загрузке/выходе из ОС выполнять.
Автор: Iacoyn
Дата сообщения: 26.07.2010 00:14

Цитата:
Так вот, каким образом можно автоматизировать включение/выключение устройства, подобно тому, как это делается в диспетчере устройств. Вот подумал о варианте через батник, помню, что их можно как-то автоматически при загрузке/выходе из ОС выполнять.

Используйте Microsoft devcon.exe из коммандной строки.
пример использования
перед выключением
devcon.exe disable "PCI\VEN_8086&DEV_293E"
после включения
devcon.exe enable "PCI\VEN_8086&DEV_293E"
Загрузка выгрузка при включениии/выключении в групповой политике.
Конфигурация компьютера
Конфигурация Windows
Сценарии (запуск/завершение).

Автор: BVV63
Дата сообщения: 26.07.2010 06:17
Приветствую всех.
Подскажите, есть ли средства как-то в батниках шифровать пароль? Вобщем-то они и так закрыты аттрибутами безопасности NTFS, но всё едино, не лежит у меня душа к тому, чтобы пароли были в открытом виде.
Хм... Пожалуй, не очень ясно высказал мысль. Ну, к примеру, когда через "SysPrep" подготавливаешь файл ответов для установки Виндузы, то можно указать пароль, а в самом файле ответов вместо него окажется длиннющая строка буквочек-циферек, которую потом установщик понимает (то бишь, преобразует обратно в пароль). Вот что-нить подобное с использованием дополнительной консольной программы. Иными словами, нет ли подходящей консольной программы, которая могла бы пароль изначально подвергнуть шифровке, а в батнике ей шифрованный пароль подсовываешь, она его дешифрует, а вывод уже перенаправляет нужной проге?
Автор: res2001
Дата сообщения: 26.07.2010 07:42
BVV63
Воспользуйся любой тулзой, которая хэширует по md5.
Вот тут есть варианты MD5, SHA1, SHA256 на javascript, выбирай на вкус.

Добавлено:
А можно еще заюзать EFS, пароль при этом, конечно будет в открытом виде, зато файл смогут прочитать только те кому это можно сделать, даже изъятие винта не поможет.

Добавлено:
Еще как вариант использовать capicom.
Автор: wolf0425
Дата сообщения: 26.07.2010 11:25
BVV63 для детской защиты - батник можно тупо сконвертировать в .ехе, только следить чтоб распакованные батники уничтожались и темп был недоступен для просмотра другими пользователями.

но вообще надо просто избегать вписывания паролей в батники, т.е. все права должны определяться через права пользователя АД, на эту тему много чего придумано.
Автор: BVV63
Дата сообщения: 27.07.2010 05:43
res2001

Цитата:
А можно еще заюзать EFS, пароль при этом, конечно будет в открытом виде, зато файл смогут прочитать только те кому это можно сделать, даже изъятие винта не поможет.

wolf0425

Цитата:
но вообще надо просто избегать вписывания паролей в батники, т.е. все права должны определяться через права пользователя АД, на эту тему много чего придумано.

В том то и сложность, что некоторые скрипты запускаются в контексте безопасности локальной системы. Когда работа идёт в рамках одного сервера - всё OK. Но как только требуется связь с другими серверами (напр., разного рода копирование), возникают проблемы, требуется авторизация. Как в контексте системы использовать EFS - непонятно. Для использования АД также нужно авторизоваться.

Цитата:
Воспользуйся любой тулзой, которая хэширует по md5.
Вот тут есть варианты MD5, SHA1, SHA256 на javascript, выбирай на вкус

При обдумывании мысль шифрования пришлось отбросить. Приведённый мной пример об "SysPrep", в отношении батника, пожалуй, некорректен. Изначально я думал, что прога перенаправит расшифрованный пароль в программу, но если, к примеру, такой батник попадёт в чужие руки, то что стоит перенаправить вывод в батнике в файл?
Ладно, пожалуй ограничусь полумерами. Буду использовать встроенную учётку гостя (с одинаковым паролем на разных серверах) и ограничу ему права как можно сильнее, только чтобы необходимые операции мог совершить.
Автор: res2001
Дата сообщения: 27.07.2010 08:09
BVV63

Цитата:
некоторые скрипты запускаются в контексте безопасности локальной системы.

В чем скрытый смысл такого действа?

Цитата:
Буду использовать встроенную учётку гостя

Заведи специального пользователя в АД для этих дел, с минимальными правами. На серверах раздашь ему нужные дополнительные права и запускай в шедулере свои скрипты под этим пользователем. В этом случае пароль в батниках не понадобится и доступ к другим серверам в этом же домене будет.
В общем wolf0425 правильно тебе все написал.
АД то у тебя есть?
Автор: BVV63
Дата сообщения: 27.07.2010 09:36
res2001

Цитата:
В чем скрытый смысл такого действа?

Я начал это практиковать для запланированных заданий, дабы абстрагироваться от админских аккаунтов (многие операции требуют привелегий). Под системой это достигается идеально, но лишь в пределах машины.

Цитата:
АД то у тебя есть?

Есть.
Автор: res2001
Дата сообщения: 27.07.2010 10:00
BVV63

Цитата:
но лишь в пределах машины

Вот именно!

Шифрование прикручивать - отдельные большой геморой. К тому же, МД5 и прочие вычисления хэшей в данном случае не подойдут - обратной то функции нет. Тут тебе понадобится именно шифрование с генерацией ключей. Можно для этих целей использовать capicom или pgp - есть утилита для командной строки, но не бесплатная, есть ли халявная - не в курсе.
С гостем тоже все не так просто - это системный аккаунт, с фиксированным ID, даже если ты поместишь его в группу Администраторы и надаешь прав в групповой политике все равно могут вылезти какие-нибудь ограничения, которые обойти не получится.
Автор: BVV63
Дата сообщения: 27.07.2010 10:25
res2001

Цитата:
С гостем тоже все не так просто - это системный аккаунт, с фиксированным ID, даже если ты поместишь его в группу Администраторы и надаешь прав в групповой политике все равно могут вылезти какие-нибудь ограничения, которые обойти не получится.

Так мне его и не нужно делать админом, напротив. Если в пределах компа скрипт выполнять под системой, то для взаимодействия между компами в этом скрипте использовать логин-пароль гостя, т. е. с минимальными привелегиями (их можно ещё и дополнительно ограничить). Если и произойдёт утечка, не страшно.
Автор: res2001
Дата сообщения: 27.07.2010 10:48
BVV63

Цитата:
Если и произойдёт утечка, не страшно.

В случае доменного пользователя все еще лучше, т.к. в скрипте не надо логин/пароль прописывать, поэтому и утечки быть не может в принципе.
Впрочем, как хочешь своя рука владыка.
Автор: Unitaz
Дата сообщения: 27.07.2010 16:06
поможите граждане требуется запустить RunOnce модифицировать из батника RunOnce чтобы после перзагрузки запустить ещё один батник

сначало по ключу RunOnce заскаю st1.cmd

@echo off
reg add "HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnce" /ve /t reg_sz /d "c:\WINDOWS\st2.cmd" /f
devcon -reboot

ребут происходит а модификация RunOnce нет , во всяком случае st2.cmd незапускается


Автор: res2001
Дата сообщения: 27.07.2010 16:27
Unitaz
Полагаю в реестр запись надо так добавлять:
reg.exe add HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnce /v ST2 /t reg_sz /d c:\WINDOWS\st2.cmd /f
т.е. без ключа /ve
Автор: Unitaz
Дата сообщения: 27.07.2010 18:52
проверял из консоли ключ добавляется нормально , наверно надо задержку сделать перед ребутом

Автор: Scaramanga
Дата сообщения: 28.07.2010 00:10
Доброго времени суток. Вопрос следующий. Возможна ли автоматическая смена установленного ключа Windowx XP и Office 2003 на указанный с помошью bat файла?
Автор: res2001
Дата сообщения: 28.07.2010 07:55
Unitaz
Задержка не причем.
Та команда, что ты написал присваивает значение по умолчанию для раздела RunOnce, а это значение не обрабатывается виндой при старте.
Надо в этот раздел добавить именованный параметр командой, которую я тебе написал. Тогда, по идее, должно работать. Задержка не причем. Перезагрузка не происходит раньше чем отработает reg.
Автор: Unitaz
Дата сообщения: 28.07.2010 08:16
прекрасно отрабатывает я проверял ..... у меня ключ из батника не меняется

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132

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


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