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

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

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

    Цитата:
    sergioser
    TYPE MY.TXT | FIND /v "мас адрецк" && echo not found

    огромное спасибо
    то что надо
    как всегда все просто

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

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

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 16:58 14-09-2010 | Исправлено: king_stiven, 17:02 14-09-2010
    bomzzz



    Запрет на пост
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    res2001
    работкаит
     
    Добавлено:
    res2001
    а почему я в тексте батника CHCP не вижу, он с рускими букафками дружит???
     
    Добавлено:
    дружит если их в тексте самого батника нет
     
    Добавлено:
    и еще такое замечание если пути 1 и 2 равны то он работает вроде
     
    Добавлено:
    не вру только с одним файлом если больше не работает

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



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

    Цитата:
    не вру только с одним файлом если больше не работает

    Это ты о чем?

    Цитата:
    и еще такое замечание если пути 1 и 2 равны то он работает вроде

    думаю должен работать.Сам не пробовал.
     
    Добавлено:
    Проверил - работает. И с 1 файлом и с большим количеством.

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



    Запрет на пост
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    хм ща сеще рас попргобую
     
    Добавлено:
       
    пишет папка существует - не справляется с одинаковыми именами из за етага
     
    Добавлено:
    из за файла FAT12 имя которого равно имени папки
     
    Добавлено:
    я обошел это добавляя пробел слева к имени папки, с последующим переименованием
     
    Добавлено:
    res2001
    а почему просто из за существования файла FAT12 не создается папка FAT12-1, видимо проверка идет на существоаание похожей папки, а можно проверять сразу существование и папки и файла. так получица????
     
    Добавлено:
    потом файла FAT12.asm следующему по алфавиту, создасться папка FAT12, а файлу FAT12.zip папка FAT12-2
     
    Добавлено:
    вот тута наверно
    if exist "%outdir%%dname%\"
    вот так
    if exist "%outdir%%dname%"
     
    Добавлено:
    дадада. утверди только изменение.

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

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

    Код:
    for /f "delims=" %%a in ('DIR /A-D /B /O:N') do (
        if not "%%~xa"==".txt" (
            if "%%~na"=="%%a" (
                md "zzzz"
                move "%%a" "zzzz"
                move "%%a.txt" "zzzz"
                ren  "zzzz" "%%a"
            ) else if not exist "%%~na\" (
                md "%%~na\"
                move "%%a" "%%~na\"
                move "%%a.txt" "%%~na\"
            )
            for /f "delims=" %%b in ('DIR /A-D /B /O:N') do (
                if not "%%a"=="%%b" if not "%%~xb"==".txt" (
                    if "%%~na"=="%%~nb" (
                        set /a n+=1
                        set "k=%%b"
                        set "l=%%~nb"
                        call :ty
                    )
                )
            )
        )
        set n=
    )
    pause
    :ty
    md "%l%[%n%]"
    move "%k%" "%l%[%n%]"
    move "%k%.txt" "%l%[%n%]"

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 18:50 14-09-2010 | Исправлено: king_stiven, 18:54 14-09-2010
    bomzzz



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

    Цитата:

    @echo off
    set "indir=c:\Temp\"
    set "outdir=c:\Temp\"
    set "fnum="
    rem обрабатываем все кроме файлов *.txt
    call :work ".txt"
    rem обрабатываем .txt
    call :work ".txt.txt"
    exit
     
    :work
    for /f "tokens=*" %%a in ('DIR /A-D /B /O:N %indir% ^| find /v "%~1" ') do (
        set "getdirname=%%~na"
        set "fname=%%a"
        call :getdirname
        call md "%outdir%%%getdirname%%"
        2>nul call move "%indir%%%fname%%" "%outdir%%%getdirname%%\"
        2>nul call move "%indir%%%fname%%.txt" "%outdir%%%getdirname%%\"
    )
    exit /b
     
    rem Имя каталога в переменной %%getdirname%%
    :getdirname
    if not defined fnum (set "fnum=0" & call set "dname=%%getdirname%%") else (set /a "fnum+=1" & call set "dname=%%getdirname%%-%%fnum%%")
    if exist "%outdir%%dname%" (call :getdirname) else (set "fnum=" & call set "getdirname=%%dname%%" & set "dname=")
    exit /b

     
    Добавлено:
    king_stiven
    постоянно спрашивают уже сто рас отвечал
    UVScreenCamera
    http://www.uvsoftium.ru/
    GIF Movie Gear  - с ключом не трудно найти
    http://www.gamani.com/
    UVScreenCamera без ключа создает только авишки, если найдешь камеру с ключом а тут на форуме ее где то выкладывали, то она все равно делает гифики гавнянского качества. кодек для авишки выбирать надо в ручную и смотреть качество из реально утсановленного на компьютере пакета кодеков, естественно выставлять надо максимальный битрейт. я делаю через Microsoft Video 1 у меня так самые лучшие картинки получаюца.
     
    Добавлено:
    king_stiven
    работает но не спраивлся с таким именем Текстовый документ.txt

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

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    bomzzz
    Ну  
     
    @echo off
    chcp 1251 1>nul  2>nul
     
    поставь вначале, надеюсь про паузу не спросишь чем заменить?  
    goto :eof
     
     
     
     
    Колись давай, чем рисунки делаешь.

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 19:07 14-09-2010
    bomzzz



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

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

     
    Добавлено:
    res2001
    чё можно так подправить?

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

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

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 19:27 14-09-2010
    bomzzz



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

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



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

    Цитата:
    if exist "%outdir%%dname%"  

    Да, ты прав, это исправление позволит обходить вариант файлов без расширений.

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



    Запрет на пост
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    пожет переделкаешь на вариант с одной папкой одной переменной?    
    вроде работать будет в любыми вариантами имен
     
    Добавлено:
    а ета одно и тоже?
    if not defined fnum
    if "fnum"=""  
    вообще вкупиться не могу как CALL используется
     
    Добавлено:
    эта вообще че дает???
    call md "%outdir%%%getdirname%%"

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



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

    Цитата:
    а ета одно и тоже?
    if not defined fnum
    if "fnum"=""    

    У меня вторым условием не получается проверить наличие переменной.
     

    Всего записей: 240 | Зарегистр. 09-09-2005 | Отправлено: 00:08 15-09-2010
    bomzzz



    Запрет на пост
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ага точно
    @ECHO OFF
    COLOR 9F
    CLS
    if "fnum"=="" echo 111
    if not defined fnum echo 222
    pause
    ну просто странно что сета нет в начале
     
    Добавлено:
    king_stiven
    картинку - гифик можно засунуть в плеер и смотреть на паузе. возможно не каждый плеер. медиа класик точно гифик проигрывает
     
     
    Добавлено:
    страненько получаица
    @ECHO OFF
    COLOR 9F
    CLS
    set "fnum"=""
    if "fnum"=="" echo 111
    if not defined fnum echo 222
    pause

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



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

    Цитата:

    @ECHO OFF
    COLOR 9F
    CLS

    CHCP 1251>nul
    CD /D "C:\TEMP"
    CHCP 866>nul

     
    for /F "delims=" %%I in ('dir /A:-D /B') do (
          if exist "%%I" (
              if exist "%%~nI" (
                    set file=%%I
                    set name=%%~nI
                    set count=
                    call :next

              ) else (
                    MD "%%~nI"
                    MOVE "%%I" "%%~nI"
                    if exist "%%I.txt" MOVE "%%I.txt" "%%~nI"

              )
          )
    )
    PAUSE
    goto :eof

     
    :next
    set /a count=%count%+1
    if exist "%name%[%count%]" goto next
    md "%name%[%count%]"
    move "%file%" "%name%[%count%]"
    if exist "%file%.txt" MOVE "%file%.txt" "%name%[%count%]"
    if NOT exist "%name%" REN "%name%[%count%]\" "%name%"


    Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 05:32 15-09-2010 | Исправлено: bomzzz, 13:41 15-09-2010
    bomzzz



    Запрет на пост
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    а че так не получица????????????
     
    @ECHO OFF
    COLOR 9F
    CLS
    :noxt
    echo AAA
    call :next :noxt
    pause
    goto :eof
    :next
    echo %0
    shift
    echo %0

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

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

    Код:
    @echo off  
    chcp 1251 1>nul  2>nul
    for /f "delims=" %%a in ('DIR /A-D /B /O:N') do (
        if exist "%%a" (
            if "%%~na"=="%%a" (
                md "zzzz"
                move "%%a" "zzzz"
                move "%%a.txt" "zzzz"
                ren  "zzzz" "%%a"
            ) else (
                md "%%~na"
                move "%%a" "%%~na\"
                move "%%a.txt" "%%~na\"
            )
            for /f "delims=" %%b in ('DIR /A-D /B /O:N') do (
                if "%%~na"=="%%~nb" (
                    set /a n+=1
                    set "k=%%b"
                    set "l=%%~nb"
                    call :ty
                )
            )
        )
        set n=
    )
    goto :eof
    :ty
    md "%l%[%n%]"
    move "%k%" "%l%[%n%]"
    move "%k%.txt" "%l%[%n%]"

    Поставил себе, настройки не совсем нравяцца, например нельзя выставлять размер, немного большие гифики пока получаются.

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 08:12 15-09-2010
    bomzzz



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

    Цитата:
    @ECHO OFF
    COLOR 9F
    CLS
    CHCP 1251
    CD /D "C:\TEMP"
     
    for /F "delims=" %%I in ('dir /A:-D /B') do (
           if exist "%%I" (
            set file=%%I
            set name=%%~nI
            set count=
            set caunt=
            call :next
           )
    )
    PAUSE
    goto :eof
     
    :noxt
    set /a caunt=%caunt%+1
    set count=[%caunt%]
    :next
    if exist "%name%%count%" goto noxt
    md "%name%%count%"
    move "%file%" "%name%%count%"
    if exist "%file%.txt" MOVE "%file%.txt" "%name%%count%"

     
    Добавлено:
    king_stiven
    че поставил камеру что ли? размеры выставляются.
     
    Добавлено:
     

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

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    нет я про разрешение картинки, поменьше хотелось выставлять сразу без изменения разрешения у себя с 1280 1024    до 800 600

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 08:34 15-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