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

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

Автор: Alukardd
Дата сообщения: 27.08.2009 01:24
01MDM
впринципе все так и было в режиме отладки, но для работы все привел в должный вид...
и pause было и @echo off было в коменте... call работает вроде как надо, если вводить целые числа или буквы... если же ввести число с плавающей точкой тогда он от него воспримет только целую часть... а если с , то он просто бесследно исчезает!!!
setlocal добавил, exit заменил на pause
вот она суть дела-то!

вопрос о причине вылета при отсутсвии 'call' и наличии вложенных 'if' по прежнему очень интересует... от чего это зависит? блок выглядит так без call

Код:
if %when%==1 (
    set /p a=Введите время таймера в минутах:
    set /a buf=a*1
    if %a% NEQ 0 (
     if %buf%==0 (
     goto err
) else (
     set /a b=a*60
     goto time
)
) else (
     if not defined b set b=0
     goto time
)
)
Автор: NIKZZZZ
Дата сообщения: 27.08.2009 03:02
oshizelly

Цитата:
Это имеет смысл при наличии портабельной версии, но на оффсайте только инсталлятор.

Вот версия UnLocker без инсталлятора.
Для работы необходимо выполнить Register.bat, при этом unlocker , будет встроен в контекстное меню проводника.
Если требуется только ком. строка вот батник "портабельной версии" unlocker.exe .


Код: Reg.exe export "HKLM\Software\Classes\CLSID\{DDE4BEEB-DDE6-48fd-8EB5-035C09923F83}\InProcServer32" "%Temp%\$Undo$.reg"
Reg.exe add "HKLM\Software\Classes\CLSID\{DDE4BEEB-DDE6-48fd-8EB5-035C09923F83}\InProcServer32" /v "" /t REG_SZ /d "%~dp0unlockercom.dll" /f
Reg.exe add "HKLM\Software\Classes\CLSID\{DDE4BEEB-DDE6-48fd-8EB5-035C09923F83}\InProcServer32" /v "ThreadingModel" /t REG_SZ /d "Apartment" /f
unlocker.exe %1 %2 %3 %4 %5 %6 %7 %8 %9
Reg.exe delete "HKLM\Software\Classes\CLSID\{DDE4BEEB-DDE6-48fd-8EB5-035C09923F83}\InProcServer32"
if exist "%Temp%\$Undo$.reg" Reg.exe import "HKLM\Software\Classes\CLSID\{DDE4BEEB-DDE6-48fd-8EB5-035C09923F83}\InProcServer32" "%Temp%\$Undo$.reg"
Автор: tolyn77
Дата сообщения: 27.08.2009 07:10
01MDM
мне в принципе без разницы как лишь бы можно было получить с удаленной машины версию ОС и потом ее использовать
в Твоем примере ошибка появляется
"Непредвиденное появление: (echo."
Автор: 01MDM
Дата сообщения: 27.08.2009 07:42
tolyn77
Убери последнюю строчку `del file.txt` и посмотри что в него пишется и пишется ли вообще.
Я пробовал на домашних компьютерах, все работало.

Автор: tolyn77
Дата сообщения: 27.08.2009 08:31
01MDM
именно так и сделал, все пишет правильно
что то с if не правильно
Автор: 01MDM
Дата сообщения: 27.08.2009 09:56
tolyn77

Цитата:
что то с if не правильно

У меня тоже как-то было криво, попробуй так: if "%xp%"=="yes " (...
Пробел после yes. И кавычки в условии сравнения.

Или вообще без записи в файл, просто его наличие, проверь:

Код:
psexec %1 -s cmd /c "ver | findstr "XP" 1>nul && cd.>file.txt"
if exist file.txt (
echo %1 is XP
del file.txt
) else (
echo %1 is 2000
)
Автор: PetrK
Дата сообщения: 27.08.2009 10:45
задача отслеживать убегание времени на компьютере относительно NTP-сервера в локальной сети. написал bat-файл


Код: :start
rem пишем в файл время проверки разбега
echo w32tm /monitor /computers:192.168.0.1 started at %DATE% %TIME% >> w32tm_%DATE%.log
rem проверяем разбег
w32tm /monitor /computers:192.168.0.1 >> w32tm_%DATE%.log
rem регулируем задержку до следующей проверки
ping -n 10 192.168.0.1 >> server_boot_%DATE%.log
rem идем в начало
goto start
Автор: tolyn77
Дата сообщения: 27.08.2009 10:47
01MDM
всё спасибо нашел пару ошибок вот так вот у меня работает

Код:
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
Автор: DDNMazafaka
Дата сообщения: 27.08.2009 11:04
Есть задача следующего характера: необходим скрипт который будет давать пользователю домена Work права на запись и чтение в определенную папку на его локальном ПК. Алгоритм примерно такой:
1. Пользователь зашел в домен Work
2. Считывается логин под которым он зашел.
3. Проверяется версия ОС, если видновс 98 - завершить скрипт, если виндовс 2000/ХР - продолжить выполнение
4. Проверить существует ли на HDD папка c:\program files\test. Если существует то пункт 5, если нет - завершить.
5. От имени администратора(естественно с указанием админского пароля который как-бы видеть юзер не должен) дать данному пользователю (считанному в п.1.) права на чтение/запись в папку test по вышеуказанному пути.
6. Завершить автоматически

Заранее благодарю за помошь. Созданный батник хочу навязать через доменную политику.
PS: Может это просто можно сделать через доменную политику разрешив всем юзерам доступ к конкретной папке?
Автор: aisboard
Дата сообщения: 27.08.2009 11:05
Помогите, как узнать в батнике тип ОС (сервер или раб.станция)?
Переменная OS и там и там дает Windows_NT, команда VER дает версию, но чтоб отличить раб. станцию (XP,Vista,Win7) от сервера (2003,2008) придется перебирать все варианты написания версий?
Есть более простой способ?
Автор: oshizelly
Дата сообщения: 27.08.2009 11:06
NIKZZZZ
Цитата:
Вот версия UnLocker без инсталлятора.
Для работы необходимо выполнить Register.bat, при этом unlocker , будет встроен в контекстное меню проводника.

Большое спасибо, буду проверять.
Это, как я понимаю, последняя версия 1.8.7 ?
Автор: aisboard
Дата сообщения: 27.08.2009 11:15
to DDNMazafaka

1. Молодец
2. переменная окружения USERNAME
3. проверяем переменную окружения OS , в случае 2000/ХР она = Windows_NT
4. if exist c:\program files\test ... бла-бла-бла
5. runas .... cacls ... - примерно так, параметры команд посмотри сам
6. сам завершится


Ну я бы делал примерно так, думаю скрипт сам напишешь?
Автор: tolyn77
Дата сообщения: 27.08.2009 11:20
вот есть еще один скрипт

Код:
for /f %%i in (complist) do (
set "comp=%%i"
rem for /f "tokens=2* delims=: " %%i in ('sc %comp% query state^= all ^| findstr "SERVICE_NAME"') do (
for /f "tokens=2* delims=: " %%i in ('sc %comp% query Messenger ^| findstr "SERVICE_NAME"') do (
set "name=%%i"
for /f "tokens=3* delims=: " %%k in ('sc %comp% qc %%i ^| findstr "START_TYPE"') do (
set "starttype=%%k"
)
for /f "tokens=3* delims=: " %%k in ('sc %comp% query %%i ^| findstr "STATE"') do (
set "statetype=%%k"
)
call:report
)
goto:eof

:report
echo %comp% %name% - %starttype% %statetype%
)
Автор: DDNMazafaka
Дата сообщения: 27.08.2009 11:58

Цитата:
to DDNMazafaka
 
1. Молодец
2. переменная окружения USERNAME
3. проверяем переменную окружения OS , в случае 2000/ХР она = Windows_NT
4. if exist c:\program files\test   ... бла-бла-бла
5. runas .... cacls ...   - примерно так, параметры команд посмотри сам
6. сам завершится
 
 
Ну я бы делал примерно так, думаю скрипт сам напишешь?


Ну если бы я помнил синтаксис, то тут бы вопрос не задавал
Автор: NIKZZZZ
Дата сообщения: 27.08.2009 17:19
oshizelly

Цитата:
последняя версия 1.8.7 ?

Да.
Автор: postullat
Дата сообщения: 27.08.2009 19:26
Добрий день. Меня интересует следующая задача.
Есть много изображений. Их всех нужно перевернуть против часовой стрелки і по 5 штук загнать у вордовские документи, которие нужно перед тем создать в нужном количестве. Можно ли на батнике такое зделать? Помогите плиз. Я чото пробивал но не работает. А пробивал вот так:


echo Ctrl D | j.jpg
rem ето типа оно должно перевернуть картинку
copy d.doc j.jpg
rem ето оно должно копировать картинку у ворд. воно и копирует токо у ворде не отображает ее
Автор: fd1136
Дата сообщения: 27.08.2009 21:15
oshizelly
Ты проверил действие hidcon?

Добавлено:

Цитата:
echo Ctrl D | j.jpg
rem ето типа оно должно перевернуть картинку
copy d.doc j.jpg
rem ето оно должно копировать картинку у ворд. воно и копирует токо у ворде не отображает ее

Это бред ....
Автор: niko7
Дата сообщения: 28.08.2009 08:09
Подскажите такая задача есть папка в ней много разных папок в них тоже папки,
различные файлы надо из всех этих папок удалить *.ini . Подскажите, как это сделать на bat?
Автор: Tathree
Дата сообщения: 28.08.2009 10:29
Подскажите , есть задача - не регулярная остановка и старт сервиса (рендер к 3Д пакету) . Возможно реализовать через .bat ?
Автор: fd1136
Дата сообщения: 28.08.2009 10:32
niko7


Цитата:
надо из всех этих папок удалить *.ini . Подскажите, как это сделать на bat?



Код:
del /F /Q /S *.ini
или
erase /F /Q /S *.ini
Автор: PetrK
Дата сообщения: 28.08.2009 10:45
задачу отслеживать убегания времени на компьютере относительно NTP-сервера в локальной сети можно решить намного проще. вдруг кому понадобиться.


Код: w32tm /stripchart /computer:192.168.0.1 /period:3 /dataonly
Автор: Tathree
Дата сообщения: 28.08.2009 12:13
fd1136
Спасибо , получилось .
Автор: Alukardd
Дата сообщения: 28.08.2009 12:56
01MDM
впринципе все так и было в режиме отладки, но для работы все привел в должный вид...
и pause было и @echo off было в коменте... call работает вроде как надо, если вводить целые числа или буквы... если же ввести число с плавающей точкой тогда он от него воспримет только целую часть... а если с , то он просто бесследно исчезает!!!
setlocal добавил, exit заменил на pause
вот она суть дела-то!

вопрос о причине вылета при отсутсвии 'call' и наличии вложенных 'if' по прежнему очень интересует... от чего это зависит? блок выглядит так без call

Код:
if %when%==1 (
set /p a=Введите время таймера в минутах:
set /a buf=a*1
if %a% NEQ 0 (
if %buf%==0 (
goto err
) else (
set /a b=a*60
goto time
)
) else (
if not defined b set b=0
goto time
)
)
Автор: RcT
Дата сообщения: 28.08.2009 14:43
Есть файл со списком строк. Этот файл подается на вход батнику который для каждой строки этого файла выполняет определенную команду. Как вывести на экран процесс выполнения работы срипта? Например чтобы были сообщения типа:
Код: Выполнено (1 из 100)
Выполнено (1 из 100)
Выполнено (2 из 100)
Выполнено (3 из 100)
.....
Выполнено (100 из 100)
Автор: anachrom
Дата сообщения: 28.08.2009 15:15
Как можно одновременно вывести результаты и на монитор и в файл.
Например:
ping 192.168.0.1
показывает результат, а
ping 192.168.0.1 >> fail.txt
записывает результат в fail.txt.
А вот одновременно и то и другое? Дублирование команды не подходит (т.к. простым пингом дело не кончается, и время работы батника увеличивается вдвое).
Автор: NIKZZZZ
Дата сообщения: 28.08.2009 15:34
anachrom

Цитата:
Как можно одновременно вывести результаты и на монитор и в файл.



Код: ping 192.168.0.1 > temp.txt
type temp.txt>>fail.txt
type temp.txt
Автор: sorbon
Дата сообщения: 28.08.2009 16:35
Для родных и близких сделал универсальный образ xp на LiveDVD, с ярлыком батника на рабочем столе для ghost. Хочу перед заливкой прописать перенос папок Мои документы, Рабочий стол, в папку на диск D, при использовании переменной USERPROFILE файлы копируются с рам диска. Компьютер сестры далеко, имя профиля не знаю, знаю что в папке Мои документы фотки. Что прописать чтобы копировались с диска C: ?
Автор: anachrom
Дата сообщения: 28.08.2009 18:43
А одновременный вывод? Или это нереально?
NIKZZZZ, Ваш вариант конечно хоть и делает вывод, но с запозданием (отработанную команду) и лишней информацией в виде дублирования команды. А если вначале указать echo off то команда вообще неуказывается.
Автор: NIKZZZZ
Дата сообщения: 28.08.2009 19:56
anachrom

Цитата:
А одновременный вывод? Или это нереально?

В свое время писал такую утилиту.

Синтаксис:
ping 192.168.0.1|FileWrite.exe temp.txt

Утилита дописывает информацию в файл и одновременно выводит ее на консоль.



Автор: postullatt
Дата сообщения: 28.08.2009 20:18
Добрий день. Меня интересует следующая задача.
Есть много изображений. Их всех нужно перевернуть против часовой стрелки і по 5 штук загнать у вордовские документи, которие нужно перед тем создать в нужном количестве. Можно ли на батнике такое зделать? Помогите плиз. Я чото пробивал но не работает. А пробивал вот так:


echo Ctrl D | j.jpg
rem ето типа оно должно перевернуть картинку
copy d.doc j.jpg
rem ето оно должно копировать картинку у ворд. воно и копирует токо у ворде не отображает ее

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778

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


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