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

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

Автор: whoyou
Дата сообщения: 18.03.2009 17:50

Цитата:
Joo1z

Вообщето %temp%\1.txt
Но пробывал и с %temp%\1.txt и с c:\1.txt так тоже не хочет, даже если вручную пропишу число, после переименования пусто.
Автор: maxi812
Дата сообщения: 18.03.2009 19:47

Цитата:
Комрады, помогите написать батник, который будет выполнять следующее :
1. Копировать все содержимое папки C:\Net, включая подкаталоги и т.д. (ip 192.168.0.1 источника) на машину в лок.сети с адресом 192.168.0.2 (к примеру) в папку диска D:\Net.
2. Заменять все существующие файлы.



xcopy E:\Ku\Irbis\AU \\192.168.6.164\c\g\Irbis\AU /s /e /y /f /z /i
xcopy E:\Ku\Irbis\DBF \\192.168.6.164\c\g\Irbis\DBF /s /e /y /f /z /i
xcopy E:\Ku\Irbis\obor \\192.168.6.164\c\g\Irbis\obor /s /e /y /f /z /i
xcopy E:\Ku\Irbis\STR \\192.168.6.164\c\g\Irbis\STR /s /e /y /f /z /i


Корирует папки и заменяет что в них находиться вместо E:\Ku\Irbis\AU ..и.т.д можно вписать \\192.168.6.155\Ku\Irbis\AU ... и .т.д.
Автор: DamNet
Дата сообщения: 18.03.2009 21:53
DESperado
Спасибо, завтра опробую. У Назгула тоже есть один маленький и неприятный недостаток, если в папке же существует под папка, то там ещё создаётся одна... тоесть при запуске этого скрипта плодиться ужасная куча лишних пустых файлов... =(
Нужно ещё делать проверку... ( в таких тонкостях к сожалению я пока не силён...
Автор: king_stiven
Дата сообщения: 18.03.2009 22:15
DamNet

Цитата:
если в папке же существует под папка, то там ещё создаётся одна... тоесть при запуске этого скрипта плодиться ужасная куча лишних пустых файлов... =(

Так может тебе точнее ставить условия задачи сразу, чтоб не напрягать себя и других, потому что мы ориентируемся именно на твой ряд папок?

Код: FOR /D %%e in ("D:\Papka\*") do (
FOR /f "tokens=*" %%f in ('dir %%e /b /a:-d ^| find /i "file file"') do (
md "%%e\SecondOne" > nul
move "%%e\%%f" "%%e\SecondOne" > nul
)
)
Автор: shabelski89
Дата сообщения: 18.03.2009 22:51

помогите

сделал
ipconfig /all>c:\ipconfig.txt
route print>c:\route_print.txt
ping 172.23.167.2>c:\ping.txt
tracert ya.ru -h 10 >c:\tracert.txt

файлы получаются с кодировкой 866,

@echo off
CHCP 1251 >Nul & Set z0=Как сюда пихнуть файл?
echo %z0%>c:\f.txt

как сделать чтобы текст брался из файла?

заранее благодарен

А ещё лучше чтобы кучи файлов не вышло как вставить команду смены кодировки сразу
Автор: 01MDM
Дата сообщения: 19.03.2009 06:18
shabelski89

Цитата:
как сделать чтобы текст брался из файла?

Слишком широкий вопрос. Можно брать целую строку, элементы строки, из нужной, из первой, последней...

for /?

В личке ответил, здесь на случай если кому-то понадобится (с потерей отступов):

Код:
@echo off
for %%i in ("tracert ya.ru","ping 172.23.167.2","route print","ipconfig /all") do (
set "exec=%%i" && call:job %%i
)
goto:eof

:job
for %%i in (%~1) do set "file=%%i" && goto:next

:next
if %file%==ipconfig chcp 1251 1>nul

for /f "tokens=*" %%i in ('%exec%') do set "line=%%i" && call:convert "%%i"
goto:eof

:convert
if %1=="" echo.>>%file%.txt && goto:eof
chcp 1251 1>nul
echo %line:<=^<% 1>>%file%.txt
chcp 866 1>nul
Автор: M0rphey
Дата сообщения: 19.03.2009 09:42
Ребят, помогите, есть задача, но с созданием *bat у меня совсем плохо.
задача такова:
\\сервер1\принтер1
\\сервер1\принтер2
\\сервер1\принтер3
при включении пользователем компа, входа в домен запускался *бат, и удалял с пользовательской машины все сетевые принтеры (не трогая локально установленные).
затем шла проверка активных сетевых принтеров с сервера, и начиналась на пользовательском компе установка активных сетевых принтеров.
вообще это реализуемо?
задача возникла после того как привезли ещё один принтер на фирму, постоянно идёт печать, если основной принтер на ТО, что бы не бегать по всей фирме и не подключать вручную другой сетевой принтер...
помогите пожалуйста.
заранее благодарен! =-)
Автор: DESperado
Дата сообщения: 19.03.2009 09:59
king_stiven
Поправил, выдает ErrorLevel - 1, но все равно не заходит в ветку :NOT_WORK. Полностью код такой:

Код: for /F "eol=;" %%i in (%~dp0list.txt) do call :ping_test %%i
goto :EOF

:ping_test
Ping -n 1 %1 >Nul
If ErrorLevel 0 (
echo ErrorLevel - %ErrorLevel%
Goto WORK
) else (
If ErrorLevel 1 (
echo ErrorLevel - %ErrorLevel%
Goto NOT_WORK
)
)

:WORK
if %on_off%==Выйти (net send %1 "Выйдите из програмы." )
if %on_off%==Зайти (net send %1 "Можно работать в программе.")
GoTo :EOF

:NOT_WORK
Echo Комп не работает
GoTo :EOF

:EOF
Автор: K_AHTOH
Дата сообщения: 19.03.2009 11:53
Добрый день уважаемые !!!
Подскажите пожалуйста как переделать скрипт на работу в FTP сервером?
Вот этот скрипт который сейчас работает подключением "расшаренных" ресурсов. Как бы его заставить теперь работать с ФТР (т.е. меняется протокол источника) оставив работу самого парсера?
Автор: spasius
Дата сообщения: 19.03.2009 12:17
Подскажите скрипт, чтобы пользователь имел выбор, нажимал либо 1, либо 2, либо 3 - и происходили бы определенные запуски приложений.
Автор: Mr_Hat
Дата сообщения: 19.03.2009 12:54
spasius

можно так

Код: @echo off
:start
cls
echo. 1 Блокнот
echo. 2 Paint
echo. 3 Калькулятор
echo. Q Выход
echo. Введите номер
SET /P settingStart=
echo.
echo.
if /I %settingStart%==q goto eof
if %settingStart% LSS 1 goto start
if %settingStart% GTR 3 goto start
goto m%settingStart%
:m1
start notepad
goto eof
:m2
start mspaint
goto eof
:m3
start calc
Автор: K_AHTOH
Дата сообщения: 19.03.2009 13:22
Mr_Hat
Или так

Код: @echo off
cls
echo "1.calculator"
echo "2.notepad"
echo "3.regedit"
choice /cYNR “Сделай свой выбор”
pause
if errorlevel 3 c:\windows\regedit.exe
if errorlevel 2 c:\windows\notepad.exe
if errorlevel 1 c:\windows\calc.exe
Автор: Mr_Hat
Дата сообщения: 19.03.2009 13:47
K_AHTOH

Цитата:
"choice" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.


При использовании твоего варианта,
какой бы выбор не был сделан запускается редактор реестра.
Автор: K_AHTOH
Дата сообщения: 19.03.2009 14:26
Mr_Hat
Да согласен не проверил как следует... Это ДОСовская программа оказывается
Автор: spasius
Дата сообщения: 19.03.2009 14:54
Буду должен

Цитата:
goto m%settingStart%

Это получается пользователю вводит цифру. Далее m+номер=метка? и по ней переход?
Автор: Mr_Hat
Дата сообщения: 19.03.2009 15:22
spasius
точно
Автор: Nagual
Дата сообщения: 19.03.2009 18:16
DamNet
с проверкой на пустые папки и наличие уже проведённой операции
Код:
@echo off
set d=SecondOne
for /f "delims=" %%a in ('dir/b/s/a:d') do copy "%%a\*" nul>nul 2>&1&&if not exist "%%a\..\%d%" (md "%%a\%d%" 2>nul&move/y "%%a\*" "%%a\%d%\")
Автор: Zeral
Дата сообщения: 19.03.2009 21:43
Доброго времени суток господа форумчане.
У меня такая проблема, сижу курю мануалы по batch'am уже четвёртый час, и не вижу решения моего случая. А дело такое:
Сижу в инете через локалку, авторизация для доступа в инет осуществляется с помощью софтины UTM. Но эта сволочь в последнее время завела привычку произвольно вырубать инет. Решается это либо вручную(мышой клацаем в трее, жмём "Включить интернет"), либо перезапуском сего творения.
Требуется неким образом мониторить состояние интернета(да хоть путём пингования удалённого какогонить сервера) и при отсутствии коннекта до него грохать процесс, и запускать его снова. Проблема в том каким способом мониторить это дело Пытался как то пинг прикрутить, да с самого начала завис. Подскажите плиз каким образом это можно осуществить? Примерчик там.. или может другой какой способ?
Автор: Mr_Hat
Дата сообщения: 19.03.2009 22:01
Zeral

пример


Код: @echo off
title connect check
:start
ping ukr.net -n 10 || taskkill /f /im "UTM" /t && start UTM
cls
goto :start
Автор: Zeral
Дата сообщения: 19.03.2009 22:21
Спасибо огромное, попробую завтра применить всё это дело.
Автор: Mr_Hat
Дата сообщения: 19.03.2009 22:50

Цитата:
@echo off
title connect check
:start
ping ukr.net -n 10 || taskkill /f /im "UTM" /t && start UTM
cls
goto :start


||
ping ukr.net -n 10 || taskkill /f /im "UTM" - Запускает команду, стоящую за символом ||, только если команда, стоящая перед символом || не была выполнена. В Cmd.exe выполняется первая команда. Вторая команда выполняется, только если первая не была выполнена (полученный код ошибки превышает ноль).

&&
taskkill /f /im "UTM" && start UTM - Запускает команду, стоящую за символом &&, только если команда, стоящая перед этим символом была выполнена успешно. В Cmd.exe выполняется первая команда. Вторая команда выполняется, только если первая была выполнена успешно.
Автор: Serhiy123
Дата сообщения: 20.03.2009 14:57
Необходимо узнать количество свободного места на диске в байтах, чтобы потом использовать в качестве параметра в дальнейших командах. В английской Windows последняя строка команды dir имеет следующий вид:


Код:
2 Dir(s) 30 243 647 488 bytes free
Автор: lorents
Дата сообщения: 20.03.2009 17:04
может у кого есть архивация нескольких файлов через 7-zip в bat-файл?
Автор: Mr_Hat
Дата сообщения: 20.03.2009 18:16
Нужна помощь в определении путей к учетным записям всех пользовалетей win xp,
в частности не активных.
при помощи cmd с дальнейшей записью их в системную переменную.
имя=путь

Автор: king_stiven
Дата сообщения: 20.03.2009 20:23
Serhiy123
Это неоднократно обсасывалось в предыдущих 5 частях. Советую качнуть утилиту FREEDISK, может в шапке есть и не париться.
lorents
В яндексе точно есть.
Автор: Serhiy123
Дата сообщения: 20.03.2009 21:59
king_stiven - freedisk.exe классная утилитка, возьму на вооружение!
Но под эту задачу не подходит: она умеет проверять есть ли на диске указанное количество свободного места. А мне нужно определить сколько всего свободного места есть на диске. Написал вариант попроще, чем предыдущий с dir:
fsutil volume diskfree D: выводит три строки, первая из которых:
Total # of free bytes : 55972331520


Код:
fsutil volume diskfree D: | find "Total # of free bytes" > 1.txt
set /p freespace=< 1.txt
set freespace=%freespace:*: =%
echo %freespace%
Автор: Elroir
Дата сообщения: 20.03.2009 22:28
Serhiy123

Цитата:
1. Как избавиться от 1.txt ?
2. Как лучше написать вариант для англ. и рус. Windows (русский вариант будет отличаться только find "Всего свободно байт") ?


Код:
@echo off
for /f "tokens=2 delims=:" %%a in ('fsutil volume diskfree C:') do set "freespace=%%a"&goto next
:next
if "%freespace:~0,1%"==" " set "freespace=%freespace:~1%"
echo %freespace%
Автор: king_stiven
Дата сообщения: 20.03.2009 22:29
Serhiy123

Цитата:
А мне нужно определить сколько всего свободного места есть на диске.

код

Код: FREEDISK /D c:\
Автор: Serhiy123
Дата сообщения: 20.03.2009 22:38
king_stiven

Странно! Тот freedisk.exe, который я выкачал с hxxp://www.dynawell.com/download/reskit/microsoft/win2000/freedisk.zip не выдает такого. При запуске без параметров он просто говорит: "This program checks for free disk space and returns a 0 if there is enough space and a 1 if there isn't. Usage freedisk drive (minimum bytes)"

Можете бросить ссылочку на свой?

Добавлено:
Elroir

Конгениально! Спасибо большое, проверил на рус. и на англ. - работает. Правда не совсем понял как, сейчас буду разбираться. Спасибо еще раз!

PS: разобрался - очень элегантно и выверено, высокий класс!
PPS: по аналогии написал вариант с dir, т.к. fsutil volume diskfree работает только на NTFS:


Код:
for /f "tokens=3" %%I in ('dir D: /-C') do (set freespace=%%I)

echo %freespace%
Автор: king_stiven
Дата сообщения: 20.03.2009 23:06

Цитата:
Можете бросить ссылочку на свой?

http://slil.ru/27317708

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

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


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