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

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

Автор: Romero_Ekb
Дата сообщения: 27.03.2006 22:24
Нужно вывести результат выполнения командного файла в текстовый.
Пишу call 1.cmd > res.txt, получаю вывод только заданных в 1.cmd команд, но не результатов их выполнения (в случае, например, если не удается выполнить remdir, хочу видеть соответствующее сообщение). Как записать именно сообщения об успешности/неудаче выполнения всех команд?
Автор: jak_forest
Дата сообщения: 28.03.2006 06:55
Romero_Ekb

Код: call 1.cmd > res.txt 2>&1
Автор: Romero_Ekb
Дата сообщения: 28.03.2006 08:50
jak_forest
Спасибо огромное! Никак не мог найти ответ на этот вопрос
Автор: seggah
Дата сообщения: 28.03.2006 11:37
Задачи принимаются?
Например, есть папка с 1000 файлов. Я хочу переписать эти файлы на минимальное количество дискет. (Резать на порции winrar'ом нельзя). Т.е. программа должна из этой тысячи отбирать некоторое количество файлов, чей общий размер максимален, но не больше размера дискеты ~1450k). Эти отобранные файлы программа должна переместить в папку disk1, и так далее. И хотелось быть уверенным, что количество дискет действительно минимально.
Автор: SergPfor
Дата сообщения: 28.03.2006 12:36
Зравствуйте.
Не правильно работают операторы сравнения (LSS...) в команде IF при использовании с большими числами (гигабайты). Помогите разобраться.
Есть задача определить размер файла и сравнить его с заданным порогом, при превышении которого необходимо сделать некоторое действие. С размером не сложно, а со сравнением не получается.
Автор: KapralBel
Дата сообщения: 28.03.2006 12:54
seggah
Решить задачу минимизации на .bat - это действительно круто
Если чуть упростить условие:
1. Отсеять файлы заведомо (по размеру) не влазящие на дискету
2. Копировать на дискету (disk№) файлы начиная с самого большого, а затем меньше по размеру, как только дискета заполняется перейти к началу этой процедуры
3. Так пока все файлы не кончаться

PS. скажи зачем это надо, может быть получиться более другие способы

Добавлено:
SergPfor

Код:
@Echo Off
If 3000000000 LSS 2000000000 (
Echo LSS
) Else (
Echo GTR
)
Автор: SergPfor
Дата сообщения: 28.03.2006 14:10
KapralBel
Не разобрался, как вставлять код.
В общем задача проверить размер файла бд echange, записать его и при превышении порога свиснуть
Сейчас реальный размер базы чуть более 9 Гб.

@echo off
set pdbpriv=\\Srv3\D$\exchsrvr\MDBDATA\PRIV.EDB
for %%I in (%pdbpriv%) do set sof=%%~zI
if %sof% lss 14000000000 goto stat
net send c01 Размер БД %pdbpriv% превысил порог и равен %sof%
:stat
for /f "tokens=2,3,4 delims=. " %%I in ('date /t') do set dd=%%I& set mm=%%J& set _ gg=%%K
for /f %%I in ('time /t') do set tm=%%I

if %dd%%mm%==3112 ren dbprivesize.txt dbprivesize%gg%.txt
echo %dd%.%mm%.%gg% %tm% %sof%>> dbprivesize.txt
Автор: Niklas
Дата сообщения: 28.03.2006 15:23
Доброго здравия!
Помогите, пожалуйста, создать BAT файл для подключения VPN соединения. Хотелось бы, чтоб этот файл запускался при загрузки системы (типа включил комп и всё работает) Опишите поподробней, где что писать.
P.S Видел пример кода на 29 странице, только что-то у меня он не сработал.
Автор: KapralBel
Дата сообщения: 28.03.2006 15:53
SergPfor
Работает все ОК
Даже если размер превышает на 1 байт ссобщение идет
А вчем у тебя проблема?
Автор: Refugee
Дата сообщения: 28.03.2006 18:33
SergPfor
LSS сравнивает числа как 32-х битные.
Убери последние три цифры через set sof=%sof:~0,-3% и, если получилась не пустая строка, сравнивай с 14млн.
Автор: SergPfor
Дата сообщения: 29.03.2006 08:27
KapralBel
У меня w2000 adv server. if 9161416704 LSS 14000000 goto stat - по метке не переходит, работет по следущей команде, т.е. свисток
А вот по совету Refugee кажется работает. Спасибо.


Добавлено:
KapralBel
Ошибся, в посте выше используется if 9161416704 LSS 14000000000 goto stat.
Автор: mozers
Дата сообщения: 29.03.2006 13:48
ALL
Простой батничек выполняю на нескольких одинаковых машинах c WinXP.
Код: @echo off
echo Y|SCHTASKS /Delete /TN "*"
if errorlevel 1 goto end
SCHTASKS /Create /RU "" /SC MINUTE /MO 5 /TN "RCall" /TR "C:\scripts\RCall.vbs"
SCHTASKS /Create /RU "" /SC DAILY /MO 1 /ST 04:00:00 /TN "reboot" /TR "C:\scripts\reboot.cmd"
:end
Автор: uZver
Дата сообщения: 30.03.2006 09:37
Возникла задача (практически олимпиадная , так как основной критерий скороть выполнения):

есть 2 файла нужно получить файл со строками которые: отсутствуют в 1 но есть во 2 и наоборот. порядок строк в искодных файлах может не совпадать. (размер файлов ~20-30мб)

(в принципе можно использовать доп. утилиты, вроде unxutils (если понадобятся))

Есть решение на VB, но оно не работает через ком.строку (время сравнения на 28мб - 1.10.)





Автор: jak_forest
Дата сообщения: 30.03.2006 11:39
uZver
а чем тебе fc не подходит?
Правда он кажись очень реагирует на порядок строк.
Автор: uZver
Дата сообщения: 30.03.2006 11:52

Цитата:
Правда он кажись очень реагирует на порядок строк.


и собственно этим и не подходит (к сожаленью этим грешат все(которые я смог попробовать) проги по сравнению файлов)
Автор: KapralBel
Дата сообщения: 30.03.2006 12:07
uZver
На батнике такое сравнение будет работать крайне медленно, попробуй для начало просто вывести на экран такой файл обычным перебором строк

Кстати предварительная сортировка допускается?
Автор: uZver
Дата сообщения: 30.03.2006 15:18

Цитата:
на экран такой файл обычным перебором строк

мне всегда казалось что отображения работы тормозит процесс
вот и сейчас вывод на экран - ~12.20
вывод в файл - ~7.20.
Вообщем если на сравнение будет тратится 15-20 минут, но при этом не придется в нем активно участвовать - то это вполне приемлемо


Цитата:
Кстати предварительная сортировка допускается?

автоматизированная? Допускается(только как?).

Автор: KapralBel
Дата сообщения: 30.03.2006 15:32
uZver

Код:
@Echo Off
Sort File1.txt /o file1.srt
Sort File2.txt /o file2.srt
FC file1.srt file2.srt >difference.txt
Автор: uZver
Дата сообщения: 30.03.2006 16:28
а я не знал про sort

KapralBel
Спасибо.
Работает влет (35 сек на 28 мб), но ...
sort не различает строчные и заглавные буквы, а fc соответственно считает их различными (как раз такой вариант попался ), отключил проверку в fc (/c), для моих нужд хватит.

Осталось только разобрать difference.txt, и вытащить от туда только нужные строки.


ЗЫ: может кто знает "сравниловки" дающие в протокол только расхождения?

Добавлено:
вопрос про разбор результата решился использование diff (из unxutils) (формат протокола легче)
Автор: mixams
Дата сообщения: 30.03.2006 19:38
Привет всем ... НароД... есть задачка по слоЖнее ... моЖь кто помоЖет ...
Вообщем текст самой задачи ....
НуЖно соЗдать папки на Диске .... таким Образом что БЫ . получилась такая конструкция с папками то есть в таком виде допустим создавалИсь каталоги : a,b,c,d,..... и так далее .... потом в ЭтиХ же каталогаХ соЗдаваЛись бы такие же файлы(папки) От а...... z .... короч говоря все По ЦикЛУ.... (4-х уровневый результат )
(не понимаю как мне Это все Осуществить ....поЭтому пРошу помоЩи у вас ....) НароД помоГите еслИ у кого Есть несколько минут Лишнего времени ...

Вижу что тема актуально развивается ....Бат файлы оченЬ удОбны ... Хочу научиться ...но и от помоЩи не ОткаЖусь...
Автор: mixams
Дата сообщения: 31.03.2006 10:36
Прашу пращения не судить строго... не как не магу отвыкнуть от дурацкой привычки .... теперь буду писать коректнее... что бы было легче читать ...
Вопрос остаеться актуальным ... есть желающие помочь ???
Автор: KapralBel
Дата сообщения: 31.03.2006 11:20
mixams

Код:
@Echo Off
For %%a in (a b c) Do Call :_F1 %%a
GoTo :EOF

:_F1
MD %1
PushD %1
For %%a in (a b c) Do Call :_F2 %%a
PopD
GoTo :EOF

:_F2
MD %1
PushD %1
For %%a in (a b c) Do Call :_F3 %%a
PopD
GoTo :EOF

:_F3
MD %1
PushD %1
For %%a in (a b c) Do Call :_F4 %%a
PopD
GoTo :EOF

:_F4
MD %1
GoTo :EOF
Автор: mixams
Дата сообщения: 31.03.2006 13:14
да ... мне такого не дано ... даж и не знал что Это так все Просто ...
Блин навазюкаЛся за три Дня ..... аж в глазах ряБит ... Обьявляю Благодарность В размере Агроменного СпасиБА !!!! ))
Автор: mixams
Дата сообщения: 01.04.2006 17:47
да ....а люди здесь злые ...нынче
Автор: seggah
Дата сообщения: 03.04.2006 16:01
KapralBel
Просто хотелось поглядеть, насколько страшно будет выглядеть код перебора вариантов на batch-языке
Автор: KapralBel
Дата сообщения: 03.04.2006 16:33
seggah
Ну сходу я такую задачу (полной минимизации) я и на других языках (С++) не напишу.
Придеться сделать мат.модель процесса, оптимизировать для приемлемых сроков выполнения (тут как прикладной математик ) говорю. А уж на батничке - только в том варианте как я предложил - полной минимизацией не пахнет, но для прикладных целей достаточно
Автор: Romero_Ekb
Дата сообщения: 04.04.2006 15:43
Вот такая задача:
Нужно скрыть от пользователя вкладку "Подключения" в Свойствах Обозревателя.
Для этого надо создать DWORD "ConnectionsTab"=1 в HKEY_CURRENT_USER\Software\Policies\Microsoft\Internet Explorer\Control Panel. Но по-умолчанию у обычного "смертного" пользователя нет прав на запись в этот раздел. Есть вариант создать параметр в соответствующем разделе HKEY_USERS\S-1-5-21-..., запустив некий скрипт от имени админа. Но тогда надо узнать соответствующее учетке пользователя SID-имя. Здесь можно, зная, что в имени пользователя есть подстрока "ххх", найти его SID в HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList.
Просьба помочь с CMD-шником, работающим в Win2000 (сам командный файл будет запущен от имени Администратора - с этим проблем нет). Или предложить более простое решение задачи.
Автор: KapralBel
Дата сообщения: 04.04.2006 15:56
Romero_Ekb
Support Tool обычно присутствует на компакте с виндой
Утилита WhoAmI выдает:

Код:
C:\Program Files\Support Tools>WhoAmI /user /sid
[User] = "XXXXX\YYYY" S-1-5-21-2512563947-891753078-1200190331-1109
Автор: uZver
Дата сообщения: 04.04.2006 18:40
и с нова наверное из разряда RTFM, но спрошу
есть следующий батник

Код:
set N=0
for %%f in (*.txt) do (
set /a N+=1
arj m -e -y test%N% .\%%f -jm1
)
Автор: abz
Дата сообщения: 04.04.2006 19:24
Romero_Ekb

Цитата:
Для этого надо создать DWORD "ConnectionsTab"=1 в HKEY_CURRENT_USER\Software\Policies\Microsoft\Internet Explorer\Control Panel. Но по-умолчанию у обычного "смертного" пользователя нет прав на запись в этот раздел.

Ну так и запусти с правами администратора как ты хочешь сделать тут:

Цитата:
Есть вариант создать параметр в соответствующем разделе HKEY_USERS\S-1-5-21-..., запустив некий скрипт от имени админа.

Зачем тебе SID?

Тут два варианта:

1) Дать юзеру временно права администратора для записи в ветку HKEY_CURRENT_USER\Software\Policies\Microsoft\Internet Explorer\Control Panel

2) Запустить регфайл от имени администратора.

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

Предыдущая тема: Вернуть библиотеку АТМ (поддержка шрифтов Type 1)


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