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

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

Автор: king_stiven
Дата сообщения: 29.08.2007 11:11

Цитата:
Mitkasik

Там примеры у тебя с подкаталогами и через сеть, мой пример надо пределывать. Прислушайся к Maza Faka и vu1tur


Добавлено:

Цитата:
Mitkasik


Решил? Если нет, выкладывай как решал, поправим.
Автор: Vaul
Дата сообщения: 29.08.2007 15:07
Всем привет!
Вопрос такой.
нужен batник для автоматического монтирования шар при загруженной уже ОС.
С помощью команды cmd ручное монтирование удаётся:
net share Temp=C:/Temp
net share Docum=C:/Docum
net share Bases=C:/Bases

Можно ли эти команды поместить в bat файл, что бы монтирование всех указанных шар происходило автоматически. Если нет, то как можно реализовать этот батник по другому.
Искал в этом же форуме,много говориться о удалении шар или монтирование по сети.если что то недоглядел и заставляю повторяться не судите строго.Если обсуждался этот вопрос, то ссылка бы мне не помешала

Признателен буду за любой ответ
Автор: Tipulatoid
Дата сообщения: 29.08.2007 15:20
Vaul
Если работает при наборе ручками в командной строке - будет работать и в батнике.
Автор: Elroir
Дата сообщения: 29.08.2007 15:24
Vaul
В догонку к тому, что сказал Tipulatoid - просто помести все три команды в батник. Они будут выполнятся одна за другой.
Автор: Vaul
Дата сообщения: 29.08.2007 15:27
привет Tipulatoid.
В том и дело что в батнике никак не получается запустить. Может что то не так делаю?
Автор: Elroir
Дата сообщения: 29.08.2007 15:31
Vaul

Цитата:
Может что то не так делаю?

А ты приведи текст батника
У меня сработал с первого раза.
Автор: Tipulatoid
Дата сообщения: 29.08.2007 15:31
Vaul
Попробуй так:

Код: @echo off
net share Temp=C:\Temp
net share Docum=C:\Docum
net share Bases=C:\Bases
Автор: Vaul
Дата сообщения: 29.08.2007 15:43
Привет Elroir
Так и делал.
Вот так:
@Echo Off
net share Temp=C:/Temp
net share Docum=C:/Docum
net share Bases=C:/Bases

Автор: Tipulatoid
Дата сообщения: 29.08.2007 15:49
Vaul
Слэши замени на бэкслеши ( т.е. / на \ )
Автор: Vaul
Дата сообщения: 29.08.2007 15:56
Tipulatoid,
так и сделал и это тоже ( т.е. / на \ )

@echo off
net share Temp=C:\Temp
net share Docum=C:\Docum
net share Bases=C:\Bases

Запускается окно cmd.exe и в нём просто вверху мигает курсор
Автор: Tipulatoid
Дата сообщения: 29.08.2007 16:03
удали первую строку (@echo off), запусти и приведи что там в окне пишется. Нужно чтобы понять какая команда глючит.
Автор: Vaul
Дата сообщения: 29.08.2007 16:06
Tipulatoid спасибо тебе,всё получилось....когда я изменил имя батника.Не могу понять у меня до этого было имя батника NET, написал как ты мне показал Sharing.bat , всё заработало.В чём причина,какая разница какое имя у батника?



И если есть возможность помочь продолжить написание этого же батника, только что бы к каждой шаре запрашивал пароль
Автор: Tipulatoid
Дата сообщения: 29.08.2007 16:14
Vaul

Цитата:
Tipulatoid спасибо тебе,всё получилось....когда я изменил имя батника.Не могу понять у меня до этого было имя батника NET, написал как ты мне показал Sharing.bat , всё заработало.В чём причина,какая разница какое имя у батника?

Дело в том, что в батнике ты использовал команду net И сам батник у тебя назывался Net.bat Получив команду (если она не внутренняя), батник первым делом ищет утилиту или батник в ТЕКУЩЕЙ папке, и, если не найдет, только потом обращается к системным папкам, где большинство утилит и находится.
В твоем случае батник сначала искал утилиту Net в текущей папке, находил сам себя и сам себя пытался до посинения запустить
Автор: Vaul
Дата сообщения: 29.08.2007 16:21
Tipulatoid спасибо тебе, загнул я полностью, надо было ещё круче название придумать что бы тачку свою задосить.

А насчёт того что бы к каждй шаре запрашивать пароль? Возможно это осуществить
Автор: Tipulatoid
Дата сообщения: 29.08.2007 16:24
Vaul

Цитата:
А насчёт того что бы к каждй шаре запрашивать пароль? Возможно это осуществить

Думаю, возможно. Но я никогда папки не расшаривал - не знаю ньюансов. Тут тебе кто-нибудь другой поможет.
Автор: vu1tur
Дата сообщения: 29.08.2007 16:28
Vaul
можно раздавать права на шару
для этого есть ключ для net share
/GRANT:user,[READ | CHANGE | FULL]
Автор: Vaul
Дата сообщения: 29.08.2007 17:21
привет vu1tur

Пробывал как ты сказал пишет вот что :
Неизвестный параметр /GRANT.
Автор: vu1tur
Дата сообщения: 29.08.2007 20:49
Vaul
net share temp=c:\temp /grant:username,READ

всё работает. Windows то хоть какой у тебя стоит?

PS: прочти п. 1.9. главы VIII Соглашения по использованию. А ещё лучше все.
Автор: Elroir
Дата сообщения: 30.08.2007 01:18
vu1tur
У меня, кстати, ключ /grant тоже не работает. WinXP SP2 Eng.

Добавлено:
A... понял. Этот ключ появился только начиная с Win2003 Server.
Автор: Mitkasik
Дата сообщения: 30.08.2007 09:39
Помогайте.

Цитата:
Задача:
Есть два каталога.
Нужно чтобы второй по содержанию файлов стал равным первому.
При этом не трогать файлы с расширением *.tmp и не трогать подкаталоги.

Т.е. если 1\файл = 2\файл - не трогать
1\файл <> 2\файл - переписать
2\файл нет аналога в 1\ -удалить



Мою задачу разделил на две подзадачи. Первым проходом копирую нужные мне файлы:
For %%i in (*.exe *.dll *.bpl *.ini) do (xcopy "%%i" c:\1 /d/y/q)

Вторым проходом нужно каждый файл из каталога назначения проверить на присутствие в каталоге источнике, если такого нет, то удалить.
Вот что налабал:
c:
cd 1
for /f "usebackq tokens=*" %i in (`dir "e:\1\*.*" /b /a:-d`) do (
    if not exist %%~nxd (del %%d) )

Не получается.
Построчно выводит:
Не удается найти c:\1\файл ,
где файл - имя файла который копировать не нужно из каталога источника
Что не так?
Автор: Vaul
Дата сообщения: 30.08.2007 09:53
Привет vu1tur У меня Win2003 server не работате этот ключ.

А вот такой вопрос. Шара делается,всё впорядке.А как назначить права доступа к этой шаре.Дело в том что с этим кодом назначаются только права на чтение,а мне надо полный доступ,возможно ли это? Подозревю что здесь что то связно с реестром?
Кто знает подскажите.
Автор: 01MDM
Дата сообщения: 30.08.2007 09:59

Цитата:
for /f "usebackq tokens=*" %i in (`dir "e:\1\*.*" /b /a:-d`) do (
if not exist %%~nxd (del %%d) )



Код:
for /f "delims=" %i in ('dir "e:\2\*.*" /b /a:-d') do (
set file=%%i
call:check
)
for /f "delims=" %%i in ('type list.del') do (del "c:1\%%i")
del list.del
goto:eof
:check
for /f "delims=" %i in ('dir "e:\1\*.*" /b /a:-d') do (
if not exist %file% (echo %file% >>list.del)
)
Автор: vu1tur
Дата сообщения: 30.08.2007 10:29
Vaul

Цитата:
У меня Win2003 server не работате этот ключ
в Windows 2003 этот ключ работает.

Цитата:
мне надо полный доступ,возможно ли это?
да, будет выглядеть так:
net share temp=c:\temp /GRANT:username,FULL

Для остальных систем есть утилита RMTShare.
Описание: Batch Process to Create and Grant Access to Home Directories
Скачать: rmtshar.exe
Автор: Mitkasik
Дата сообщения: 30.08.2007 10:35
01MDM
Извини, твой код заходит в цикл.
Вот нашел решение:

@Echo off
e:
cd e:\1\
For %%i in (*.exe *.dll *.bpl *.ini) do (xcopy "%%i" c:\1 /d/y/q)
For /f "usebackq tokens=*" %%i in (`dir "c:\1\*.*" /b /a:-d`) do (if not exist %%i del "c:\1\%%i" /q /f)

Предлагаю в ФАК
Для чего это все. Есть сетевой диск у всех один. В нем возможны изменения библиотек. При запуске запускающие программы и библиотеки скопируются на локальный диск и с него запускаются.
Автор: 01MDM
Дата сообщения: 30.08.2007 11:53
Mitkasik

Цитата:
твой код заходит в цикл

Странно, у меня не заходит.

Цитата:
For /f "usebackq tokens=*" %%i in (`dir "c:\1\*.*" /b /a:-d`) do (if not exist %%i del "c:\1\%%i" /q /f)


Т.е ты удаляешь файлы, которые не соответствуют маске "*.*"? Не совсем понятно, может ты имел ввиду del "c:\2\%%i"
Автор: Mitkasik
Дата сообщения: 30.08.2007 12:06
у меня каталог источник e:\1
каталог назначения c:\1
For /f "usebackq tokens=*" %%i in (`dir "c:\1\*.*" /b /a:-d`) do (if not exist %%i del "c:\1\%%i" /q /f)
Я беру список файлов в каталоге назначения(`dir "c:\1\*.*" /b /a:-d`). Затем по списку каждый файл проверяю есть-ли он в каталоге источнике(текущая директория), если нету - удаляю в калоге назначения (if not exist %%i del "c:\1\%%i").
Не могу только побороть сообщение:
Скопированно файлов:0
Автор: 01MDM
Дата сообщения: 30.08.2007 12:34
Mitkasik
Ты прав у меня выполнялся неправильно, писал по памяти, все перепутал


Код:
for /f "delims=" %%i in ('dir /b 1\') do (
set "file=%%i"
call:check
)

::for /f "delims=" %%i in ('type list.del') do (del "1\%%i")
::del list.del

type list.del
goto:eof

:check
if not exist 2\%file% echo %file% >>list.del

Автор: Vaul
Дата сообщения: 30.08.2007 12:42
Спасибо vu1tur всё выяснил


Я вот дальше развиваю тему.Есть такой код

@echo off

truecrypt /v \Device\Harddisk1\Partition1 /lx /a /q /p
truecrypt /v \Device\Harddisk1\Partition2 /ly /a /q /p
net share Bases=X:\Bases /GRANT:username,FULL
net share Docum=Y:\Docum /GRANT:username,FULL
net share Musor=Y:\Musor /GRANT:username,FULL

Как мне сделать что бы при выполнении этого кода вначале всплывало окно с вводом пароля.Пароль надо сделать так что бы он не отображался в bat файле( я так понимаю через переменную).Возможно ли это?
Автор: vu1tur
Дата сообщения: 30.08.2007 13:02
Vaul
Так а зачем? Убери ключ /p и TrueCrypt при монтировании и так пароль спросит.
А средствами батника делать подобную защиту — плохая идея.
Автор: Vaul
Дата сообщения: 30.08.2007 13:25
vu1tur я не делаю защиту с помощью батника.Я хочу добиться того что бы с помощью батника автоматически монтировались шары в TrueCrypt. Загвоздка в том что мне надо лёгенькое окошечко где бы спрашивался pass . А сам пароль в батнике не хочу светить( из соображения безопасности), можно ли тут что-то зделать?

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566

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


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