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

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

Автор: MsdLamer
Дата сообщения: 14.08.2007 15:48
спасибо. помогло
Автор: king_stiven
Дата сообщения: 14.08.2007 23:09
Имеется путь, например E:\split\ fgh\fgjkl\ как подсчитать на сколько каталогов ты дапеко от корня диска без goto ? Желательно попроще. В путях встречаются любые знаки, с goto не получается. так как он идёт после нескольких
for %%i in ( ) do (
for %%e in ( ) do (
goto
...
Автор: Elroir
Дата сообщения: 14.08.2007 23:42
king_stiven

Цитата:
Желательно попроще

Кто же знает, что для тебя "попроще"
Можно так:

Код:
for %%i in ( ) do (
for %%e in ( ) do (
set "counter=-1"
set "p=E:\split\&!<>fgh\fgjkl\"
call :count
echo %counter%
..
))
goto :EOF

:count
if "%p%"=="" goto :EOF
if "%p:~0,1%"=="\" set /a "counter+=1"
set "p=%p:~1%"
goto count
Автор: NskRonin
Дата сообщения: 15.08.2007 06:21
Люди подскажите.

Задача следующая - надо замутить скрипт что бы все пользователи кторые забыли закрыть терминал были выкинуты например вечером по рассписанию (это я смогу - с рассписанием)

Коткретно надо убивать процесс 1С - но это уже лудше держать планом б.

Заранее спасибо.
Автор: Maza Faka
Дата сообщения: 15.08.2007 06:48
NskRonin

Код:
taskkill /f /im process.exe
Автор: NskRonin
Дата сообщения: 15.08.2007 07:17
Maza Faka
Спасибо большое.

Но нельзя всеже сделать скрипт завершения (сброса) терминальных пользователей?
Автор: KapralBel
Дата сообщения: 15.08.2007 07:20
NskRonin

Цитата:
Но нельзя всеже сделать скрипт завершения (сброса) терминальных пользователей

А это уже в настройки терминала - там есть это
Автор: NskRonin
Дата сообщения: 15.08.2007 07:34
KapralBel
Спасибо. Наверно я совсем уже не умный стал... Хотя вчера вроде много не пили )

Автор: Maza Faka
Дата сообщения: 15.08.2007 07:35
king_stiven

Цитата:
подсчитать на сколько каталогов ты дапеко от корня

Так сойдёт?

Код:
@echo off
set count=0
set "myPath=C:\split\fgh\fgjkl\"

:begin
for /f "tokens=1* delims=\" %%a in ('echo %myPath%') do (
set myPath=%%b
set var=%%a
if defined myPath (
set /a count+=1
goto begin)
)

echo Stek = %count%
Автор: king_stiven
Дата сообщения: 15.08.2007 08:03

Цитата:
Maza Faka


Цитата:
Elroir


Решил так

Код: for %%b in ( ) do (
for %%c in ( ) do (
call :begin "C:\split\fgh\fgjkl\"

:begin
cd /d %1
set /a count+=1
if /i "%~d1\" neq "%cd%" (
cd ..
goto begin
)
Автор: dardreams
Дата сообщения: 15.08.2007 08:15

Цитата:
Коткретно надо убивать процесс 1С

Помоему если убить 1с будут сбои, надо её аккуратно закрывать.
Автор: NskRonin
Дата сообщения: 15.08.2007 08:19
dardreams
Если этот процес висит уже часов 5 - причем в отключеном пользователе - то, по моему, максимум что случиться не сохраняться данные.
Автор: dardreams
Дата сообщения: 15.08.2007 08:19
А если конкретнее что лучше просто сделать
Код: logoff
Автор: KapralBel
Дата сообщения: 15.08.2007 08:44
dardreams

Если база DBF 7.7 - то худшее - это переиндексация, которую можно выполнить автоматом из батника тут же ночью
В остальных случаях - проблем не будет
А тот кто не сохранил данные тот сам себе злобный буратино
Автор: mbku
Дата сообщения: 15.08.2007 08:48
Пример батника выводящего кто и что читает на моем компьютере.

chcp 1251
for /F "usebackq tokens=1,2,3,4,5,6,7 delims= " %%A IN (`"net file | find ":" | find ".""`) DO call :session %%A %%B %%C %%D %%E %%F %%G

:session
set file=%2
set user_file=%3
echo %user_file% %file% >>1.txt

Батник работает нормально, если в именах файлов (или путей) нет пробелов, нет русских букв “а” и т.п.

Конечно можно извратится типа если %4 не равно 0, то проверить равно ли %5 0 и т.д.. и устаналивать например set file=%2%3%4%, set user_file=%5 и т.п.

Но может фишка в чем-то другом? Т.е. можно ли сделать, чтоб батник оставался таким же коротким?
Автор: dardreams
Дата сообщения: 15.08.2007 08:59

Код:
for /f %a in ('systeminfo ^|find "System Up Time"') do message %a
Автор: Maza Faka
Дата сообщения: 15.08.2007 09:04
dardreams

Цитата:
for /f "delims=" %a in ('systeminfo ^|find "System Up Time"') do message %a



Добавлено:

Цитата:
Но если в имени "C:\split\fgh%\fgjkl%\" есть %, как правильно передать "C:\split\fgh%\fgjkl%\" на :begin?

Никак, cmd посчитает их за начало переменной.
Автор: king_stiven
Дата сообщения: 15.08.2007 09:16
Вот так заработало



Код: for %%i in ( ) do (
for %%e in ( ) do (
set "counter=-1"
set "p=E:\split\&!<>fgh\fgjkl\"
call :count
..
))
goto :EOF

:count
cd /d "%p%"
for %%c in ("%p%") do set letter=%%~dc\
:begin
set /a sum+=1
if /i "%letter%" neq "%cd%" (
cd ..
goto begin
)
Автор: dardreams
Дата сообщения: 15.08.2007 09:43
Возможно ли просто запустить службу через консоль, если у нее стоит DISABLED
Автор: KapralBel
Дата сообщения: 15.08.2007 09:49
dardreams
См. возможности утилиты sc.exe
там есть управление статусом загрузки
Автор: dardreams
Дата сообщения: 15.08.2007 09:49
Службу я имел ввиду сервис обычно messenger отключен по умолчанию, вот хотелось бы не лазить в services.msc а сделать через консоль
Автор: dominiksus
Дата сообщения: 15.08.2007 09:59
01MDM
зделал такой БАТ:

Код: @ECHO OFF
sleep -t 10
for /f "tokens=9 delims== " %%i in ('ping google.de ^| find "TTL"') do (
set PingGood=%%i
)
if %PingGood%==TTL (
goto TimeUpdate
) else (
GOTO:EOF
)
:TimeUpdate
net time /setsntp:"ntp2.cs.wisc.edu ntp1.cs.wisc.edu"
w32tm /resync
Автор: dardreams
Дата сообщения: 15.08.2007 10:04

Цитата:
См. возможности утилиты sc.exe

Незнал про такую, спасибо. только вот то что я хотел я там не нашел, там есть запуск, установка, приотсановка, а страт тип там не было
Автор: KapralBel
Дата сообщения: 15.08.2007 10:11
dardreams
Код:
sc config messenger start= demand
Net start messenger
....
net stop messenger
sc config messenger start= disabled
Автор: dardreams
Дата сообщения: 15.08.2007 10:16
KapralBel
Спасибо, я нашел но она у меня из пробела не работала этого


Цитата:
sc config messenger start=_demand


спасибо. еще раз !!!

Добавлено:
А есть чтонибудь чтобы можно было запуск приложения на удаленом компе, что то вроде psexec только стандартное ?
Автор: SPV_Ed
Дата сообщения: 15.08.2007 11:18
Всем доброго времени суток.
Хочу средствами cmd реализовать следуюшее: в директории есть файлы с определенным расширением, нужно вывести на консоль список этих файлов в виде "номер файла: имя файла" и при вводе номера нужного файла передать этот файл параметром нужной программе. Файлы вывел, ввод нужного работает, но теперь не могу понять как по введенному номеру определить нужный файл. В языках более высокого уровня это решилось бы простенькой конструкцией case, но как средствами cmd?

Код: @echo off
setlocal enabledelayedexpansion
set count=0
for /f "tokens=1 delims=." %%i in ('dir /a:-d /b *.mst') do (
set /a count+=1
echo !count!^: %%i
)
set /p choice=": "
Автор: KapralBel
Дата сообщения: 15.08.2007 11:49
dardreams

Цитата:
А есть чтонибудь чтобы можно было запуск приложения на удаленом компе, что то вроде psexec только стандартное

Есть

Код: sc \\Srv1 config messenger start= demand
Автор: igor_andreev
Дата сообщения: 15.08.2007 11:50
SPV_Ed

Цитата:
Хочу средствами cmd реализовать следуюшее: в директории есть файлы с определенным расширением, нужно вывести на консоль список этих файлов в виде "номер файла: имя файла" и при вводе номера нужного файла передать этот файл параметром нужной программе.

тынц

Автор: 01MDM
Дата сообщения: 15.08.2007 13:28
dominiksus


Код:
@ECHO OFF
sleep -t 10
ping google.com >nul
if %errorlevel%==1 (goto:eof) else (w32tm /resync)
Автор: wolf0425
Дата сообщения: 15.08.2007 16:49
А в XP можно поменять обои из командной строки?
В смысле - встроенными средствами, не привлекая какой-нибудь IrfanView?

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566

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


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