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

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

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

vu1tur (09-01-2011 11:53): лимит страниц, продолжение — http://forum.ru-board.com/topic.cgi?forum=62&topic=22143  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 101

   

vu1tur



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

 
Важно: копируя батник через буфер обмена из форума не забывайте удалять пробелы в конце каждой строки, т.к. в некоторых случаях из-за этого программа будет работать неправильно!!!
 
Также для удаления концевых пробелов пользуйтесь скриптом от Nagual, или VBS-Скрипт-Модулем от ViSiToR.
 
Для перекодирования кирилицы 866<—>1251 пользуйтесь онлайн сервисом Перекодировщик кириллицы

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

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 17:45 04-09-2010 | Исправлено: Accessor, 18:04 28-09-2010
    manstopper



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

    Цитата:
    ren *.xxx *.yyy

    если бы все так просто было, я б сюда не писал
    во вложенных папках так не берет

    Всего записей: 76 | Зарегистр. 17-12-2005 | Отправлено: 17:06 21-10-2010
    bomzzz



    Запрет на пост
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    тогда делай через FOR.

    Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 17:08 21-10-2010 | Исправлено: bomzzz, 17:09 21-10-2010
    manstopper



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    for /f "tokens=*" %%a in ('dir /b /s *.zzz') do ren %%a *.ttt
    пишет ошибка в синтаксисе
    в чем ошибка моя?

    Всего записей: 76 | Зарегистр. 17-12-2005 | Отправлено: 17:10 21-10-2010
    bomzzz



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

    Цитата:

    ECHO OFF
    COLOR 9F
    CLS
    FOR /R "%~DP0" %%I IN (*.*) DO (
    if %%~xI==.yyy REN "%%I" "%%~nI.xxx"
    )
    pause

    Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 17:18 21-10-2010 | Исправлено: bomzzz, 17:22 21-10-2010
    manstopper



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    bomzzz
    ошибка в синтаксисе пишет
    в моей строке проблему нашел
    при наличии пробелов в пути - ошибка
    если пробелов нет, то работает
     
    Update: Все работает, спасибо тебе огромное! Просто скопировал неправильно со страницы.
     
    Update2:
    king_stiven
     

    Цитата:
    FOR /R %%I IN (*.xxx) DO REN "%%I" "%%~nI.yyy"

     
    И твой вариант прекрасно работает, спасибо

    Всего записей: 76 | Зарегистр. 17-12-2005 | Отправлено: 17:23 21-10-2010 | Исправлено: manstopper, 09:16 22-10-2010
    bomzzz



    Запрет на пост
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    *.ttt  - ошибка тута
     
    Добавлено:
    ну кавычки еще нуны. у себя я исправил. вроде работает
     
    Добавлено:
    "%%I" "%%~nI.xxx"   так же сделкай, только у тебя /b это имена без путей

    Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 17:24 21-10-2010
    king_stiven

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

    Код:
    FOR /R %%I IN (*.xxx) DO REN "%%I" "%%~nI.yyy"

    Всего записей: 2167 | Зарегистр. 17-07-2006 | Отправлено: 17:53 21-10-2010 | Исправлено: king_stiven, 17:54 21-10-2010
    LikvidatorMax

    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Цикл
    For /R %%i In (%Ext%) Do (
    )
    Просматривает все файлы в глубину.
    Но немного не пойму как из %%i (там имя файла) вытащить путь.
     
    Нашел про %~p, но если я правильно понимаю, то это не работает для такой переменной.
     
    Подскажите, как лучше сделать.

    Всего записей: 36 | Зарегистр. 05-01-2009 | Отправлено: 20:39 22-10-2010
    wolf0425



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

    Цитата:
    Но немного не пойму как из %%i (там имя файла) вытащить путь.  

    for /r %%i in ( *.txt ) do echo path=%%~dpi file=%%~nxi

    Всего записей: 2920 | Зарегистр. 25-04-2007 | Отправлено: 20:49 22-10-2010
    BagaBaga

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Не подскажете, как с помощью sed преобразовать строчки вида
     
    1/первый, второй/
    2/третий, четвертый, пятый/
     
    к виду
    первый 1
    второй 1
    третий 2
    четвертый 2
    пятый 2

    Всего записей: 463 | Зарегистр. 14-11-2005 | Отправлено: 20:59 22-10-2010
    wolf0425



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    BagaBaga
    придумать как зацикливать мне пока лень, для макс=трех параметров в строке проще тупо влоб:

    Код:
    sed -r "s#([0-9])/([^ ]*), ([^/]*)/#\2 \1\n\1/\3/#gi;s#([0-9])/([^ ]*), ([^/]*)/#\2 \1\n\1/\3/#gi;s#([0-9])/([^/]*)/#\2 \1#gi" <1.txt

    вот если тебе надо сильно длинные списки - придется думать...

    Всего записей: 2920 | Зарегистр. 25-04-2007 | Отправлено: 21:33 22-10-2010 | Исправлено: wolf0425, 21:36 22-10-2010
    BagaBaga

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Ок. Спасибо!
     
    Еще один вопрос: в коде понадобилось кое-что модифицировать - перед всеми скобками добавить содержимое переменной %%g  
    Попробовал заменить echo. на echo %%g.  , но не помогло. В %%g хранится имя папки, например, "Параметры:"

    Всего записей: 463 | Зарегистр. 14-11-2005 | Отправлено: 23:13 22-10-2010
    wolf0425



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

    Цитата:
    но не помогло. В %%g хранится имя папки, например, "Параметры:"  
    ты уверен что у тебя переменная %%g а не %g% ??
    приведи код который у тебя не работает.
     

    Всего записей: 2920 | Зарегистр. 25-04-2007 | Отправлено: 00:07 23-10-2010
    BagaBaga

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Переменная с двумя %, т.к. запускается из батника...

    Код:
     
       for /D %%g in (a??) do (
        for %%a in (.\%%g\auth.1,.\%%g\title.1) do for /f "usebackq delims=" %%i in ("%%~a") do 0>nul set /p="[%%i]"  
        echo[%%g].
     
           )
     

    Запускается батник. Перебирает все папки вида а?? (в действительности паки имеют имена от а00 до а99, хотя шаблон пропустит и aBC). Выводит (точнее, мне казалось, что должен) в консоль [имя папки][автор][название].
    Собственно, была надежда, что [имя папки] появится до двух склееных строк, но в реальности - позже и без одной "["

    Всего записей: 463 | Зарегистр. 14-11-2005 | Отправлено: 01:34 23-10-2010
    SAOPP

    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Ребят, подскажите.
     
    Есть необходимость перерасшаривать папку, из-за того, что по всему видимому нарушается по каким-то причинам наследования того самого расшаривания - из-за чего, смотря в папку из другой машины, некоторые подкаталоги оказываются пустыми...
     
    Решается это дело следующим образом:
    1. отменить расшаривание папки, к примеру d:\folder\
    2. запуск команды icacls d:\folder\ /reset /T /C - которая и решает проблему наследования очищая атрибуты
    3. заново расшарить каталог d:\folder\ с добавлением к нему соавтора Гость
     
    Побегав по хелпу, как-то не понял момент с расшариванием через cmd, ткните носом пожалуйста, заранее спасибо

    Всего записей: 1048 | Зарегистр. 28-11-2004 | Отправлено: 12:46 23-10-2010
    wolf0425



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    BagaBaga
    Цитата:
    Собственно, была надежда, что [имя папки] появится до двух склееных строк, но в реальности - позже и без одной "["  
    выводит ровно то, что написал.
    а хотел написать вот это:

    Код:
    @echo off
    for /D %%g in (a??) do (
        0>nul set /p="[%%g]"
        for %%a in (.\%%g\auth.1,.\%%g\title.1) do for /f "usebackq delims=" %%i in ("%%~a") do 0>nul set /p="[%%i]"
        echo.  
    )

     
     
    SAOPP

    Цитата:
    Побегав по хелпу, как-то не понял момент с расшариванием через cmd, ткните носом пожалуйста, заранее спасибо

    net share /?

    Всего записей: 2920 | Зарегистр. 25-04-2007 | Отправлено: 15:15 23-10-2010 | Исправлено: wolf0425, 15:16 23-10-2010
    lid111

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Задача, наверное, пустячная для знатока: нужен скрипт, который пересохраняет все текстовые файлы в указанном каталоге (или в каталоге где находится) в кодировке 866 (файлы имеют расширение lst, хотя это, пожалуй, неважно?).

    Всего записей: 1451 | Зарегистр. 15-09-2006 | Отправлено: 07:13 24-10-2010
    bomzzz



    Запрет на пост
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    lid111
    http://www.alonewolfsoft.narod.ru/page04.htm

    Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 07:17 24-10-2010
    lid111

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    оперативненько, спасибо.
     
    Добавлено:
    bomzzz, нет, не годится - там только txt-файлы обрабатывает

    Всего записей: 1451 | Зарегистр. 15-09-2006 | Отправлено: 07:29 24-10-2010
    bomzzz



    Запрет на пост
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    переименуй батником сначала туда потом обратно

    Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 07:44 24-10-2010
       

    Страницы: 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 101

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 9
    vu1tur (09-01-2011 11:53): лимит страниц, продолжение — http://forum.ru-board.com/topic.cgi?forum=62&topic=22143


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

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.Board
    © Ru.Board 2000-2020

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru