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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
    res2001



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    bomzzz
    Поправил код, почему то dir натравливался на текущий каталог.

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 17:09 13-09-2010
    bomzzz



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

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



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    если не правил переменные, файлов надо наложить в 2

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 17:10 13-09-2010
    bomzzz



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

    Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 17:11 13-09-2010
    res2001



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    какая ошибка?
    у меня все путем, если файлов нет в indir, то пишет "файл не найден".

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 17:13 13-09-2010
    bomzzz



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

    Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 17:15 13-09-2010
    sergioser

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    [q][/q]
    test

    Всего записей: 5 | Зарегистр. 13-09-2010 | Отправлено: 17:17 13-09-2010
    bomzzz



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

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



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

    Цитата:
    не видно какая. я даже батник сделал чтоб этот батник запустить и вывод в текстовый файл не напечатало

    а из командной строки запустить не судьба? чтоб сообщение осталось, ну или pause в конец вставить. Ну да ладно. Нашел ошибку - В indir и outdir имя диска по русски стояло. Код обновил.

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 17:17 13-09-2010
    bomzzz



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

    Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 17:18 13-09-2010
    res2001



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

    Цитата:
    эээээ , а файлы описаний?????

    какие файлы описаний? Что с ними делать? Как их опозновать?
     

    Цитата:
    заработало видимо имеет значение где батник лежит я его в корень положил

    Нет, не имеет значения где батник лежит. Спецом переменные завел, чтоб от привязки к месту расположения батника избавиться.

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 17:20 13-09-2010
    bomzzz



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

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



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

    Цитата:
    в то же время текстовые файлы, находящиеся в папке, могут и не являться файлами описаний

    Дык все же как отличить файл описания, если расширения и у других файлов может быть txt?
    Если тупо по расширению то так:

    Код:
    @echo off
    setlocal enabledelayedexpansion
    set "indir=c:\3\"
    set "outdir=c:\1\"
    for /f "tokens=*" %%a in ('DIR /A-D /B %indir% ') do (
    echo.%%a
        call :getdirname %%~na
        md %outdir%!getdirname!
        move %indir%%%a %outdir%!getdirname!\
        move %indir%%%~na.txt %outdir%!getdirname!\
    )
    exit
     
    rem Имя каталога в переменной !getdirname!
    :getdirname
    if "%2" equ "" (set "fnum=0" & set "getdirname=%1") else (set "fnum=%2" & set "getdirname=%1-%2")
    if exist %outdir%%getdirname%\nul (
        set /a "fnum+=1"
        call :getdirname %1 !fnum!
    ) else set "fnum="
    exit /b
     

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 17:25 13-09-2010
    bomzzz



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

    Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 17:25 13-09-2010
    sergioser

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

    Цитата:
    мак адреса заранее известного?

     
    ДА. они попадають в файл текстовый после виполнения предидущей команды.

    Всего записей: 5 | Зарегистр. 13-09-2010 | Отправлено: 17:28 13-09-2010
    bomzzz



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

    Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 17:29 13-09-2010
    res2001



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    bomzzz
    ну так как надо отрабатывает?
    Надо еще с длинными именами отладить, где пробелы в имени есть.

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 17:30 13-09-2010
    bomzzz



    Запрет на пост
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    sergioser
     
    ну через find делается это.
     
    Добавлено:
    res2001
    ну вроде работает. просто он задачу поставил сначала без описаний. потом сказал что есть описания, а потом я пока делал еще кучу исключений нарыл. поэтому батник хорошо бы целиком переделать.  
     
    Добавлено:
    еще одна ошибка нашлась для файлов текстовых со своими описаниями

    Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 17:30 13-09-2010
    res2001



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

    Код:
    @echo off
    setlocal enabledelayedexpansion
    set "indir=c:\2\"
    set "outdir=c:\1\"
    for /f "tokens=*" %%a in ('DIR /A-D /B %indir% ') do (
    echo.%%a
        call :getdirname "%%~na"
        md "%outdir%!getdirname!"
        move "%indir%%%a" "%outdir%!getdirname!\"
        move "%indir%%%~na.txt" "%outdir%!getdirname!\"
    )
    exit
     
    rem Имя каталога в переменной !getdirname!
    :getdirname
    if "%2" equ "" (set "fnum=0" & set "getdirname=%~1") else (set "fnum=%2" & set "getdirname=%~1-%2")
    if exist "%outdir%%getdirname%\nul" (
        set /a "fnum+=1"
        call :getdirname "%1" !fnum!
    ) else set "fnum="
    exit /b
     

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 17:33 13-09-2010
    bomzzz



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

    sergioser
    типа такого
    FOR /F %%I IN ('TYPE MY.TXT ^| FIND "мас адрецк"') do echo %%I

    Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 17:34 13-09-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.B0ard
    © Ru.B0ard 2000-2024

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru