Просмотр полной версии : Нужно создать *.bat
NightVgik
18.04.2008, 17:23
Помогите.
Нужно написать два батника:
1. Соберает перед переустановкой винды инфу о шарах.
2. После переустановки опять расшаривает теже папки(файлы).
Очень нада - ПЛИЗ :wow:
dmitry_a
18.04.2008, 18:00
при помощи *.bat это невозможно., а при помощи wsh (vbs) надо думать.
Welcome to the Script Center (http://www.microsoft.com/technet/scriptcenter/default.mspx).
Задача реальная. Просто слишком много времени уйдёт на реализацию и тестирование скрипта, поэтому ограничусь ссылкой на тонны примеров и хэлп.
Все проще. Сохраните кусок рееестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Servic es\lanmanserver\Shares
и восстановите его.
Для этого есть в Windows XP утилита REG.EXE.
Можно BAT .... Вариант 1 самый простой
это значится сохранение шаринга
REG.EXE export HKLM\SYSTEM\CurrentControlSet\Services\lanmanserve r\Shares Shares.reg
восстановление ...
reg import Shares.reg
А можно использовать эту команду в консоли восстановления?
А можно использовать эту команду в консоли восстановления?
В стандартной консоли восстановления, нет.
Вы можете добраться до этого файла, но не сможете его запустить.
Пользуйтесть к примеру WinPE. Только будет одна проблема смонтированные кусты реестра которые Вы захотите изменить будут иметь немного другие пути, но если Вы это учтете, все будет ок.
Все зависит от задачи.
SidneyXP
21.04.2008, 05:38
Вопрос по теме, существует ли возможность написать такой bat cmd который бы забирал архив с фтп (не надо меня пинать дочитайте!:) и распаковывал его, например винраром в определенныю папку... по отдельности могу а вот все вмете неть(
На каком этапе проблемы возникают? Хэлп по консольным командам рара читал?
Готовые работающие куски можешь выложить?
NightVgik
21.04.2008, 08:38
Спасибо огромное!!!
Добавлено через 4 минуты
Нужен еще один БАТник:
Есть бук, на работе и дома есть инэт, все одинаково кроме ДНС, надо сделать батники которые будут менять: один на домашние ДНС, другой на рабочие ДНС.
З.Ы. - Начальник с этим задрал уже....
Помогите еще раз...
dmitry_a
21.04.2008, 09:54
Вопрос по теме, существует ли возможность написать такой bat cmd который бы забирал архив с фтп (не надо меня пинать дочитайте!:) и распаковывал его, например винраром в определенныю папку... по отдельности могу а вот все вмете неть(
Как раз недавно заморачивался подобным вопросом, скрипт не доконца отлажен еще, писался в скоростном темпе но то что тебе требуется делает.
'Забираем файлики по фтп, с использование библиотеки FTP.DLL от Primalscript
'и записываем все в лог файл.
Sub FTPTransfer(center,account,password,source,destina tion)
Dim oftp
'WScript.Echo source
Set oftp = CreateObject("Primalscript.FTPTransfer")
oftp.Passive = 1 ' set the passive flag if needed
' oftp.Port = ' Set whatever port you are using if not the default ftp port
if oftp.Connect(center,account,password) = 0 Then
'WScript.Echo oftp.Status
Else
WScript.Echo source
WScript.Echo "Starting download"
If oftp.Get(source,destination) = 0 Then
WScript.Echo oftp.Status
Else
'WScript.Echo "Download complete"
oftp.Remove(source)
WScript.Echo oftp.status
End If
oftp.Disconnect
end If
end Sub
и в догонку распаковка.
'Разархивируем файлы из архива.
Sub ExtArchive (path, center)
Set objShell = CreateObject("WScript.Shell")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Const ForAppend = 3
On Error Resume Next
winRarPath = """%systemdrive%\Program Files\WinRAR\rar.exe""" 'Путь к архиватору
'"c:\program files\winrar\rar.exe" X -y -df "srcpath" "destpath"
i = objShell.run(winRarPath & " X -y -df """ & path & """" ,0 , True)
k = Empty
If i <> 0 Then k = i
wscript.echo path
'Коды возврата Winrar
Select Case k
case 0
WScript.Echo "Операция успешно завершена." & "in " & center
Case 1
WScript.Echo "Предупреждение. Произошли некритические ошибки. (Возможно отсутствие файла)" & "in " & center
Case 2
WScript.Echo "Произошла критическая ошибка." & "in " & center
case 3
WScript.Echo "При распаковке обнаружена ошибка CRC." & "in " & center
case 4
WScript.Echo "Предпринята попытка изменить заблокированный архив."
case 5
WScript.Echo "Произошла ошибка записи на диск."
Case 6
WScript.Echo "Произошла ошибка открытия файла." & "in " & center
case 7
WScript.Echo "Ошибка при указании параметра в командной строке."
case 8
WScript.Echo "Недостаточно памяти для выполнения операции."
case 9
WScript.Echo "Ошибка при создании файла"
Case 255
WScript.Echo "Операция была прервана пользователем."
End Select
End Sub
писалось все на VBS, если что непонятно спрашивай, я функции из своего кода выдернул, так что под твои нужды надо еще их напильником подшлейфовать.
Нужен еще один БАТник:
Есть бук, на работе и дома есть инэт, все одинаково кроме ДНС, надо сделать батники которые будут менять: один на домашние ДНС, другой на рабочие ДНС.
я бы советовал netswitch - часто поставляется с ноутами
но вот что увидел
Настороил TCP/IP дома
netsh dump >дом.txt
Настороил TCP/IP на работе
netsh dump >работа.txt
2 бат файлика на рабочем столе:
Загрузился дома
netsh exec дом.txt
Загрузился на работе
netsh exec работа.txt
(с) не мое
про ДНС на работе и дома...
а не пробовали профили оборудования сохранить отдельно? Ну и грузиться то в один, то в другой.
NightVgik
21.04.2008, 15:11
Cмысл как раз в том что батники нужны.
dmitry_a
21.04.2008, 15:23
ок тогда батники netsh interface ip delete dns "local area connection" all
netsh interface ip add dns "local area connection" 192.168.0.11
netsh interface ip add dns "Local Area Connection" 192.168.0.10 index=2
Это про шаринги:
Попробуй копнуть в сторону net share .
Сохрани шаринги в текстовик, а потом (пока не знаю, как) для каждой строки из файла выполни net share.
Это про ДНС:
Что мешает забить все днс сервера в св-ва сетевого интерфейса?
Св-ва TCP/IP, закладка DNS, верхний список
ps: Не лепите все вопросы в одну тему. 1 вопрос = 1 тема
SidneyXP
23.04.2008, 06:51
На каком этапе проблемы возникают? Хэлп по консольным командам рара читал?
Готовые работающие куски можешь выложить?
Рар - вторая часть задачи, самая простая на мой взгляд. Вторую просто не знал чем изладить(
Как раз недавно заморачивался подобным вопросом, скрипт не доконца отлажен еще, писался в скоростном темпе но то что тебе требуется делает.
писалось все на VBS, если что непонятно спрашивай, я функции из своего кода выдернул, так что под твои нужды надо еще их напильником подшлейфовать.
Пасибо, щас запробую)
З.Ы.:
2 вопроса в догонку: 1) как подружить это чудо с прокси
2) сохраняю в *.vbs запускаю - выдает ошибку, "предполагается наличие инструкции строка 1 символ 1" ((
NightVgik
23.04.2008, 09:25
Это про шаринги:
Попробуй копнуть в сторону net share .
Сохрани шаринги в текстовик, а потом (пока не знаю, как) для каждой строки из файла выполни net share.
Это про ДНС:
Что мешает забить все днс сервера в св-ва сетевого интерфейса?
Св-ва TCP/IP, закладка DNS, верхний список
ps: Не лепите все вопросы в одну тему. 1 вопрос = 1 тема
Ситуёвина такая, мне это нада сделать кровь из носа, я сделал с привязкой к реестру - мне сказали что это не так. Это вроди как мини экзамены на испытательном сроке на работе, не выполню все на работу не возьмут(((
:cry:
Что ты сделал с привязкой к реестру и не так? По поводу днс точно работать будет, т.к. проходится весь список днс серверов.
ps: Не возьмут - попробуй написать мне.
NightVgik
23.04.2008, 10:20
Батники без привязки к реестру должны быть.
Этот:
netsh interface ip delete dns "123" all
netsh interface ip add dns "123" 195.218.208.60
netsh interface ip add dns "123" 85.232.96.1 index=2
самое то, но на дом и на работу для замены ДНС должен быть один батник и два ярлыка к нему по заданию, У меня только в два барника выходит.
А по шарам я вообще потерялся!!!!!!! Незнаю как сделать без привязки к реестру...
dmitry_a
23.04.2008, 10:48
Рар - вторая часть задачи, самая простая на мой взгляд. Вторую просто не знал чем изладить(
Пасибо, щас запробую)
З.Ы.:
2 вопроса в догонку: 1) как подружить это чудо с прокси
2) сохраняю в *.vbs запускаю - выдает ошибку, "предполагается наличие инструкции строка 1 символ 1" ((
я дал тебе только рабочие функции, в которые нужно передать параметры, поэтому их недостаточно просто сохранить как файл *.vbs а надо еще написать строку ее вызова.
пример стоит исполнять примерно так.
Call FTPTransfer("ftp://test.ru","anon","p@ssw0rd","backup/test.rar","c:\backup")
'Забираем файлики по фтп, с использование библиотеки FTP.DLL от Primalscript
Sub FTPTransfer(ftp,account,password,source,destinatio n)
Dim oftp
'WScript.Echo source
Set oftp = CreateObject("Primalscript.FTPTransfer")
oftp.Passive = 1 ' set the passive flag if needed
' oftp.Port = ' Set whatever port you are using if not the default ftp port
if oftp.Connect(ftp,account,password) = 0 Then
WScript.Echo "status: " & oftp.Status
Else
WScript.Echo "Starting download"
If oftp.Get(source,destination) = 0 Then
WScript.Echo oftp.Status
Else
WScript.Echo "Download complete"
WScript.Echo oftp.status
End If
oftp.Disconnect
end If
end Sub
!!!Важно, незабыть скачать с сайта Primal Script (http://www.sapien.com/download.aspx?file=ftp) библиотеку для работы с фтп, штатные методы которые я пробывал использовать мне непонравились из-за необходимости описывать все коды возврата фтп клиента чтобы было понятно файл забран или нет. п.с. незабудь ее зарегистрировать "regsvr32 ftp.dll"
Добавлено через 21 минуту
NightVgik, if /? тебе в помощь
if %1==home goto home
if %1==work goto work
:home
netsh interface ip delete dns "local area connection" all
netsh interface ip add dns "local area connection" 192.168.0.11
netsh interface ip add dns "Local Area Connection" 192.168.0.10 index=2
exit
:work
netsh interface ip delete dns "local area connection" all
netsh interface ip add dns "local area connection" 192.168.0.10
netsh interface ip add dns "Local Area Connection" 192.168.0.11 index=2
exit
а с шарами надо немного подумать.
Батники без привязки к реестру должны быть.
netsh interface ip delete dns "123" all
netsh interface ip add dns "123" 195.218.208.60
netsh interface ip add dns "123" 85.232.96.1 index=2
Не подскажешь, зачем это надо вообще? Попробуй прописать все днс-сервера на закладку, как я указал. Сообщи, плз, результат. Я так делал на сервере и всё работало. Интересно, что у вас получится.
Желательно прислать инфу из nslookup с командой set debug .
dmitry_a
23.04.2008, 12:43
Видимо это просто ему поставили задачку, чтобы проверить на сколько он способен работать с коммандной строкой, *.cmd/*.bat файлами..
NightVgik
23.04.2008, 14:32
Видимо это просто ему поставили задачку, чтобы проверить на сколько он способен работать с коммандной строкой, *.cmd/*.bat файлами..
Именно так, а я вроди и зделал, все работает, но с привязкой к реестру, а надо без и тот и тот батники, а работа хорошая, сижу уже 4 день над ними дойти не могу...:quest:
Добавлено через 1 минуту
Помогите....:wow:
dmitry_a
23.04.2008, 15:06
батник для смены DNS я уже дал, для шар немного труднее, хотя и решается при помощи net share (был бы vbs или ps1 было бы проще) отвык я от бат файлов уже...
NightVgik
23.04.2008, 15:07
if %1==home goto home
if %1==work goto work
:home
netsh interface ip delete dns "local area connection" all
netsh interface ip add dns "local area connection" 192.168.0.11
netsh interface ip add dns "Local Area Connection" 192.168.0.10 index=2
exit
:work
netsh interface ip delete dns "local area connection" all
netsh interface ip add dns "local area connection" 192.168.0.10
netsh interface ip add dns "Local Area Connection" 192.168.0.11 index=2
exit
а с шарами надо немного подумать.
Незаработал. Я данные своей сети поставил, а он все равно офф :sos:
Добавлено через 2 минуты
if %1==home goto home
if %1==work goto work
:home
netsh interface ip delete dns "123" all
netsh interface ip add dns "123" 195.218.208.66
netsh interface ip add dns "123" 85.232.96.1 index=2
exit
:work
netsh interface ip delete dns "123" all
netsh interface ip add dns "123" 195.218.208.67
netsh interface ip add dns "123" 85.232.96.2 index=2
exit
Мой вариант, неработает почемут...
dmitry_a
23.04.2008, 15:21
запускается батник так, dns.bat home или dns.bat work
в зваисимости от того какие настройки тебе нужны.
dmitry_a
23.04.2008, 17:46
вот батник который может выгружать список расшаренных ресурсов, и загружать его. НО я так и не победил пробелы в название шар, а читать мануалы уже времени сегодня нету так что попробуй его довести до ума самостоятельно NightVgik.
if %1==/export goto export
if %1==/import goto import
:export
net share > share.txt
goto exit
:import
FOR /F "skip=9 Tokens=1,2* " %%i in (share.txt) do net share %%i=%%j /unlimited
goto exit
:exit
exit
А вот это тебе поможет в изучении *.bat, *.cmd файлов (http://www.rsdn.ru/article/winshell/batanyca.xml)
evgeny28
23.04.2008, 18:30
http://nerhood.homeip.net/wordpress/archives/2007/04/04/quickly-recreate-shares-on-windows-servers/
http://www.robvanderwoude.com/files/sharemig_nt.txt
SidneyXP
23.04.2008, 18:44
я дал тебе только рабочие функции, в которые нужно передать параметры, поэтому их недостаточно просто сохранить как файл *.vbs а надо еще написать строку ее вызова.
пример стоит исполнять примерно так.
Я поправил, вот что выдает:
status: Время ожидания окончания действия истекло
Я так понимаю это все-таки прокси... а про прокси ты так ничего и не написал...неужели никак?
(с) не моеПрикольно! Моё... :)
Cмысл как раз в том что батники нужны.Слабо понял... Чем не батники? Или так:@if '%1'=='home' netsh exec дом.txt
@if '%1'=='work' netsh exec работа.txt
@if '%1'=='' echo Запускайте меня так: Батник.bat home или Батник.bat workИли ещё миллион вариантов... Когда врубаешься в пакетники или скрипты, вариантов реализации получается всегда не один...
Не работает? А имя локальной сети у Вас действительно 123? :huh:
2Dmitry_a: Интересный вариант, конечно, но, думаю, без VBS в сохранении/восстановлении шар не обойтись. Ибо:
1. Надо отслеживать в имени шары $ и пропускать такие шары. Просто пропустить 9 строк - не совсем верно, ибо даже дисков в компе может быть разное количество. Плюс съёмные расшаренные устройства.
2. Пробелы обрабатывать таким образом тоже не получится. Ибо отслеживать, после пробела у нас идёт расшаренный ресурс или продолжение названия шары (а расшаренный ресурс - на другой строке) можно тоже только по анализу содержимого %j (есть ли в ней ":\", например, как часть пути, или подстрока "USB" (как часть имени USB001 типа как для моего расшаренного принтера)).
Вот если бы в батниках можно было искать подстроку в %i / %j / %1 / %2, вот тогда было бы счастье! Может, знаете о наличии такой возможности?
Ну и вообще по поводу шар. Скорее всего, те, кто дают задание, сами нарыли какой-то вариант, сидят на нём и радуются: "Вот ведь - никто додуматься не может!".
Да, кстати: а sysinternals к этому подключать можно?
Добавлено: По второй ссылке, данной evgeny28, симпатичный пакетник (правда, на первой же конструции споткнулся! Что означают 2>&1 в 11-й строке (NET.EXE SHARE > "%~dp0%ComputerName%_originalshares.txt" 2>&1) - моему разуму пока не дано понять!)
В инструкции по ссылке с поста dmitry_a суперское предупреждение про пакетники освобождения дискового пространства. Повеселило, спасибо!
По поводу поиска подстроки: вопрос снимается. В этом пакетнике используется FindStr.exe (в DOS-е, емнип, её не было)
С ходу в пакетнике не нашёл обслуживания шар с пробелами. Ну и Spooled и "The command completed successfully" на русские каждый поменять догадается...
Ещё раз спасибо dmitry_a и evgeny28 за существенное расширение кругозора!
evgeny28
23.04.2008, 22:04
Нужен еще один БАТник:
Есть бук, на работе и дома есть инэт, все одинаково кроме ДНС, надо сделать батники которые будут менять: один на домашние ДНС, другой на рабочие ДНС.
Вариант:
delete dns "123" all
netsh interface ip set dns "123" static 192.168.0.200 primary
netsh interface ip add dns "123" 192.168.0.201 index=2
Насчёт шар - посмотри эти ссылки
http://nerhood.homeip.net/wordpress/archives/2007/04/04/quickly-recreate-shares-on-windows-servers/
http://www.robvanderwoude.com/files/sharemig_nt.txt
NightVgik
05.05.2008, 15:03
FOR /F "skip=9 Tokens=1,2* " %%i in (share.txt) do net share %%i=%%j /unlimited
объясните пожалусто что делает каждый ключь и команда в этом коде:sos:
dmitry_a
05.05.2008, 17:57
FOR /F "skip=9 Tokens=1,2* " %%i in (share.txt) do net share %%i=%%j /unlimited
объясните пожалусто что делает каждый ключь и команда в этом коде:sos:
FOR /F "skip=9 Пропускаем первые 9 строк, так как там у меня служебные шары
Tokens=1,2* выбераем из файла с 1рвое и 2е слово после пробела.
" %%i in (share.txt) Взял это тупо из хелпа по for /f и добавил 1 % так как бат не воспримит %i как в бате %i это аргумент а %%i это уже переменная.
do net share %%i=%%j /unlimited используем комманду net share для расшаривания ресурса.
а вообще посмотри for /?, net share /? много нового узнать получится..
NightVgik
13.05.2008, 16:05
У данных батников неработают ключи, перерыл всю справку не понимаю почему, какие ключи не вводи все равно с начало начинает выполнять???
kernelapi
14.05.2008, 11:38
для скачивания с FTP можно использовать утиль винды с одноимённым названием:
ftp.exe
ключи посмотрите под задачу, там всё просто, батник соответственно тоже выходит простой - скачали с помощью фтп, разархивировали с помощью рара, даже не знаю в чём там проблемы могут быть :)
vBulletin® v3.8.9, Copyright ©2000-2026, vBulletin Solutions, Inc.