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

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

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

vu1tur (27-04-2007 11:55): продолжаем в теме «Задачи на bat-файлах 3»  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 100

   

vu1tur



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

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

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 16:59 14-11-2006 | Исправлено: Elroir, 04:30 26-04-2007
    testir



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите плиз, как сделать чтоб при обходе по for /R  d:\temp\  %%i in (.) do  
    выделялась текущяя директория, а не весь путь, и присваивалась какой-нибудь переменной ??

    Всего записей: 15 | Зарегистр. 14-02-2007 | Отправлено: 10:56 12-04-2007
    Elroir



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    testir
    То есть, тебе нужно - если for в данный момент проходит через d:\temp\abc\def, взять директорию def и присвоить это имя переменной?
    Тогда так:

    Код:
     
    setlocal enabledelayedexpansion
    for /R  d:\temp\  %%i in (.) do (
    set "cur_dir=%%~nxi"
    echo !cur_dir!
    ...
    ...
    )
     

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 11:20 12-04-2007
    testir



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Elroir
    Спасиб )  так просто оказывается )
    а где можно глянуть поподробнее по значениям  применяемым в этой строке
    Цитата:
    set "cur_dir=%%~nxi"  

    что означают "%%~nxi"   и как их можно комбинировать )

    Всего записей: 15 | Зарегистр. 14-02-2007 | Отправлено: 12:21 12-04-2007
    Elroir



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    testir
    Здесь - описание от Microsoft.
    Или просто набрать в командной строке "for /?"

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

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

    Цитата:
    подкажите какой-нибудь виндовый бесплатный ftp uploader, который бы все параметры брал из командной строки и работал в виде GUI-евого бегунка.

    По описанию - прям вылитый Catfood FTP. Только он не бесплатен, но на многих сайтах сейчас рекламная акция - 100-процентные скидки на покупку. Типа lomalka.ru.  
    В нем есть консольная утилита, которой в комстроке отдаешь скрипт-задание(в блокноте можно написать) и она аплоадит все или только обновленные файлы, как тебе надо, аки curl. И есть небольшое gui-приложение, которое тот же самый скрипт может редактировать из gui и при запуске из комстроки будет прогресс-бар показывать.
    http://www.catfood.net/products/cftp/

    Всего записей: 1704 | Зарегистр. 08-12-2004 | Отправлено: 12:37 12-04-2007
    euheny



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Ну короче надо мне ещё одну вещь попытаться выяснить.
    Конечно это возможно не совсем сюда , но куда ещё ?
     
    Вобщем входной параметр - буква логическоко диска
    Нужно определить к какому физическому диску она относится(его номер) , а также параметры физического диска C\H\S
     
    Короче если кто чего знает из этой степи то поделитесь инфой

    Всего записей: 4052 | Зарегистр. 22-11-2006 | Отправлено: 12:42 12-04-2007
    slayer120



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ALL подскажите  
      юзаю программу accesschk (из wininternal), она позволяет смотреть  
    права юзеров. Хочу найти все каталоги, куда user2 имеет доступ на запись.
       В батнике ввожу строчку:
      accesschk.exe  domain\user2 -s -d -w  \\server\catalog > access_user2.txt
     
    А он редиска вместо русских букв имен каталогов выводит ?.  
      Версия 3.0 самая свежая. Добавление chcp 1251  ничего не изменило.
      Я так понял прога с уникодом не работает (. Кто подскажет что делать?
     

    Всего записей: 303 | Зарегистр. 24-01-2007 | Отправлено: 17:59 12-04-2007
    NIKZZZZ



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

    Цитата:
    Нужно определить к какому физическому диску она относится(его номер) , а также параметры физического диска C\H\S  

    Я не понимаю , зачем это может пригодиться , в режиме LBA на это можно наплевать. Посмотри diskpart, возможно что-нибудь найдешь.
     
     
    Добавлено:
    slayer120

    Цитата:
    А он редиска вместо русских букв имен каталогов выводит ?.  

    А что он выводит?  Может просто конвертировать access_user2.txt какой нибудь прогой, типа dos2win или чем-нибудь подобным?

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 18:55 12-04-2007
    testir



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажи плз, как ссоставить условие типа:
    Если текущая директория не "Folder1" и имя текущей директории соответствует  
    %переменная1%,  то удалить текущюю директорию ??

    Всего записей: 15 | Зарегистр. 14-02-2007 | Отправлено: 19:18 12-04-2007
    Elroir



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

    Код:
     
    @echo off
    call :check "%cd%"
    goto :EOF
    :check
    if not "Folder1"=="%~nx1" (
    if "%~nx1"=="%переменная1%" (
    cd..
    rd /s /q "%~nx1"
    )
    )
     

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 19:46 12-04-2007 | Исправлено: Elroir, 19:47 12-04-2007
    NIKZZZZ



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

    Цитата:
    А если без хитрых выпадов?
    это уже другая ветка

    А почему другая?
     
     

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 00:56 13-04-2007
    euheny



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

    Цитата:
    Я не понимаю , зачем это может пригодиться , в режиме LBA на это можно наплевать. Посмотри diskpart, возможно что-нибудь найдешь.

     
    Хочу сделать скрипт делающий флэшку загрузочной.Для этого C\H\S нужно знать иначе не будет грузится. Через diskpart можно узнать только номер диска , но батник наверное замысловатый получится.А вот с C\H\S прблема.

    Всего записей: 4052 | Зарегистр. 22-11-2006 | Отправлено: 03:32 13-04-2007
    Maza Faka



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

    Цитата:
    Если текущая директория не "Folder1" и имя текущей директории соответствует    
    %переменная1%,  то удалить текущюю директорию ?

     
    Немного странная задачка, можно так:

    Код:
     
    Set myVar=Folder
    Set myFolder=%CD%
    For %%i in (%CD%) do (
    If /i not "%%~ni"=="Folder1" (
    If /i "%%~ni"==%myVar% (
    cd..
    RD /s /q %myFolder%
    )
    )
    )
     

    Но так удалятся все каталоги и файлы в текущей директории, но не сама директория, потому, что из неё будет запускаться батник...
    Лучше сделать так: например тебе нужно проверить все каталоги в "C:\Test" и удалить те которые соответствуют условию...

    Код:
     
    @Echo off
    Set myVar=myFolder
    For /R C:\Test %%i in (.) do (
    If /i not "%%~ni"=="Folder1" (
    If /i "%%~ni"=="%myVar%" (
    rd /s /q %%i
    )
    )
    )
     

    Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 08:25 13-04-2007
    NIKZZZZ



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

    Цитата:
    Хочу сделать скрипт делающий флэшку загрузочной.Для этого C\H\S нужно знать иначе не будет грузится.

    Чтобы сделать флэшку загрузогной совершенно не надо знать C\H\S, достаточно просто ее отформатировать - (format /fs:ntfs k:).
     

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 08:45 13-04-2007 | Исправлено: NIKZZZZ, 08:49 13-04-2007
    slayer120



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

    Цитата:
    А что он выводит?

      Примерно следующее:  
     
       \\server\contr\dos\?????????\??????3\k1
       \\server\contr\driver\?????????\??????3\k2
       \\server\contr\senator\flash\?????????????\???????????????
      Пытался вывод направлять в проги конвертилки - то же самое.
      А задачка нужная - найти папки, доступнуе юзеру,  
    разбросанные по папкам диска.
       Может будут какие-то мысли.    

    Всего записей: 303 | Зарегистр. 24-01-2007 | Отправлено: 09:38 13-04-2007
    testir



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Elroir
    Maza Faka
     что то не получается, может я не правильно сформировал условие, задача заключаеся в следующем,  есть список каталогов,названные по именам серверов,в них каждый день создаются папки - имя папки дата предыдущего дня,  нужно рекурсивно обходить все папки кроме одной и удалять каталоги совпадающие с заданной  датой.
    Уважаемый Elroir уже подсказал вчера начало кода
     

    Цитата:
    setlocal enabledelayedexpansion  
    for /R  d:\temp\  %%i in (.) do (  
    set "cur_dir=%%~nxi"  
    echo !cur_dir!  
    ...  
    ...  
    )  

     
     
    if  /I !cur_dir! == %set_data%       (rmdir   %%i    /q  /s   |     echo %%i  >n.txt)
    это соответствие с заданной датой,
    осталось только ввести условие на исключение той единственной папки, которую не нужно трогать,  типа пропускать )

    Всего записей: 15 | Зарегистр. 14-02-2007 | Отправлено: 09:39 13-04-2007
    Elroir



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

    Цитата:
    что то не получается, может я не правильно сформировал условие

    Вот именно неправильно - при обходе for-ом, текущая директория не меняется.
    Видимо будет работать так:

    Код:
     
    setlocal enabledelayedexpansion  
    for /R  d:\temp\  %%i in (.) do (
    if not "Folder1"=="%%~nxi" (  
    if "%%~nxi"=="%переменная1%" (
    rd /s /q "%%i"
    )
    )
    )
     

    For не может пропускать директории по которым проходит. Тут вступают в действия усливия проверяемые в if-ах. Если директория соответствует условиям - он удаляется, в остальных случаях - нет.

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 11:19 13-04-2007
    NIKZZZZ



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

    Цитата:
    А что он выводит?

    Нужно попробовать открыть этот лог в каком-нибудь редакторе, поддерживающим разные кодировки. Например этим. Судя по всему, это нормальный файл, который достаточно просто перекодировать. Если не получится - выложи куда-нибудь полный лог.
     
     

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 12:50 13-04-2007
    igor_andreev

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

    Цитата:
    Чтобы сделать флэшку загрузогной совершенно не надо знать C\H\S, достаточно просто ее отформатировать - (format /fs:ntfs k.

    А чего вдруг флэшка станет загрузочной от простого форматирования? Есть дивные утилиты от Hewlett-Packard для форматирования флешек, попутно и загрузочными их могут сделать. Гуевая+консольная SP27213.exe (1,97 Mb) и консольная отдельно sp27214.zip (502 Kb)

    Всего записей: 1704 | Зарегистр. 08-12-2004 | Отправлено: 13:26 13-04-2007 | Исправлено: igor_andreev, 13:43 13-04-2007
    testir



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Elroir
    удаляет все папки соответствующие  %переменная1%   ((
    получается что вот это  

    Цитата:
    if not "Folder1"=="%%~nxi" (

    условие не отрабатывается при соответствии папок, почему ??

    Всего записей: 15 | Зарегистр. 14-02-2007 | Отправлено: 13:36 13-04-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 100

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


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru