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

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

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

vu1tur (25-01-2010 12:41): лимит страниц, продолжение: http://forum.ru-board.com/topic.cgi?forum=62&topic=19668  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117

   

vu1tur



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

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

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

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 11:37 26-05-2009 | Исправлено: TechnicsKuzya, 13:53 27-12-2009
    01MDM



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

    Цитата:
    Первое файл спрятан глубже 1 уровня, то он неудоляется (т.е. в каталоге temp сносит, а в его подкоталогах и еще глубже нет)

     
    Да, что-то не так. При первом запуске действительно файлы остались. При повторном удалились..
     
    Другой вариант, с перемещением в temp.  

    Код:
     
    @echo off
     
    rd /s /q temp 2>nul  
    md temp\files 2>nul
     
    for /f %%i in (ext.txt) do (
        for /f "tokens=*" %%i in ('dir /b /s /a-d "%temp%\%%i"') do (
            echo %%i 1>>temp\moved.txt
            move /y "%%i" temp\files
        )
    )
     

    Файл ext.txt должен быть рядом с батником и иметь на каждой строчке по одной маске файлов, например *.tmp  

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 00:10 17-08-2009
    anachrom

    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    01MDM
    Спасибо, все в принципе просто, только я немогу разобраться с 2>nul
     
    Добавлено:
    А что бы список папок для прочистки из файла folder.txt
     так же
    for /f %%j in (folder.txt) do (
    дальше, просматриваются %%j на наличие в них %%i
    А вот в коде реализовать не получается
    Вот переписал что-то типа  
    for /f "tokens=*" %%j in ('dir /b /s /a-d "%%j\%%i"') do (
    а как правильно впихнуть ...

    Всего записей: 179 | Зарегистр. 18-11-2008 | Отправлено: 08:50 17-08-2009
    wolf0425



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

    Цитата:
    только я немогу разобраться с 2>nul  
    это подавление сообщений о ошибках - когда удалить/создать директорию не удалось

    Всего записей: 2929 | Зарегистр. 25-04-2007 | Отправлено: 11:36 17-08-2009
    M1chA



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Дано:
    1)Ноут ген.директора с Windows XP Home SP2 RUS
    2)К данному ноуту подключен сетевой принтер HP LaserJet 4200
    3)Сетевой принтер HP LaserJet 4200 и другие подобные принтеры подключены к Серверу Терминалов под управлением Windows 2003 server standart.
     
    Сама проблема:
     
    С периодичностью в 1-1,5 часа принтер HP LaserJet 4200 отваливается.
    Приходится его подключать заново. При подключении выскакивает соответственно окно запроса логина и пароля.
     
    Решение:
     
    Надо написать скрипт, котрый с периодичностью в 1-1,5 часа переподключал бы данный принтер.
    Помогите пожалуйста написать данный батничек,сам никогда не сталкивался с написанием бат-файлов.

    Всего записей: 283 | Зарегистр. 11-10-2006 | Отправлено: 12:26 17-08-2009 | Исправлено: M1chA, 13:53 17-08-2009
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    anachrom
    Поясни, что надо. Чистить в определенных папках из folder.txt или удалять эти папки?
     
    Кстати по поводу  'del /s', ошибка и вылет батника возникает при невозможности удалить файл, т.е все работает до первого "препятcтвия". В других случаях он отрабатывает. Не знаю что это, баг или фича. Опробовал на %TEMP% (где почти всегда есть "занятые" файлы) и на произвольной тестовой папке.  

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 17:03 17-08-2009
    gale

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    При попытке удалить файл с компакт диска выдаётся сообщение об ошибке "access is denied".  
    Можно ли как-нибудь скрыть это сообщение?

    Всего записей: 128 | Зарегистр. 09-03-2006 | Отправлено: 17:42 17-08-2009 | Исправлено: gale, 17:47 17-08-2009
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    gale
    К примеру autorun.exe на CD

    Код:
     
    del F:\autorun.exe 2>nul 1>&2
     


    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 17:52 17-08-2009
    gale

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

    Всего записей: 128 | Зарегистр. 09-03-2006 | Отправлено: 17:58 17-08-2009
    fd1136

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

    Цитата:

    Код:
    @echo off  
    setlocal
     
    for /f "tokens=*" %%i in ('netsh interface ip show config') do call:parse "%%i"
    goto:eof
     
    :parse
    set "str="
    echo "%1"
    pause

    echo %~1 | 1>nul findstr \".*\" && (
        for /f "tokens=3*" %%i in (%1) do echo %%i %%j 1>>file.txt
        goto:eof
    )
     
    for /f "tokens=2 delims=:" %%i in ('echo %~1 ^| findstr [0-9]') do set "str=%%i"
    if not "%str%"=="" echo %str:~1% 1>>file.txt  

    Спасибо за помощь! Подчерпнул для себя много полезного!
    Но, к сожалению, у меня не работает и не могу понять в чем беда.
    В коде вставил две строки (для промежуточного вывода) и обозначил их жирным.
    do call :parse действительно передает "Настройка интерфейса "Канал к коллективному разуму"", а вот в самой процедуре уже оказывается "Настройка интерфейса "Канал" и поэтому далее ничего не получается!

    Всего записей: 49 | Зарегистр. 09-11-2006 | Отправлено: 18:20 17-08-2009 | Исправлено: fd1136, 18:21 17-08-2009
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    fd1136
    Попробуй такой вариант, вроде должен отработать (хотя я не уверен - не могу протестировать):

    Код:
     
    @echo off  
    setlocal
     
    for /f "tokens=*" %%i in ('netsh interface ip show config') do call:parse %%i
    goto:eof
     
    :parse
    set "str="
    echo %* | 1>nul findstr /v ":" && (
        for /f "tokens=3*" %%i in ("%*") do echo %%i %%j 1>>file.txt
        goto:eof
    )
     
    for /f "tokens=2 delims=:" %%i in ('echo %* ^| findstr [0-9]') do set "str=%%i"
    if not "%str%"=="" echo %str:~1% 1>>file.txt
     


    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 18:51 17-08-2009
    wolf0425



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    убиваю по taskkill.exe /f /t /im задачу, висящую в трее, перезапускаю ее - вижу в трее второй значок. Как-то можно скомандовать виндам убрать мусор из трея (т.е. не проводя над значками мышкой)?

    Всего записей: 2929 | Зарегистр. 25-04-2007 | Отправлено: 00:06 18-08-2009
    11100

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Здравствуйте. У меня вопрос.У меня есть папка с музыкой , в ней файлы называются следующим образом 1.mp3, 2.mp3, 3.mp3 и т.д.Еще есть текстовый файл с названиями этих песен и именами исполнителей в формате: Исполнитель - «название песни»  
     Необходимо переименовать файлы 1.mp3, 2.mp3, 3.mp3 в соответствующие им в текстовом файле . Возможно ли реализовать это через bat файл?

    Всего записей: 81 | Зарегистр. 02-04-2007 | Отправлено: 01:36 18-08-2009
    anachrom

    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    01MDM
    Чистить в папках из folder.txt файлы по маске из ext.txt

    Всего записей: 179 | Зарегистр. 18-11-2008 | Отправлено: 08:41 18-08-2009
    Serhi84

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

    Цитата:
    с расширением - правишь первый вариснт 01MDM
     
     
    Код:
    @echo off
    setlocal
    for /f "tokens=*" %%i in ('dir /b EJ*') do call:rename "%%i"
    goto:eof  
     
    :rename
    set "name=%~n1"
    set name
    ren %1 "%name:EJ=EL%%date%%~x1"
     

     
    а как вместо текущей даты сделать дату модификации, то есть с использованием параметра %%~tx? (К примеру, чтобы итоговый файл выглядел так ELxxxx140609). Пробовал по-всякому, в т.ч.
     

    Код:
     
    set "dat=%~t1"
    set dat
    ren %1 "%name:EJ=EL%%dat:~0,2%%dat:~3,2%%dat:~8,2%%~x1" , но не работает
     


    Всего записей: 45 | Зарегистр. 31-01-2008 | Отправлено: 10:54 18-08-2009 | Исправлено: Serhi84, 10:55 18-08-2009
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    anachrom
    В folder.txt полный путь к папке (без кавычек). Для каждой папки отдельная строка

    Код:
     
    @echo off
    chcp 1251 1>nul
     
    rd /s /q temp 2>nul  
    md temp\files 2>nul
     
    for /f "tokens=*" %%i in (folder.txt) do (
        pushd "%%i"
        for /f %%i in ('type "%~dp0ext.txt"') do (
            for /f "tokens=*" %%i in ('dir /b /s /a %%i') do (
                echo %%i 1>>"%~dp0temp\del.txt"
                move /y "%%i" "%~dp0temp\files"  
            )
        )
        popd
    )
     
    chcp 866 1>nul  
     

     
     
    Добавлено:
    Serhi84

    Код:
     
    @echo off
    setlocal
    for /f "tokens=*" %%i in ('dir /b EJ*') do call:rename "%%i" %%~ti
    goto:eof  
     
    :rename
    set "name=%~n1"
     
    set "date=%2"
    set "date=%date:2009=09%"
     
    ren %1 "%name:EJ=EL%%date:.=%%~x1"  
     


    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 18:13 18-08-2009
    fd1136

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    01MDM
    Последний вариант, предложенный тобой, с некоторыми модификациями заработал!
    Спасибо!
     
    Чтобы не мусорить в ветке, не размещаю этот пакетник. Но, если вдруг кому такой файл потребуется - сразу же выложу.  
     
    Файл создавал для себя, для быстрой смены настроек TCP/IP под меня тех компов, которые приносят из других сеток (с возможностью вернуть старые настройки "малой кровью").
     
    lan ask - выводит на экран настройки сетевых интерфейсов
    lan ask <filename.lan> - то-же, но в файл (и здесь ОГРОМНОЕ спасибо 01MDM, который помог сделать файл пригодным для последующего импорта настроек)
    lan set <IP> [<InterfaceName>] - немного личного , дефолтовая настройка под свою сеть (IP - только последний октет)
    lan fset <filename.lan> - устанавливает настройки TCP/IP из файла, подготовленного руками или из команды lan ask <filename>
    lan clear - сбрасывает настройки TCP/IP в дефолтные Windows
    lan - выводит минимальные подсказки
    .... - еще что-то, по-моему , уже убегаю, некогда смотреть код ...

    Всего записей: 49 | Зарегистр. 09-11-2006 | Отправлено: 21:33 18-08-2009
    king_stiven

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

    Всего записей: 2232 | Зарегистр. 17-07-2006 | Отправлено: 23:24 18-08-2009 | Исправлено: king_stiven, 23:45 18-08-2009
    HaK1R



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    king_stiven
    Как с английским, поймешь? А то я не знаю, может ли она монтировать, но создавать может
    CDIMAGE 2.52 CD-ROM and DVD-ROM Premastering Utility
    Copyright (C) Microsoft, 1993-2000.  All rights reserved.
    For Microsoft internal use only.
     
    Usage: CDIMAGE [options] sourceroot targetfile
     
           -l  volume label, no spaces (e.g. -lMYLABEL)
           -t  time stamp for all files and directories, no spaces, any delimite
                 (e.g. -t12/31/2000,15:01:00)
           -g  encode GMT time for files rather than local time
           -h  include hidden files and directories
           -n  allow long filenames (longer than DOS 8.3 names)
           -nt allow long filenames, restricted to NT 3.51 compatibility
                 (-nt and -d cannot be used together)
           -d  don't force lowercase filenames to uppercase
           -c  use ANSI filenames versus OEM filenames from source
           -j1 encode Joliet Unicode filenames AND generate DOS-compatible 8.3
                 filenames in the ISO-9660 name space (can be read by either
                 Joliet systems or conventional ISO-9660 systems, but some of th
                 filenames in the ISO-9660 name space might be changed to comply
                 with DOS 8.3 and/or ISO-9660 naming restrictions)
           -j2 encode Joliet Unicode filenames without standard ISO-9660 names
                 (requires a Joliet operating system to read files from the CD)
               When using the -j1 or -j2 options, the -n, -nt, and -d options
                 do not apply and cannot be used.
           -js non-Joliet "readme.txt" file for images encoded with -j2 option
                 (e.g. -jsc:\location\readme.txt). This file will be visible as
                 the only file in the root directory of the disc on systems that
                 do not support the Joliet format (Windows 3.1, NT 3.x, etc).
           -u1 encode "UDF-Bridge" media
           -u2 encode "UDF" file system without a mirror ISO-9660 file system
                 (requires a UDF capable operating system to read the files)
           -ur non-UDF "readme.txt" file for images encoded with -u2 option
                 (e.g. -usc:\location\readme.txt). This file will be visible as
                 the only file in the root directory of the disc on systems that
                 do not support the UDF format.
           -us sparse UDF files
           -ue embed file data in UDF extent entry
           -uf embed UDF FID entries
           -uv UDF Video Zone compatibility enforced
           -b  "El Torito" boot sector file, no spaces
                 (e.g. -bc:\location\cdboot.bin)
           -p  Platform ID for the "El Torito" boot catalog
           -e  Do not set floppy emulation mode in El Torito boot catalog
           -s  sign image file with digital signature (no spaces, provide RPC
                 server and endpoint name like -sServerName:EndPointName)
           -x  compute and encode "AutoCRC" values in image
           -o  optimize storage by encoding duplicate files only once
           -oc slower duplicate file detection using binary comparisons rather
                 than MD5 hash values
           -oi ignore diamond compression timestamps when comparing files
           -os show duplicate files while creating image
               (-o options can be combined like -ocis)
           -w  warning level followed by number (e.g. -w4)
               1  report non-ISO or non-Joliet compliant filenames or depth
               2  report non-DOS compliant filenames
               3  report zero-length files
               4  report each file name copied to image
           -y  test option followed by number (e.g. -y1), used to generate
                 non-standard variations of ISO-9660 for testing purposes:
               1 encode trailing version number ';1' on filenames (7.5.1)
               2 round directory sizes to multiples of 2K (6.8.1.3)
               5 write \i386 directory files first, in reverse sort order
               6 allow directory records to be exactly aligned at ends of sector
                   (ISO-9660 6.8.1.1 conformant but breaks MSCDEX)
               7 warn about generated shortnames for 16-bit apps under NT 4.0
               b blocksize 512 bytes rather than 2048 bytes
               d suppress warning for non-identical files with same initial 64K
               l UDF - long ads used in file entries instead of short ads
               r UDF - number of ad's is random
               w open source files with write sharing
               t load segment in hex for El Torito boot image (e.g. -yt7C0)
               f use a faster way to generate short names
           -k  (keep) create image even if fail to open some of the source files
           -m  ignore maximum image size of 681,984,000 bytes
           -a  allocation summary shows file and directory sizes
           -q  scan source files only, don't create an image file
     
           NOTE: Many of these options allow you to create CD images
                 that are NOT compliant with ISO-9660 and may also
                 NOT be compatibile with one or more operating systems.
                 If you want strict ISO and DOS compliance, use the -w2

    Всего записей: 136 | Зарегистр. 04-05-2009 | Отправлено: 03:32 19-08-2009
    igor_andreev

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    king_stiven
    filedisk попробуй
    http://www.acc.umu.se/~bosse/
     
    Я им одно время пользовался вместе с wdl.exe кажется от этого автора, но чего-то на сайте не нашел эту утилиту, на рапиду положу
    http://rapidshare.com/files/268967013/wdl.zip (~13 Kb)
     
    Это чтобы не устанавливать рег-файлом драйвер filedisk, а загружать только когда он нужен.
    Загрузить: wdl /l filedisk.sys
    Выгрузить: wdl /u filedisk.sys

    Всего записей: 1705 | Зарегистр. 08-12-2004 | Отправлено: 06:49 19-08-2009 | Исправлено: igor_andreev, 07:14 19-08-2009
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    igor_andreev
    Спасибо, если можно положить на http://zalil.ru/ .  
    HaK1R
    CDIMAGE вроде не монтирует.

    Всего записей: 2232 | Зарегистр. 17-07-2006 | Отправлено: 08:41 19-08-2009
       

    Страницы: 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 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 7
    vu1tur (25-01-2010 12:41): лимит страниц, продолжение: http://forum.ru-board.com/topic.cgi?forum=62&topic=19668


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru