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

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

Автор: KapralBel
Дата сообщения: 16.08.2007 16:06
hobbit063
ftp -s:sftp.txt
Автор: paveltr
Дата сообщения: 16.08.2007 18:04
Здравствуйте!

Сваял такой батник (с целью выяснения свободного места на диске и выкидывания пользователю сообщения если свободно меньше 1Гб):

Код: echo %date% - %time% : start
dir "c:\" /-c > "%~dp0dir.txt"
for /f "skip=1 tokens=4 delims= " %%f in ('find /n "bytes free" "%~dp0dir.txt"') do if %%f LSS 1073741824 (net send administrator CHECK FREE SPACE^! drive c: %%f bytes free^! > nul) else (echo %date%, %time% : drive %1 %%f bytes free, message not sent)
if exist "%~dp0dir.txt" del /q "%~dp0dir.txt"
echo %date% - %time% : finish
exit
Автор: Tipulatoid
Дата сообщения: 16.08.2007 18:38
paveltr
Как не так давно писал Elroir, самое большое число, что воспринимает батник - это 2147483647

Твои тестовые числа выходят за этот диапазон, потому и не работает.
Автор: paveltr
Дата сообщения: 16.08.2007 19:03
Я уже за голову хватаюсь! Интересно, что в документации нигде подобного не написано... Попробую забить место до 2 Гб и прогнать так

Спасибо за ответ!
Автор: Tipulatoid
Дата сообщения: 16.08.2007 19:10
paveltr

Цитата:
Попробую забить место до 2 Гб и прогнать так

Все равно не получится, т.к. свободного места у тебя, как говоришь, 4494696448, что больше допустимого диапазона. По идее, нужно юзать команду или консольную прогу, что сообщит свободное место не в байтах, а в кило- или мегабайтах - тогда все будет ОК. Только тут я не знаю, что именно тебе посоветовать.

[b]Добавлено: [\b]
Не сразу правильно понял твой пост - если заполнишь диск, так, что останется меньше 2 Гб - то должен работать, конечно.

[b] Еще Добавлено: [\b]
Да, и замечание по коду: зачем создавать лишний темповый файл и потом его потирать? Лучше так:

Код: @echo off
echo %date% - %time% : start
for /f "tokens=3 delims= " %%a in ('dir c:\ /-c') do set free=%%a
if /i %free% LSS 1073741824 (net send administrator CHECK FREE SPACE^! drive c: %free% bytes free^!) else (echo %date%, %time% : drive c: %free% bytes free, message not sent)
echo %date% - %time% : finish
Автор: 01MDM
Дата сообщения: 16.08.2007 19:43
paveltr
wmic diskdrive get size
wmic logicaldisk get size
wmic logicaldisk get freespace
wmic /?


Код:
for /f "skip=1" %%i in ('wmic logicaldisk c: get freespace') do (
echo На С: осталось %%i bites
)
Автор: KapralBel
Дата сообщения: 16.08.2007 21:35
paveltr
Вообще есть утилита, которая висит в трее и контрлирует размер свободного места на дисках, как только меньше - идет почта на указанный адрес
Так что не мучайся в данном случае
Автор: king_stiven
Дата сообщения: 16.08.2007 21:44
Maza Faka

Код: xcopy a b:\
if errorlevel 4 echo нет места
Автор: Elroir
Дата сообщения: 16.08.2007 22:02
king_stiven

Цитата:
Что не так?

Батник не доходит до строчки "if errorlevel 4 echo нет места"
Сообщение выводит команда xcopy...
Автор: KapralBel
Дата сообщения: 16.08.2007 22:07
king_stiven
Попытайся запустить xcopy a: b: /c


Цитата:
/C Продолжает копирование, даже если произошла ошибка.
Автор: paveltr
Дата сообщения: 16.08.2007 23:17
Tipulatoid
Цитата:
Да, и замечание по коду: зачем создавать лишний темповый файл и потом его потирать? Лучше так:

Резонно! Пасибо, так и сделаю!

01MDM
Цитата:
wmic /?

Про это не знал, буду копать, спасибо!

KapralBel
Задача как раз сделать всё по-простому, штатными средствами. За подсказку спасибо.

Спасибо всем откликнувшимся! Выручили


Автор: NIKZZZZ
Дата сообщения: 17.08.2007 02:06
paveltr
Чтобы преобразовать результат из байт в мегабайт нужно просто удалить последние 6 цифр.

Код: set free=%%a
set free=%fre:~0,-6%
Автор: mailsefr
Дата сообщения: 17.08.2007 02:13
Зарабатывайте просто читая письма. Все спонсоры на одной странице,
регистрируйтесь у всех сразу. Писем будет много. http://forum.ru-board.com
Автор: mbku
Дата сообщения: 17.08.2007 03:19
Здравствуйте всем.

Вопрос1.
Как создать сообщение в несколько строчек при помощи утилиты hs_message. Можно привести просто пример и будет ясно. Главное, чтоб сообщение было в несколько строчек.

Вопрос2. Можно ли сделать, чтоб bat-ник запускался при каждом обращении к моему компьютеру с другого компьютера?

Вопрос3. Есть ли утилиты или команды сравнения файлов, которые можно использовать в bat-никах? Про команды Comp и fc я знаю, но что-то мне они не очень нравятся.

Вопрос4. Нигде нельзя скачать бесплатно перекодировщик файлов. (из одного формата в другой)? Перекодировщик, чтоб тоже можно было использовать в bat-никах.

Вопрос5. Негде нельзя скачать бесплатно утилиту поиска файлов по содержимому, при этом файлы не только текстовые но и word-ие.
Автор: dardreams
Дата сообщения: 17.08.2007 06:41

Цитата:
sc \\Srv1 config messenger start= demand

Если честно я не понял как это должно работать ?
Я хотел бы например запустить блокнот на удаленной машине. как это сделать с помощью твоего совета ?
Автор: Maza Faka
Дата сообщения: 17.08.2007 06:53
dardreams

Цитата:
запустить блокнот на удаленной машине

А чем не устраивает "PSEXEC.EXE"? Ну нельзя штатными средствами запустить приложение на удалённой машине, много раз уже об этом сказано!
Автор: KapralBel
Дата сообщения: 17.08.2007 06:57
dardreams
Сорри, в запарке решил что спрашиваешь опять про службу но на удаленном компе


Цитата:
Я хотел бы например запустить блокнот на удаленной машине

Я бы сделал так
Создал на удаленном компе нужный батник (хотя в этом случае и не требуется)
А потом через AT сделал бы запуск по расписанию

ЗЫ. была утилита, которая позволяет создать задание на запуск через 2,3 и т.д минут
Вот только забыл её имя
Автор: dardreams
Дата сообщения: 17.08.2007 07:03
KapralBel
Есть тогда вариант попроще, можно вообще через сервис srvany сделать,но я хотел попроще именнот как в команде psexec там для запуска требуется всего вот такая строка

Код:
psexec \\192.168.0.1 notepad.exe
Автор: igor_andreev
Дата сообщения: 17.08.2007 08:27

Цитата:
ЗЫ. была утилита, которая позволяет создать задание на запуск через 2,3 и т.д минут
Вот только забыл её имя

soon.exe http://www.microsoft.com/downloads/details.aspx?familyid=ca8191e6-9eef-4975-b51c-8d670748ca8e&displaylang=en
Автор: dardreams
Дата сообщения: 17.08.2007 08:39

Код:
@echo off
:ip
cls
col 10
hs_echo "Input ip: "
col 13
set /p ip=
@ping -n 1 %ip%>nul
if errorlevel 1 (col 12&&echo Ping request could not find&&echo Please check the name and try again...&&delay 3000&&goto :ip)
col 10
hs_echo "Input Command: "
col 13
set /p Command=
col 10
for /f "tokens=8" %%i in ('net time \\%ip% ^|find "Local"') do set netTime=%%i
set /a newMin= %netTime:~3,5%+1
set hour=%netTime:~0,3%
at \\%ip% %hour%%newMin% /interactive %command%>nul
col 11
at \\%ip%
col 10
Автор: KapralBel
Дата сообщения: 17.08.2007 09:03
dardreams
Если задача стоит в том что выждать некоторое время после загрузки и обновить время с интернета (а выждать - что бы успело подсоединиттся к интернету) то у меня короче


Код: eventtriggers.exe /create /eid 20158 /tr Internet_on /tk C:\CheckTime.cmd
Автор: dardreams
Дата сообщения: 17.08.2007 09:08
KapralBel
Мне до тебя еще далеко ... КРуто не чего сказать !
А что насчет
Цитата:
Скажите а можно радактировать %%a такие переменные ?
Вот пнапрмер если переприсвоить то можно.


Код:
set x=%%a
echo %x:~1,2%


Можно тоже самое делать просто с переменной %%a ?
Автор: KapralBel
Дата сообщения: 17.08.2007 09:15
dardreams
А зачем её разбирать на составляющие
Ты правильно делаешь - присвоил нормальной переменной и делай с ней что хошь

Не ищи трудности - иди самым простым способом
Автор: dardreams
Дата сообщения: 17.08.2007 09:30
KapralBel
тоесть это не реально ?
Автор: slayer120
Дата сообщения: 17.08.2007 09:34
Уважаемые подскажите плиз как можно получить номер текущей недели.
Нужно создать батник , пишущий некие файлы в каталоги соответствующие номеру недели в месяце. Может есть какие то проги.
С помощью планировщикаможно сделать но как получить номер недели?
Автор: KapralBel
Дата сообщения: 17.08.2007 09:35
dardreams
Не знаю, и пробовать не хочу
Смысла нет
Если бы сократило кучу строк - то да, а так только 1 строку (Set x=%%a)

Добавлено:
slayer120
Проще написать программу, которая будет возвращать по ЕррорЛевел - номер недели, чем полный разбор в батнике

Вообще представляю так
Получается день недели - пн,вт,ср и т.д
Получается число месяца
Потом по дню недели выбирается последний день 1- недели
и последовательно прибавляя 7 смотрим - текущая дата уже меньше полученой
Автор: Tipulatoid
Дата сообщения: 17.08.2007 09:54
slayer120

Код: @echo off
setlocal enabledelayedexpansion
for /f "tokens=1 delims=." %%a in ('echo %date%') do set curr_day=%%a
for /l %%a in (1,7,%curr_day%) do (
set /a week_num+=1)
echo %week_num%
Автор: slayer120
Дата сообщения: 17.08.2007 10:11
Tipulatoid
Спасибо работает. Вставлю в свой батник проверю.
То что нужно было. Я хотел использовать линуксовый date
из Unxutils.
Автор: Tipulatoid
Дата сообщения: 17.08.2007 10:18
slayer120

Цитата:
Спасибо работает.

Пожалуйста . Сейчас обнаружил ошибку в своем коде если дата меньше 10. Правильный код такой:

Код: @echo off
for /f "tokens=1 delims=." %%a in ('echo %date%') do set curr_day=%%a
if %curr_day:~0,1%==0 set curr_day=%curr_day:~1,2%
for /l %%a in (1,7,%curr_day%) do (
set /a week_num+=1)
echo %week_num%
Автор: NskRonin
Дата сообщения: 17.08.2007 10:27
Подскажите можно ли это реализовать в bat?

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

[HKEY_CURRENT_USER\Control Panel\Desktop]
"ScreenSaveActive"="0"
"SCRNSAVE.EXE"=""

Не проканало.

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566

Предыдущая тема: Автозагрузка терминальной сессии


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