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

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

Автор: nonar
Дата сообщения: 06.01.2009 13:00
Нужно автоматизировать копирование файлов из разных директорий в одну с заменой уже существующих в ней файлов...

Помогите пожалуйста создать батник..
Автор: KapralBel
Дата сообщения: 06.01.2009 14:31
nonar
robocopy - самое лучшее решение
Автор: GKV
Дата сообщения: 06.01.2009 17:39
Вышло так, что свой комп с выделенкой приходится использовать как RAS сервер, причем для входящих dial-up соединений используется обратный звонок (call back). (Т.е. мой модем перезванивает обоненту.)
Все работает, но проблема заключается в следующем: если удаленный юзер сам (либо по какой-то причине) разрывает соединение, мой модем не вешает трубку, т.е. так и остается висеть на линии. Соответственно повторного соединения установить не удается.

Возникает вопрос, как это исправить в винде?

Либо помогите написать батник:

1. Происходит проверка состояния RAS подключения (не знаю команды) и если оно активно переходит в п.2 если нет проверяется снова.
2. Выполняется команда ping 192.168.1.33 для проверки видимости удаленного компа (например раз в 1-2 минуты).
3. Соответственно если происходит сбой в соединении и комп не виден выполняется разрыв активного входящего соединения командой rasdial "Internet" /d.
4. Переходим в п.1
________________________

Как написать батник, чтобы разрывать RAS соединение на удаленном компе с соответствующими правами?
________________________

Зарание благодарен!
Автор: vu1tur
Дата сообщения: 06.01.2009 18:14
GKV
Может таки проще разрывать соединение по таймауту при неактивности, чем городить такой костыль?
Автор: GKV
Дата сообщения: 06.01.2009 19:12
vu1tur
В настройках соединения опция неактивна.
Вообще я думал что модем автоматом должен бы сбрасываться при коротких гудках, но что-то не так. (может из-за того что он CallBack делает).
Автор: vu1tur
Дата сообщения: 06.01.2009 20:51
GKV
проблемы с настройкой — это всё же в другой раздел
А если решать батником, то вот есть пример выполнения команд по результату команды ping. Его можно банально через шедулер запускать.
Автор: GKV
Дата сообщения: 06.01.2009 22:00
Написал следующее, но что-то не работает (в синтаксисе не силен)

Код:
@Echo
:EOF
Ping -n 5 192.168.1.33 >Nul
If ErrorLevel 1 (Goto :EOF)
If ErrorLevel 0 (
    rasdial "Internet" /d
    GoTo :EOF
)
GoTo :EOF
Автор: vu1tur
Дата сообщения: 06.01.2009 23:05
GKV

Код:
@echo off
for /f %%a in ('rasdial ^| findstr "Internet"') do set "connstr=%%a"
if %connstr% neq Internet ( goto :eof )
ping -n 1 192.168.1.33 >nul
If ErrorLevel 1 (echo rasdial "Internet" /d && goto :eof)
If ErrorLevel 0 (goto :eof)
:eof
Автор: kirik64
Дата сообщения: 07.01.2009 02:15

Цитата:
Подскажите плз, как при выполнении батника определить, запущен ли определенный процесс и, если запущен, приостановить батник до завершения процесса?

Поскольку никто не отвечает, поразмышляю сам...
Приостановить, видимо, невозможно.
Задача: запускается служба, затем стартует FineReader.exe, передает управление Finemodel.exe и сам по себе закрывается. Когда закрывается Finemodel.exe, останавливается и служба. Вот мое рабочее, но корявое решение, хотелось бы сделать его более элегантным с помощью гуру /не нравится в первую очередь постоянное обращение к find.exe, да и петля /

Код: @echo OFF
net start ABBYY.Licensing.FineReader.Professional.9.0
start FineReader.exe

:LOOP
tasklist | find "Finemodel.exe" && goto LOOP

net stop ABBYY.Licensing.FineReader.Professional.9.0
exit
Автор: igor_andreev
Дата сообщения: 07.01.2009 05:11
kirik64

Цитата:
Поскольку никто не отвечает,

Было это уже просто, если почитаешь предыдущие ветки по батникам - найдешь

Цитата:
не нравится в первую очередь постоянное обращение к find.exe, да и петля

Задача не стоит, я думаю, сделать все стандартными средствами ОС? Раз уж поставил такую "дуру", как файнридер, скачай еще архивчик на 40 Kb
http://www.teamcti.com/pview/pv_5_2_2.zip
у pv.exe есть опция -x(дождаться окончания процесса) или -xa(всех процессов)

Код:
@echo off
echo wait for "notepad" process complete
pv -xa notepad.exe
echo all notepads closed
pause
Автор: kirik64
Дата сообщения: 07.01.2009 11:15
igor_andreev,

Цитата:
если почитаешь предыдущие ветки по батникам - найдешь

500+ страниц. Я уж лучше у Роба ван дер Вуде посмотрю...
За утилитку спс, интересная, пригодится... Просто из спортинтереса хотелось

Цитата:
сделать все стандартными средствами ОС


Автор: Rotorina
Дата сообщения: 08.01.2009 11:32
Всем привет!
Обращался с просьбой, никто не отреагировал...
Разобрался со своей задачей частично, но не могу выполнить следующее:


- как скопировать из каталога№1 самый свежий файл в другой каталог№2 и удалить при этом из каталога №2 файлик, который был скопирован прошлый раз.
Файлы имеют вид 1cBackUp_yymmddhhmin.rar (Например: 1cBackUp_200901051200.rar)
Автор: Nagual
Дата сообщения: 08.01.2009 17:05
Rotorina
Код:
for %%a in (dir/b "каталога№1\*.rar") do copy "каталога№1\%%a" "каталога№2\"&@echo %%a>f.log
for /f "delims=" %%a in (f.log) do del/q "каталога№2\%%a"
Автор: Rotorina
Дата сообщения: 09.01.2009 07:56
Nagual
Создал два каталога 11 ( в каталоге 11 два файла: 1cBackUp_200901061200.rar; 1cBackUp_200901051200.rar) и 22, запускаю батник:

Код: for %%a in (dir/b "11\*.rar") do copy "11\%%a" "22\"&@echo %%a>f.log
for /f "delims=" %%a in (f.log) do del/q "22\%%a"
Автор: Elroir
Дата сообщения: 09.01.2009 21:18
Rotorina

Видимо, Nagual очень спешил, когда писал тебе код
Вот мой вариант:

Код:
@echo off
for /f "tokens=*" %%a in ('dir /b /o-d /tc "[дир1]\1cBackUp_*.rar"') do set "fname=%%a" & goto next
:next
copy "[дир1]\%fname%" "[дир2]\">nul
for /f "skip=1 tokens=*" %%a in ('dir /b /o-d /tc "[дир2]\1cBackUp_*.rar"') do del "[дир2]\%%a" & goto :EOF
Автор: Commfort191
Дата сообщения: 10.01.2009 05:52
Видел одну задачу поменять в файле test.ini определенные строки, но решения готового так и не нашел, вот задача:
по пути %USERPROFILE%\Application Data\Prog\Config
имеется файл test.ini
в данном файле требуется изменить:
[Main]
Server_address=192.168.0.1
Server_port=1111

на
[Main]
Server_address=192.168.0.2
Server_port=2222

как с помощью батника такое сделать ??
Автор: 01MDM
Дата сообщения: 10.01.2009 10:58
Commfort191
С помощью gsar.exe:

Код:
@echo off
pushd "%USERPROFILE%\Application Data\Prog\Config"
gsar -s"Server_address=192.168.0.1" -r"Server_address=192.168.0.2" -o test.ini
gsar -s"Server_port=1111" -r"Server_port=2222" -o test.ini
popd
Автор: Commfort191
Дата сообщения: 10.01.2009 16:50

Цитата:
Commfort191
С помощью gsar.exe:

Код:

@echo off
pushd "%USERPROFILE%\Application Data\Prog\Config"
gsar -s"Server_address=192.168.0.1" -r"Server_address=192.168.0.2" -o test.ini
gsar -s"Server_port=1111" -r"Server_port=2222" -o test.ini
popd


странно . но никаких изменений не произошло ((
Автор: johnmar
Дата сообщения: 10.01.2009 17:40
Нужна программа наподобие FileDisk, чтобы монтировать виртуальные диски из командной строки (FileDisk не поддерживает образы CD/DVD в UDF, в остальном полностью устраивает)
Автор: KapralBel
Дата сообщения: 10.01.2009 17:51
johnmar
В Alcohol - есть утилита комм.строки
Автор: NIKZZZZ
Дата сообщения: 10.01.2009 18:27
johnmar

Цитата:
Нужна программа наподобие FileDisk, чтобы монтировать виртуальные диски из командной строки

Daemon Tools

Код: ".....\daemon.exe" -mount 0, file.iso
Автор: 01MDM
Дата сообщения: 10.01.2009 18:41
Commfort191

Цитата:
странно . но никаких изменений не произошло ((


А сам gsar.exe есть? Если есть, то он должен находиться в одном из каталогов, указанных в переменной %PATH%, либо рядом с батником.
Автор: gbcfkf
Дата сообщения: 11.01.2009 04:04
День добрый
Спрошу тут..
Есть ли консольная программа для смены ключа Win XP по сети?
А то очень не хочется бегать по всем компам и менять ключ WinKeyLite'ом
Автор: Nagual
Дата сообщения: 11.01.2009 06:47
Elroir
праздники, однако
Rotorina
поправил код
Код:
if exist f.log for /f "delims=" %%a in (f.log) do del/q "22\%%a"
for %%a in (dir/b "11\*.rar") do set fn=%%~nxa
echo %fn%
>f.log
copy "11\%fn%" "22\"

Автор: king_stiven
Дата сообщения: 11.01.2009 10:47
Nagual
А можа так?
for %%a in ('dir/b "11\*.rar"')
Автор: jaguarkpi
Дата сообщения: 11.01.2009 14:20
Помогите пожалуйста с решением проблемы:
Извиняюсь, если такое было. В пакетном файле нужно по результату комманды ping выполнить определенные действия
Пробовал так:

ping -n 1 xxx.xxx.xxx.xxx
If errorLevel 0 (.........)
If errorLevel 1 (.........)

Но почему-то при этом команда ping зацикливается, и просто запускается н-ное количество раз, при этом не пингует, и потом закрывается.

Тоесть то, что описано по ссылке http://forum.ru-board.com/topic.cgi?forum=62&topic=6156&start=220#18 у меня не работает, вернее пинг запускается бесконечно пока не выскакивает сообщение, что стек переполнен, и останавливается выполнение пакетного файла.

Пробовал через start ping, но тогда открывается безконечное количество окон консоли.

Тоесть вопрос в том, что почему в консоли, если ввести ping xxx.xxx.xxx.xxx от руки, то все происходит нормально, а если это записать в пакетный файл, то ping зацикливается?

Кстати такое-же происходит и с коммандой ftp, но там я решил все через start.

Windows XP SP3
Автор: Mr_Hat
Дата сообщения: 11.01.2009 14:40
jaguarkpi

ping *.*.*.* -n 10 || если не выполнено условие && если выполнено условие
Автор: Elroir
Дата сообщения: 11.01.2009 14:44
jaguarkpi

Код:
ping -n 1 xxx.xxx.xxx.xxx | find /i "TTL=">nul
If not errorLevel 1 (
:: commands to be executed if errorlevel = 0
.........
.........) else (
:: commands to be executed if errorlevel >=1
.........
.........)
Автор: jaguarkpi
Дата сообщения: 11.01.2009 14:55
Вы не поняли, дело в том, что после выполнения комманды ping в пакетном файле, следующие комманды после этой уже не выполняются, так как выполнение пакетного файла прерываестся в связи с превышением размера стека. Тоесть я о том, что в чем может быть проблема такого поведения комманды ping - запуска бесконечное число раз подряд, как будто она снова и снова вызывает сама себя?
Вот результат выполнения такого вот батника:
ping -n 1 ххх.ххх.ххх.ххх
If errorLevel 0 (echo Сеть ВКЛЮЧЕНА)
If errorLevel 1 (echo Сеть ВЫКЛЮЧЕНА)
pause

*****
ping -n 1 ххх.ххх.ххх.ххх
ping -n 1 ххх.ххх.ххх.ххх
ping -n 1 ххх.ххх.ххх.ххх
ping -n 1 ххх.ххх.ххх.ххх
...
ping -n 1 ххх.ххх.ххх.ххх
и тут пишется, что стек переполнен и выполнение пакетного файла остановлено

Варианты Elroir и Mr_Hat дают аналогичный результат, разве что при >Nul на экран ничего не выводится
Автор: Nagual
Дата сообщения: 11.01.2009 15:39
king_stiven
да, верно, можно поправить, но у меня (w_xpsp3ru) и без одинарных кавычек работает, проверено, видимо, интерпретатор парсит команды

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

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


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