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

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

Автор: fd1136
Дата сообщения: 25.08.2009 11:10
oshizelly
Попробуй так

Код:
start hidcon <имя твоего батника с вызовом tralala.exe>
Автор: bredonosec
Дата сообщения: 25.08.2009 11:12
oshizelly

Цитата:
START + имя запускаемого файла в кавычках, но без параметров + еще раз имя запускаемого файла без кавычкек, но с параметрами

нет, название службы (под которым она в списке служб будет), имя файла и параметры.

Цитата:
то каждую надо строить таким же образом или достаточно указать Start только один раз в первой строке?

нет, ты же каждую службу отдельно запускаешь.. так что, каждой и старт писать.
Автор: Alukardd
Дата сообщения: 25.08.2009 13:24
oshizelly

Цитата:
Глянул в Гугле, там действительно много всего предлагается. Как выбрать, не представляю Был ли признателен за совет, парочку вариантов, не слишком сложных, но и не совсем примитивных.

вот ссылочка на тот который счел самым приемлимым для себя
_http://letitbit.net/download/2357.a295532a3fad35fdc5ccd021c/Bat_To_Exe_Converter.zip.html


народ кто может посмотрите пару предыдущих страничек и ответьте на мои вопросы плз
Автор: AgentMario
Дата сообщения: 25.08.2009 13:58
Рылся в куче всего полезного, но так и не нарыл! Хелп...
Как синхронизировать через батник МЕСЯЦ (не время) с каким-либо сервером?
Автор: fd1136
Дата сообщения: 25.08.2009 14:52

Цитата:
Как синхронизировать через батник МЕСЯЦ (не время) с каким-либо сервером?

Поменять только МЕСЯЦ, если он не совпадает с мировой датой? Т.е. оставить дату и время те, которые стоят на компе?
Автор: AgentMario
Дата сообщения: 25.08.2009 15:00
Главное месяц, желательно год.(Всё остальное не важно, можно даже не изменять дату, а просто сравнить)
Автор: fd1136
Дата сообщения: 25.08.2009 16:13

Цитата:
Главное месяц, желательно год.(Всё остальное не важно, можно даже не изменять дату, а просто сравнить)

Неожиданная проблема такая ... Может проще батарейку сменить?

Получая точное время от внешнего компа, ИМХО, можно только обновить локальное. А получить, посмотреть, подумать - не получится. ИМХО.
Если по локальной сети, то для этого существует команда

Код: net <имя_сервера_с_точным_временем> /time /set
Автор: tolyn77
Дата сообщения: 25.08.2009 16:19
подскажите пожалуйста как определить версию windows из командной строки? что бы потом можно было использовать в скрипте?
заранее благодарен
Автор: D77
Дата сообщения: 25.08.2009 16:57
Подскажите пожалста, задача - примитивная, но сам не справлюсь
Как с помощью bat-ника имя папки
"D:\1C\db" поменять на "D:\1C\db_дата_время"
Автор: Alukardd
Дата сообщения: 25.08.2009 17:24

Цитата:
Подскажите пожалста, задача - примитивная, но сам не справлюсь
Как с помощью bat-ника имя папки
"D:\1C\db" поменять на "D:\1C\db_дата_время"

эт точно было в этой теме! я бы сказал даже несколько раз.. на какой из 640 странпц точно не скажу, но гугл тя выведет на этот форум... исчи!
Автор: 01MDM
Дата сообщения: 25.08.2009 20:39
tolyn77
Можно так, но я не уверен, что сработает в любой версии:

Код:
@echo off
setlocal

for /f "tokens=1,2 delims==" %%i in ('wmic os get caption^,version /value ^| findstr "="') do (
set "%%i=%%j"
)
echo %caption%
echo %version%
Автор: tolyn77
Дата сообщения: 26.08.2009 07:09
01MDM
спасибо второй вариант вполне устраивает, а вот как бы вырезать только цифра от куда?
ну например вместо Microsoft Windows XP [Версия 5.1.2600]
получить 5.1.2600
а еще как можно сделать проверку на содержимое (XP) в переменной (Microsoft Windows XP [Версия 5.1.2600])?
Автор: 01MDM
Дата сообщения: 26.08.2009 08:45
tolyn77

Цитата:
получить 5.1.2600


Код:
@echo off
setlocal

for /f "tokens=2 delims=[]" %%i in ('ver') do (
for %%i in (%%i) do set "version=%%i"
)
echo %version%
Автор: oshizelly
Дата сообщения: 26.08.2009 09:27
bredonosec
Цитата:
нет, название службы (под которым она в списке служб будет), имя файла и параметры.

Спасибо. На всякий случай уточню, что речь идет не о службе, а о самом обычном пользовательском приложении (в данном случае почтовом клиенте). Как я понимаю, это не влияет?
Автор: tolyn77
Дата сообщения: 26.08.2009 10:13
01MDM
спасибо
подскажи плиз что не так сделал?
psexec %1 -s ver | findstr "XP" 1>nul && echo XP || set windir=c:\winnt
в любом случаи отрабатывает set windir=c:\winnt, хоть XP хоть 2000
Автор: SeriouSShat
Дата сообщения: 26.08.2009 10:41
@echo off
Set File=test.txt
Set Num=1
:Loop
If Not Exist %File% Goto EndLoop
For %%a In (%File%) Do (
Set FName=%%~na
Set FExt=%%~xa)
Set NewFName=%FName%_%Num%%FExt%
Set /a Num=%Num% + 1
(If Exist %NewFName% Goto Loop) && (Set NewFName=%NewFName%)
Set File=%NewFName%
:EndLoop
Echo %File%

Как в скрипте сделать чтобы "N" в имени файла test_N.txt выбиралось случайным образом, N - случайная цифра или буква (тоесть чтобы в итоге получить не по порядку test.txt test_1.txt test_2.txt, а test.txt test_25.txt test_6.txt и т.д.)?

Автор: 01MDM
Дата сообщения: 26.08.2009 11:04
tolyn77
Я не могу проверить, нет второго компа. Наверное так не получится. Для такой команды надо запускать cmd, имхо:

Код:
psexec %1 -s cmd /c "ver | findstr "XP" 1>nul && echo XP || set winhome=c:\winnt"
Автор: anachrom
Дата сообщения: 26.08.2009 13:05
Кто-нибудь знает как при помощи коммандной строки можно оборвать подключения к файлу. Например файл d:\file.txt открыт на другом компе, а нужно его удалить и не хочится ходить и говорить: "Петя, ...., какого ..., закрывай. А то он у тебя уже третий год открыт", или просто нехочется бегать по офису и искать. кто-же там по моим документам ползает.
Автор: NIKZZZZ
Дата сообщения: 26.08.2009 13:20
anachrom

Цитата:
Кто-нибудь знает как при помощи коммандной строки можно оборвать подключения к файлу.

Unlocker
Автор: anachrom
Дата сообщения: 26.08.2009 15:14
NIKZZZZ
Спасибо конечно, утилита интересная, но меня интересует именно обрыв связи всех подключений к файлу через командную строку. Такое есть?
Автор: NIKZZZZ
Дата сообщения: 26.08.2009 15:24
anachrom

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

unlocker работает из ком. строки, unlocker /? для справки.
Автор: anachrom
Дата сообщения: 26.08.2009 15:35

Цитата:
unlocker работает из ком. строки, unlocker /? для справки.

Эт то понятно, что из командно строки и для запуска справки ставим /?, но есть существенный недостаток: её надо ставить.
Вот нашел "handle". Но пока не разобрался. Если меня кто опередит отпишитесь пжл.
Автор: NIKZZZZ
Дата сообщения: 26.08.2009 16:25
anachrom

Цитата:
её надо ставить.

Для регистрации Unlocker достаточно следующего рег файла


Код: Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\Software\Classes\CLSID\{DDE4BEEB-DDE6-48fd-8EB5-035C09923F83}\InProcServer32]
@="c:\\Program Files\\Unlocker\\unlockercom.dll"
"ThreadingModel"="Apartment"

Автор: tolyn77
Дата сообщения: 26.08.2009 16:30
01MDM
с ключем /c Ты был прав значение переменной не передалось, как и с ключем /k
что же делать
Автор: 01MDM
Дата сообщения: 26.08.2009 22:16
tolyn77
Ну если тебе все-таки удобней через psexec, то вариант с временным файлом:

Код:
@echo off
setlocal

psexec %1 -s 1>file.txt cmd /c "ver | findstr "XP" 1>nul && echo yes || echo not"

set /p xp=<file.txt
if %xp%==yes (echo %1 is XP) else (echo %1 is 2000)
del file.txt
Автор: Alukardd
Дата сообщения: 26.08.2009 22:21
есть такая трабла принекоторых операциях( видимо ошибочных) батник просто вылетает бесследно... я есть способ предотвратить это? пусть он ругается на экран, я хоть увижу текст ошибки если такой существует!
вылетает кажется при вводе с клавы чисел с запятой например так - 2,3
ваще хз что делать? и как кста ввести такое число? или верное это с плавающей точкой? - 2.3??? все равно надо предотвратить ввод чисел с запятой тогда что б не вылетало...
Автор: 01MDM
Дата сообщения: 26.08.2009 22:27
Alukardd
Покажи пример батника. Так сложно судить об ошибке.
Автор: Alukardd
Дата сообщения: 26.08.2009 22:45
блин когда пишу тупо 2 строчки вам для примера все пашет а в большом коде нет!
вот кароче батник весь
он конечно большой там еще есть call - это только из-за того что была проблема... вылетал батник и я решил что по причине вложенных if - из-за скобочек.
вообще мне не понятна причина вылетания!

Код:
@echo off
rem #-----------------------------------------------------------
:headmenu
rem ##################
rem ## Главное меню ##
rem ##################
cls
color 17
echo.
echo ### Главное меню: ###
echo 1 - Выключение...
echo 2 - Перезагрузка...
echo 3 - Выход.
set /p mod=Выберите требуемое действие:
if %mod%==1 goto menu
if %mod%==2 goto menu
if %mod%==3 goto exit
echo.
echo Вы ввели не допустимый аргумент!
pause
goto headmenu
rem ##################

rem #-----------------------------------------------------------

:menu
rem #####################
rem ## Меню выключения ##
rem #####################
cls
color 17
echo.
echo 1 - Задать таймаут выключения.
echo 2 - Задать точное время и дату выключения.
echo 3 - Назад
set /p when=Выберите режим работы:
if %when%==1 goto enter
if %when%==2 goto enter
if %when%==3 goto headmenu
echo.
echo Вы ввели не допустимый аргумент!
pause
goto menu
rem #####################

rem #-----------------------------------------------------------

:enter
rem ##################
rem ## Диалог ввода ##
rem ##################
cls
color 17
if %when%==1 (
    set /p a=Введите время таймера в минутах:
    set /a buf=a*1
    call :1
)
if %when%==2 (
    set /p data=Введите дату и время выключения/перезагрузки компьютера:
)

rem ##################

rem #-----------------------------------------------------------

:1
rem #################
rem ## Кусок условия ##
rem #################
if %a% NEQ 0 (
    call :2
) else (
    if not defined b set b=0
    goto time
)
exit
rem #################

:2
rem #################
rem ## Кусок условия ##
rem #################
if %buf%==0 (
    goto err
) else (
    set /a b=a*60
    goto time
)
exit
rem #################

rem #-----------------------------------------------------------

:err
rem ##################
rem ## Ошибка ввода ##
rem ##################
cls
color 47
echo.
echo Не допустимое значение!
echo попробуйте еще раз...
pause
goto headmenu

rem #-----------------------------------------------------------
:data
rem ####################
rem ## Обработка даты ##
rem ####################
for /f "tokens=1,2,3 delims=." %%a in ("%data%") do (
if "%%a" LEQ "00" set not_data=1
if "%%a" GTR "31" set not_data=1
...
if not defined not_data echo %data%
)
rem ####################

rem #-----------------------------------------------------------

:time
rem #######################
rem ## Обработка времени ##
rem #######################


rem #######################
if %mod%==1 shutdown /s /f /t %b%
if %mod%==2 shutdown /r /f /t %b%

rem #-----------------------------------------------------------

:exit
rem ###########
rem ## Выход ##
rem ###########
exit
Автор: oshizelly
Дата сообщения: 27.08.2009 00:01
NIKZZZZ

Цитата:
Для регистрации Unlocker достаточно следующего рег файла

Это имеет смысл при наличии портабельной версии, но на оффсайте только инсталлятор. Где бы достать уже распакованный вариант?
Автор: 01MDM
Дата сообщения: 27.08.2009 00:20
Alukardd
Для отладки:
Можно закомментировать или убрать @echo off. Замени все `exit` на `goto:eof` и `shutdown` на `echo shutdown`. Вроде на выходе получаются команды с правильным временем, но почему-то по два-три раза. Где-то ты напутал в `call` и `goto time`. В самом конце батника вместо exit поставь pause

Добавь после @echo off команду setlocal, чтоб не было путаницы с переменными при повторном запуске батника.

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778

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


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