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

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

Автор: wolf0425
Дата сообщения: 10.04.2010 23:43
rovergor
Цитата:
Подскажите батник чтобы он проверял размер файла (равно 0 или больше), если равно 0 запуск exe файла, если нет копирует файл с 0 размером в нужное место и потом запуск exe файла.


Код: @echo off
call :test "filename.ext"
exit
:test
if not exist %1 echo file not exist & exit
if %~z1 GTR 0 echo size= %~z1 & rem tyt sam vpiwi 4ego kyda kopirovat'
program.exe
Автор: rovergor
Дата сообщения: 11.04.2010 12:44
wolf0425 Спасибо за код.

Подскажите еще:
1. Как сделать чтобы не только команда копирования но и еще несколько соответствующих условию выполнялись после проверки размера файла?
2. После запуска exe файла остается открытым окно командера, как сделать чтобы оно закрывалось автоматически?
3. Есть ли возможность запускать командер в скрытом режиме, чтобы не было видно не только исполняемых команд но и самого окна?
Автор: wolf0425
Дата сообщения: 11.04.2010 14:14

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

Код: :test
if not exist %1 echo file not exist & exit
if %~z1 EQU 0 goto :size0
rem тут
rem сам
rem впиши
:size0
program.exe
Автор: rovergor
Дата сообщения: 11.04.2010 16:17
wolf0425 Спасибо еще раз все заработало.
И всетаки по третьему пункту, пробовал запуск чарез hstart и CMDOW всеравно вначале окно выскакивает.
Автор: slech
Дата сообщения: 11.04.2010 16:52
подскажите пожалуйста что не так ?

Цитата:

type %yahoo_log% | find /I /c "451 VSS-IP" >%temp%
set /p T451=<%temp%
::
echo %T451%

D:\>echo 3
3

вот так всё работает нормально, но изначально нужно без T

Цитата:

type %yahoo_log% | find /I /c "451 VSS-IP" >%temp%
set /p 451=<%temp%
::
echo %451%

D:\>echo 51
51

С чем может быть связана неработоспособность, set /p 451=<%temp%, без буквы T ?

Cпасибо


ух ты у меня 3333 !
Автор: SaB72
Дата сообщения: 11.04.2010 17:12
поискал... не нашел...

можно ли в винде (в частности XP) как-то отключить и включить обычное сетевое подключение из пакетника?
что-то типа ifup/ifdown
Автор: king_stiven
Дата сообщения: 11.04.2010 17:18
SaB72
я использую утиль nircmd.exe

nircmd.exe rasdial adsl
Автор: METAJIJI
Дата сообщения: 11.04.2010 17:45

Цитата:
можно ли в винде (в частности XP) как-то отключить и включить обычное сетевое подключение из пакетника?
что-то типа ifup/ifdown


Код: netsh interface set interface name="Подключение по локальной сети" admin=DISABLED
Автор: wolf0425
Дата сообщения: 11.04.2010 18:03

Цитата:
С чем может быть связана неработоспособность, set /p 451=<%temp%, без буквы T ?

не работает потому, что винды не понимают переменных с именами, начинающимися с цифры.
Ну то есть не совсем не понимают - присвоение не ругается и в список переменных они попадают...
но вот замещения %451% значением - при исполнении строк происходит не так как тебе хочется, %4 - трактуется как четвертый параметр батника, а вовсе не как начало имени переменной.

кстати а чему у тебя равняется %temp% ?
вообще-то такая переменная системой используется и её значение - каталог, а не файл. тоже нарываешься на сложности.
Автор: 01MDM
Дата сообщения: 11.04.2010 21:59
ivn1978

Цитата:
как сделать так, чтобы при отсутствии параметра в реестре (т.е. при наличии ошибки) информация об этом не выводилась в консоль?



Код:
1>nul 2>&1 reg query ......
Автор: slech
Дата сообщения: 11.04.2010 22:15
wolf0425

Цитата:
не работает потому, что винды не понимают переменных с именами, начинающимися с цифры.

спасибо, поправил у себя. теперь всё работает.


Цитата:
кстати а чему у тебя равняется %temp% ?
вообще-то такая переменная системой используется и её значение - каталог, а не файл. тоже нарываешься на сложности.

set temp=temp.cnt
это текстовый файл, я его использую для того что бы присвоить значение полученное в результате find своей переменной. пока проблем небыло.

Цитата:

type %yahoo_log% | find /I /c "postmaster.yahoo.com" >%temp%
set /p Yahoo_all=<%temp%
echo Yahoo_all = %Yahoo_all% >>%report%
Автор: wolf0425
Дата сообщения: 11.04.2010 22:22

Цитата:
это текстовый файл, я его использую для того что бы присвоить значение полученное в результате find своей переменной.
а нафига там файл?

Код: for /f %%a in ('find /i /c "postmaster.yahoo.com" ^< %yahoo_log% ') do set "Yahoo_all=%%a"
1>>%report% echo Yahoo_all = %Yahoo_all%
Автор: slech
Дата сообщения: 11.04.2010 22:30

Цитата:
а нафига там файл?

потому что я уже однажды тут вроде спрашивал и это мне ответили.
попробую твой способ, спасибо.
Автор: wolf0425
Дата сообщения: 11.04.2010 23:13

Цитата:
а с этим нет
| findstr /i KMService
что неудивительно - тут stdout нужен поиску
так наверно:
Код: 2>nul REG QUERY "HKLM\SYSTEM\CurrentControlSet\Services\KMService" /v DisplayName | findstr /i KMService
Автор: SaB72
Дата сообщения: 12.04.2010 00:26

Цитата:
netsh interface set interface name="Подключение по локальной сети" admin=DISABLED

в Win 7 работает
в XP выдаёт Недопустимый синтаксис использования команды
перечитал хелп по ней
перепробовал варианты
переименовать интерфейс можно
отрубить нет...
странно
Автор: duh_S
Дата сообщения: 12.04.2010 01:01
подскажите плз:
есть файлик, в нем нужно находить текст по условию и запускать внешний батник передав ему текст из файла, например:


Код: прогр №4(657)
размер=5Мб, версия
errlvl = 3 Неверная версия
errlvl = 3 № 17347 от 20100226 (скачано)
errlvl = 3 № 813814 от 20100226 (передано)
ошибка
errlvl = 6 ошибка файла от 26/02/2010
Автор: wolf0425
Дата сообщения: 12.04.2010 01:02

Цитата:
с двойкой наоборот в консоли показывается вся ветка реестра...
есть еще соображения?
не вся, а только прошедшая через поиск. и будет это только если ключ DisplayName имеет значение KMService
если и это лишнее -
Код: 2>nul REG QUERY "HKLM\SYSTEM\CurrentControlSet\Services\KMService" /v DisplayName | findstr /i KMService 1>nul
Автор: wolf0425
Дата сообщения: 12.04.2010 08:51

Цитата:
как скрыть сообщения от команды REG ADD...
а что, 1>nul reg add ... - не всё скрывает?
Автор: wolf0425
Дата сообщения: 12.04.2010 11:09

Цитата:
нет. выводится сообщение об успешном завершении операции
ну значит 1>nul 2>nul reg ...
или 1>nul 2>&1 reg как тебе выше советовали для REG QUERY без поиска.
Автор: Strogg
Дата сообщения: 12.04.2010 22:05
Стоит такая задача. Хочу, чтобы при запуске DVD (в данном случае игры Quake4) из autorun.inf перед установкой игры в файл Hosts, из батника записывалась бы блокирующая игровой сервер команда, а при повторном запуске DVD эта команда записи игнорировалась бы.
Как мог накатал вот такой код, но в нем ошибки.

Код: @echo on
@find /i "127.0.0.1 q4master.idsoftware.com" %SystemRoot%\system32\drivers\etc\hosts & if errorlevel 1 (echo Сервер уже заблокирован!)
@find /i "127.0.0.1 q4master.idsoftware.com" %SystemRoot%\system32\drivers\etc\hosts & if exist (здесь чего-то не хватает) "127.0.0.1 q4master.idsoftware.com" goto exit
@echo Завершаю работу...
:exit /b 1
@attrib -r -a -s -h %SystemRoot%\system32\drivers\etc\hosts
@echo 127.0.0.1 q4master.idsoftware.com >> "%SystemRoot%\system32\drivers\etc\hosts"
@attrib +r +a +s %SystemRoot%\system32\drivers\etc\hosts
@echo Сервер заблокирован!
Автор: bredonosec
Дата сообщения: 12.04.2010 23:42
wolf0425

Цитата:
в моем коде задействованы %%i j 1-5 в верхнем куске и %%a в нижнем. исторически получилось.

дошло.
вопрос такой, в том, сотворенном http://forum.ru-board.com/topic.cgi?forum=62&topic=19668&start=838&limit=1&m=1#1
- как-то странно отрабатывает.. я пауз напихал, выявил, что соединяет, маппит диск нормалоьно, но команду копирования - молчит неск секунд и сообщает, что путь не найден. Локальный файл на месте. удаленные папки тож. Что не так? синтаксис перепроверял по справочникам - думал, мож тупую ошибку сделал где.. - нет. не нашел.

днем не могу - тут на работе отрезали борду талпаёпы... (или изучать тоннелинг, чтоб им же работу делать)
Автор: wolf0425
Дата сообщения: 13.04.2010 00:06

Цитата:
я пауз напихал, выявил, что соединяет, маппит диск нормалоьно, но команду копирования - молчит неск секунд и сообщает, что путь не найден.
set "u_path=\\m:\documents and settings"
ну и нафига там \\ в начале, если как диск замапил?

также проверь как у тебя папка то называется - \Favorites\ или \Избранное\ (имеет смысл при ошибке копирования в первую - копировать во вторую)


Автор: wolf0425
Дата сообщения: 13.04.2010 00:36

Цитата:
из батника записывалась бы блокирующая игровой сервер команда, а при повторном запуске DVD эта команда записи игнорировалась бы.
Как-то так:

Код: @echo off
chcp 1251 >nul
type %SystemRoot%\system32\drivers\etc\hosts | find /i "q4master.idsoftware.com" | find "127.0.0.1" >nul && echo Сервер уже заблокирован! && exit

1>>%SystemRoot%\system32\drivers\etc\hosts (echo 127.0.0.1    q4master.idsoftware.com) && echo Сервер заблокирован! || echo Ошибка записи!
Автор: Strogg
Дата сообщения: 13.04.2010 08:43
wolf0425

Цитата:
Как-то так:

Код:@echo off
chcp 1251 >nul
type %SystemRoot%\system32\drivers\etc\hosts | find /i "q4master.idsoftware.com" | find "127.0.0.1" >nul && echo Сервер уже заблокирован! && exit

1>>%SystemRoot%\system32\drivers\etc\hosts (echo 127.0.0.1 q4master.idsoftware.com) && echo Сервер заблокирован! || echo Ошибка записи!

Увы, код совсем не работает. Выдается последнее сообщение и запись не производится
Автор: wolf0425
Дата сообщения: 13.04.2010 09:10

Цитата:
Увы, код совсем не работает. Выдается последнее сообщение
если ты перед этим использовал свой батник - ты лишних атрибутов файлу понаставил. снимай. в смысле - запусти один раз

Код: attrib -r -a -s -h %SystemRoot%\system32\drivers\etc\hosts
Автор: Strogg
Дата сообщения: 13.04.2010 09:29
wolf0425

Цитата:
если ты перед этим использовал свой батник - ты лишних атрибутов файлу понаставил. снимай. в смысле - запусти один раз

Пробовал на файле без всяких атрибутов и результат - 0. Проверял пути, даже ставил кавычки и скобки для команд Echo, все одно - код не работает.
Автор: wolf0425
Дата сообщения: 13.04.2010 09:40
Strogg странно всё это, у меня исправно работает, сообщение "Ошибка записи!" пишется только когда не хватает прав для записи в %SystemRoot%\system32\drivers\etc\hosts

У тебя операционка то какая?
Автор: Strogg
Дата сообщения: 13.04.2010 09:47
wolf0425
XP СП3
Автор: wolf0425
Дата сообщения: 13.04.2010 09:56
Strogg аналогично. eng.
прав то на изменение файла хватает? что пишет строкой выше чем Ошибка записи! ?
Автор: Strogg
Дата сообщения: 13.04.2010 10:14
wolf0425
Включил echo on.
Кроме ошибки записи больше ровным счетом ничего не пишет. Изменил кодовую страницу на 866 все без толку. Даже сменил русский текст на инглиш - не помогает.
Убрал переменную %systemroot% и сменил на абсолютный путь, все то же.
В конце концов тупо написал простейший батник

Код: echo test >> %SystemRoot%\system32\drivers\etc\hosts

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132

Предыдущая тема: XP не видит второй раздел на съемном USB-HDD


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