Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Закладки » Задачи на bat-файлах 3

Модерирует : KLASS, IFkO

vu1tur (11-09-2007 15:22): продолжаем в теме Задачи на bat-файлах 4  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99

   

vu1tur



Moderator-Saaber
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Задачи на bat-файлах
(часть 1, часть 2)
Вопросы, задачи и их решения по работе с командными файлами, а также сопутствующие ссылки.

 
Важно: копируя батник через буфер обмена из форума не забывайте удалять пробелы в конце каждой строки, т.к. в некоторых случаях из-за этого программа будет работать неправильно!!!
 
Дополняем шапку: добавляем готовые решения, полезные ссылки.
 
Примечание: Большие куски кода заключайте в тэг [more]  
 
Смежные темы:
В помощь системному администратору » Автоматизация администрирования
Программы » Командная строка, батники\сценарии
 
Полезные ссылки
 
Полезные утилиты
 
Готовые решения и частые вопросы:
  • Встроенный справочник по командам
  • Создание помощи по всем командам консоли 2000 и XP
  • Альтернативные решения »
  • Работа с текстом, датой, и файлами »
  • Администрирование, автоматизация и сеть »
  • Работа с переменными и параметрами ком. строки »
     
    Описания работы команд и символов участниками темы:
    · setlocal enabledelayedexpansion и переменные окружения
    · символы & и && в командной строке
    · Переменная %0

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 11:54 27-04-2007 | Исправлено: Elroir, 03:59 10-09-2007
    Elroir



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    vu1tur
    У меня, кстати, ключ /grant тоже не работает. WinXP SP2 Eng.
     
    Добавлено:
    A... понял. Этот ключ появился только начиная с Win2003 Server.

    ----------
    "В интернете есть все, но не всегда"

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 02:18 30-08-2007
    Mitkasik



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Помогайте.

    Цитата:
    Задача:  
    Есть два каталога.  
    Нужно чтобы второй по содержанию файлов стал равным первому.  
    При этом не трогать файлы с расширением *.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\файл ,  
    где файл - имя файла который копировать не нужно из каталога источника
    Что не так?

    Всего записей: 53 | Зарегистр. 06-12-2006 | Отправлено: 10:39 30-08-2007
    Vaul



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Привет vu1tur У меня  Win2003 server не работате этот ключ.
     
    А вот такой вопрос. Шара делается,всё впорядке.А как назначить права доступа к этой шаре.Дело в том что с этим кодом назначаются только права на чтение,а мне надо полный доступ,возможно ли это? Подозревю что здесь что то связно с реестром?
    Кто знает подскажите.

    Всего записей: 17 | Зарегистр. 29-08-2007 | Отправлено: 10:53 30-08-2007
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

    Цитата:
    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)  
    )  
     

     
    если правильно понял
     
     
    Добавлено:
    без ошибок:

    Код:
     
    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 "e\: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)  
    )
     

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 10:59 30-08-2007
    vu1tur



    Moderator-Saaber
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    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

    ----------
    I am free of all prejudice. I hate everyone equally.

    Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 11:29 30-08-2007 | Исправлено: vu1tur, 11:31 30-08-2007
    Mitkasik



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    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)
     
    Предлагаю в ФАК
    Для чего это все. Есть сетевой диск у всех один. В нем возможны изменения библиотек. При запуске запускающие программы и библиотеки скопируются на локальный диск и с него запускаются.

    Всего записей: 53 | Зарегистр. 06-12-2006 | Отправлено: 11:35 30-08-2007 | Исправлено: Mitkasik, 12:02 30-08-2007
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    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"

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 12:53 30-08-2007
    Mitkasik



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    у меня каталог источник 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

    Всего записей: 53 | Зарегистр. 06-12-2006 | Отправлено: 13:06 30-08-2007 | Исправлено: Mitkasik, 13:14 30-08-2007
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    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
     
     

     

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 13:34 30-08-2007
    Vaul



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Спасибо  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 файле( я так понимаю через переменную).Возможно ли это?

    Всего записей: 17 | Зарегистр. 29-08-2007 | Отправлено: 13:42 30-08-2007
    vu1tur



    Moderator-Saaber
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Vaul
    Так а зачем? Убери ключ /p и TrueCrypt при монтировании и так пароль спросит.
    А средствами батника делать подобную защиту — плохая идея.

    ----------
    I am free of all prejudice. I hate everyone equally.

    Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 14:02 30-08-2007 | Исправлено: vu1tur, 14:04 30-08-2007
    Vaul



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    vu1tur я не делаю защиту с помощью батника.Я хочу добиться того что бы с помощью батника автоматически монтировались шары в TrueCrypt. Загвоздка в том что мне надо лёгенькое окошечко где бы спрашивался pass  . А сам пароль в батнике не хочу светить( из соображения безопасности), можно ли тут что-то зделать?

    Всего записей: 17 | Зарегистр. 29-08-2007 | Отправлено: 14:25 30-08-2007
    vu1tur



    Moderator-Saaber
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Vaul
    ну вот я ж и говорю, пишешь
    truecrypt /v \Device\Harddisk1\Partition1 /lx /a /q
    и он при монтировании покажет окошко для ввода пароля

    ----------
    I am free of all prejudice. I hate everyone equally.

    Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 14:34 30-08-2007
    Vaul



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    vu1tur не могу пока проверить,как только проверю отпишусь
     
    Добавлено:
    А как сделать  чтобы пароль передавался в коммандной строке.. (без окна)

    Всего записей: 17 | Зарегистр. 29-08-2007 | Отправлено: 15:21 30-08-2007
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Mitkasik
     

    Код:
    For /f "usebackq tokens=*" %%i in (`dir "c:\1\*.*" /b /a:-d`) do if not exist "%%i" del "c:\1\%%i" /q /f
    For %%i in (*.exe *.dll *.bpl *.ini) do xcopy "%%i" c:\1 /d/y/q > nul

     
    Быстрее будет, и сообщений xcopy не будет.
    И ищё не будут соблюдаться следующие условия:
    копировать все файлы кроме *.tmp
    создать каталог, если его нет

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 19:56 30-08-2007 | Исправлено: king_stiven, 07:09 31-08-2007
    virstud2002

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    подскажите плииизззз....  
    есть задачка.... вот такая:  
    есть папка D:\SORTED  
    есть хард на 300 гигов  
    в папку постоянно падает куча рассортированных по подпапкам файлов  
    фильмы, музыка, исошники. и др. полный венигрет..  
     
    300 гигов забиваются очень быстро....а времени просмотреть всЁ и удалить ненужные файлы катастрофически не хватает.  
     
    нужен батник который бы мог пробежаться по всем файлам и подкаталогам внутри этой папки ..найти самый старый файл и удалить его...  
     
    я делал батник на основе for     с просмотром через  dir /b /a-d /o-d %PATH%  
    но это только если в   D:\SORTED нет подпапок ...а просто файлы.    
     
    а мне нужно именно с подпапками.  
     
    закиньте идейку.. плизз...

    Всего записей: 24 | Зарегистр. 22-12-2005 | Отправлено: 19:59 30-08-2007
    0Vovan0



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

    Цитата:
    но это только если в   D:\SORTED нет подпапок ...а просто файлы.    

    может dir /s поможет?

    Всего записей: 2370 | Зарегистр. 15-07-2005 | Отправлено: 21:15 30-08-2007
    vu1tur



    Moderator-Saaber
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Vaul
     
    батник:
    Код:
    @echo off  
     
    truecrypt /v \Device\Harddisk1\Partition1 /lx /a /q /p %1
    truecrypt /v \Device\Harddisk1\Partition2 /ly /a /q /p %1
    net share Bases=X:\Bases /GRANT:username,FULL
    net share Docum=Y:\Docum  /GRANT:username,FULL
    net share Musor=Y:\Musor  /GRANT:username,FULL

     
    Запускать, соответственно, указывая в качестве параметра пароль (если он одинаковый на всех разделах).

    ----------
    I am free of all prejudice. I hate everyone equally.

    Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 22:15 30-08-2007 | Исправлено: vu1tur, 22:17 30-08-2007
    Elroir



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    virstud2002
    На 92-ой странице обсуждался похожий вопрос -  
    http://forum.ru-board.com/topic.cgi?forum=62&topic=10650&start=1820#15
     
    vu1tur
    В шапке, "невозможность" ты зачеркнул?
    Если да, то как это сделать?

    ----------
    "В интернете есть все, но не всегда"

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 22:20 30-08-2007
    0Vovan0



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Выше я спашивал как добавить пункт в контекстное меню, сенкс Elroir, разобрался.
    Но есть один момент. Надо добавить пункт в меню папки, а нужную програмку запустить из самой этой папки.
    Пока заюзал для этого такой батник
    cd "%1" & "%~dp0\bsapack" pack "%~n1.bsa"
    и у в пункт меню этот батник добален.
    А можно ли обойтись без него?

    Всего записей: 2370 | Зарегистр. 15-07-2005 | Отправлено: 01:40 31-08-2007
       

    Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Закладки » Задачи на bat-файлах 3
    vu1tur (11-09-2007 15:22): продолжаем в теме Задачи на bat-файлах 4


    Реклама на форуме Ru.Board.

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.B0ard
    © Ru.B0ard 2000-2024

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru