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

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

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

vu1tur (29-07-2011 12:47): Задачи на bat-файлах 11
 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

vu1tur



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

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

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

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 11:53 09-01-2011 | Исправлено: mazafakermazafaka, 11:22 04-06-2011
    ComradG



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

    Всего записей: 2038 | Зарегистр. 05-07-2008 | Отправлено: 22:46 02-07-2011
    lorents



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Добрый день!
    Есть файлы с названием png*.log, где * - некое неизвестное число. Подскажите, как можно удалить такой файл?

    ----------
    Image Catalyst - оптимизация изображений без потери качества

    Всего записей: 3297 | Зарегистр. 30-12-2007 | Отправлено: 13:34 03-07-2011
    5peciali5t



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    lorents
    при известном конкретном каталоге
    del /f /q png*.log (del /f /q каталог\png*.log)

    ----------
    Intel Ci7-2600K 3.4@4.5 Ghz/GeForce GTX 550 Ti 1024Mb/240Gb SSD+9Tb HDD's/RAM 16 Gb DDR3 1600/23" ACER T231Hbmid Multi-Touch Sensor Display

    Всего записей: 1472 | Зарегистр. 17-07-2009 | Отправлено: 13:42 03-07-2011
    lorents



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    5peciali5t
    Как все гениально
     
    Спасибо большое!

    ----------
    Image Catalyst - оптимизация изображений без потери качества

    Всего записей: 3297 | Зарегистр. 30-12-2007 | Отправлено: 13:53 03-07-2011
    qqqbbb

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Как можно текущий путь сохранить как переменную и удалить ее из текстового файла?

    Всего записей: 30 | Зарегистр. 25-07-2010 | Отправлено: 16:50 03-07-2011
    wolf0425



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

    Цитата:
    Как можно текущий путь сохранить как переменную

    set "peremennaya=%cd%"

    Цитата:
     и удалить ее из текстового файла?

    кого удалить? переменную? пример пиши - чего удалять.
     

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 17:12 03-07-2011
    ssi



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    приветствую всех. Прошу помощи в батнике.
    имеется следующий батник:
     
    rem @echo off
    set reg_path=hkcu\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders
    set reg_param=Desktop
    reg query "%reg_path%" /v "%reg_param%" >c:\windows\temp\1.txt
    for /F "tokens=1,2,3" %%a in (c:\windows\temp\1.txt) do if "%%a"=="%reg_param%" set reg_value=%%c
    echo %reg_value%
     
    нашел на sql.ru. Он берет из реестра и помещает в переменную reg_value путь к рабочему столу текущего пользователя. Собсна это и требуется так как папка "рабочий стол" перемещена у пользователей на диск D.  
    Все работает, НО в переменную помещается не, к примеру, d:\profile\username\Рабочий стол, а d:\profile\username\Рабочий.  Дело я так понимаю в цикле, но опыта у меня с ними нет. Подскажите как правильно надо сделать?

    Всего записей: 687 | Зарегистр. 19-11-2002 | Отправлено: 21:52 03-07-2011
    5peciali5t



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    ssi
    а так вполне возможно где то нехватает вполне безобидных кавычек для того чтобы корректно отображались пути содержащие пробелы, возможно тут (не проверял)
    set "reg_value=%%c"
     
    альтернатива, имеющая массу других полезных ключей, переменных и опций, но требующая исполняемого файла (примерно 35 кб)
    nircmd - ссылка есть в полезных утилитах в шапке
    возможности
    и конкретно вам подошедшая переменная, адрес которой эта утилита сама вычисляет
    nircmd.exe "~$folder.desktop$"

    ----------
    Intel Ci7-2600K 3.4@4.5 Ghz/GeForce GTX 550 Ti 1024Mb/240Gb SSD+9Tb HDD's/RAM 16 Gb DDR3 1600/23" ACER T231Hbmid Multi-Touch Sensor Display

    Всего записей: 1472 | Зарегистр. 17-07-2009 | Отправлено: 22:06 03-07-2011 | Исправлено: 5peciali5t, 22:12 03-07-2011
    qqqbbb

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

    Цитата:
    пример пиши - чего удалять.

    Неправильно задал вопрос. Нужно из файла удалить текст который соответствует текущему пути. То есть строка С:\bigfolder\mfolder\sfolder\file.ext должна превратиться в sfolder\file.ext если батник запущен в папке mfolder.

    Всего записей: 30 | Зарегистр. 25-07-2010 | Отправлено: 23:17 03-07-2011
    ssi



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

    Цитата:
    а так вполне возможно где то нехватает вполне безобидных кавычек для того чтобы корректно отображались пути содержащие пробелы, возможно тут (не проверял)
    set "reg_value=%%c"  

     
    не работает
     
    Утилиту посмотрю, но хотелось бы решить без костылей

    Всего записей: 687 | Зарегистр. 19-11-2002 | Отправлено: 23:20 03-07-2011
    Elroir



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

    Код:
     
    @echo off
    set "reg_path=hkcu\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders"
    set "reg_param=Desktop"
    for /F "tokens=1,2*" %%a in ('reg query "%reg_path%" /v "%reg_param%"') do if "%%a"=="%reg_param%" set "reg_value=%%c"
    echo %reg_value%
     


    ----------
    "В интернете есть все, но не всегда"

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 00:09 04-07-2011 | Исправлено: Elroir, 00:11 04-07-2011
    Nagual



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ssi
    echo "%USERPROFILE%\Рабочий стол" не срабатывает?

    Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 00:31 04-07-2011
    5peciali5t



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

    Цитата:
    echo "%USERPROFILE%\Рабочий стол" не срабатывает?

    в его случае может и сработает, но это не максимально универсально (винда может быть в другой раз на нерусском языке)

    ----------
    Intel Ci7-2600K 3.4@4.5 Ghz/GeForce GTX 550 Ti 1024Mb/240Gb SSD+9Tb HDD's/RAM 16 Gb DDR3 1600/23" ACER T231Hbmid Multi-Touch Sensor Display

    Всего записей: 1472 | Зарегистр. 17-07-2009 | Отправлено: 01:34 04-07-2011
    adam264

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Здравствуйте! Требуется удалить из log-файла батником подстроки с пробелами:
    "File: "
    " Compressed: NO"
    "Extraction result: SUCCESS!"
     
    Я так понимаю что искать нужно с помощью команды FINDSTR/C:строка, но как перебирать строки в файле?
    Помогите пожалуйста разобраться.

    Всего записей: 23 | Зарегистр. 15-02-2009 | Отправлено: 02:32 04-07-2011
    Elroir



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

    Цитата:
    но как перебирать строки в файле?


    Код:
     
    for /F ... %%a in (file.txt) do (  
    ...
    )
     

    Справка: for /?

    ----------
    "В интернете есть все, но не всегда"

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 02:50 04-07-2011 | Исправлено: Elroir, 02:52 04-07-2011
    adam264

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Понятно что через FOR. Я вот на основе аналогичного примера что-то навоял, но почему-то выводит пустой файл, видимо пропускает оставшееся содержимое строки если в ней уже что-то нашёл.
     
    @echo off  
    chcp 1251  
     
    for /f "tokens=*" %%a in ('more^<Abel.log') do call :_replace %%a  
    goto eof  
     
    :_replace  
    set i=%*  
    echo %i%  
    set i=%i:File: =%  
    set i=%i: Compressed: NO=%  
    set i=%i:Extraction result: SUCCESS!=%  
    set i=%i:доча=сын% echo %i%>>spisok.txt  
    goto eof  
     
    :eof  

    Всего записей: 23 | Зарегистр. 15-02-2009 | Отправлено: 03:13 04-07-2011
    king_stiven

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

    Цитата:
    Требуется удалить из log-файла батником подстроки с пробелами:  
    "File: "  
    " Compressed: NO"  
    "Extraction result: SUCCESS!"


    Код:
    @echo off
    chcp 1251
    for /f "delims=" %%a in ('Abel.log') do (
        echo "%%a"| FINDSTR /C:"File: " || echo "%%a"| FINDSTR /C:" Compressed: NO" ||echo "%%a"| FINDSTR /C:"Extraction result: SUCCESS!"
        if errorlevel 1 1>>1.txt echo %%a
    )

     
    или используй
    FINDSTR /g:файл
    Получает строки поиска из заданного файла.

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 07:37 04-07-2011 | Исправлено: king_stiven, 08:00 04-07-2011
    ssi



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

    Цитата:
    @echo off
    set "reg_path=hkcu\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders"
    set "reg_param=Desktop"
    for /F "tokens=1,2*" %%a in ('reg query "%reg_path%" /v "%reg_param%"') do if "%%a"=="%reg_param%" set "reg_value=%%c"
    echo %reg_value%  

     
    спасибо большое, работает!
     
    Nagual

    Цитата:
    echo "%USERPROFILE%\Рабочий стол" не срабатывает?

     эта команда указывает на стандартную папку "Рабочий стол" в "Documents & Settings"

    Всего записей: 687 | Зарегистр. 19-11-2002 | Отправлено: 09:07 04-07-2011 | Исправлено: ssi, 09:24 04-07-2011
    adam264

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

    Цитата:
    @echo off  
    chcp 1251  
    for /f "delims=" %%a in ('Abel.log') do (  
        echo "%%a"| FINDSTR /C:"File: " || echo "%%a"| FINDSTR /C:" Compressed: NO" ||echo "%%a"| FINDSTR /C:"Extraction result: SUCCESS!"  
        if errorlevel 1 1>>1.txt echo %%a  
    )

    king_stiven, батник открывает тот файл и ничего не происходит.
     
    вот часть файла, он состоит из аналогичных строк:
    File: bt.paa Compressed: NO
    Extraction result: SUCCESS!
    File: pipipish.pac Compressed: NO
    Extraction result: SUCCESS!
    File: pishpish.pac Compressed: NO
    Extraction result: SUCCESS!
     

    Всего записей: 23 | Зарегистр. 15-02-2009 | Отправлено: 10:09 04-07-2011 | Исправлено: adam264, 10:44 04-07-2011
    king_stiven

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

    Код:
    @echo off
    chcp 1251
    for /f "delims=" %%a in (Abel.log) do (
        echo "%%a"| FINDSTR /C:"File: " || echo "%%a"| FINDSTR /C:" Compressed: NO" ||echo "%%a"| FINDSTR /C:"Extraction result: SUCCESS!"
        if errorlevel 1 1>>1.txt echo %%a
    )

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 12:50 04-07-2011
       

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

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 10
    vu1tur (29-07-2011 12:47): Задачи на bat-файлах 11


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru