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

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

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    INKOGNI
    А не проще в групповых политиках включить: Административные шаблоны>>Компоненты Widows>>Диспетчер вложений>>Удаление сведений о зоне происхождения.

    Всего записей: 711 | Зарегистр. 05-12-2008 | Отправлено: 19:53 23-03-2011
    INKOGNI



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    kirsha
    мне нужно было именно решение в виде батника или утилита, которая удаляет эти потоки. Похоже с батником возникло затруднение. Зато на просторах инета нашел несколько решений. Например утилитку STREAMS (от Марка Руссиновича) с ключем -d и потоки в указанной директории у всех файлов пропадают автоматом. И нет необходимости настраивать виндовс или разблокировать каждый файл по отдельности.
     
    Добавлено:
    Вот мое решение: http://rghost.ru/4896824
    Народ,  как исправить батник, у меня стоит папка "C:\1" на удаление потоков, а мне нужно, чтоб удалялось в той же папке, где сам батник и утила?

    Всего записей: 1355 | Зарегистр. 09-01-2006 | Отправлено: 20:14 23-03-2011
    01MDM



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

    Цитата:
    Похоже с батником возникло затруднение.

    А зачем батник, когда есть streams? Можно и батником:

    Код:
     
    @echo off
     
    for %%i in (*.*) do (
     
        ren "%%i" "%%i.stream"
        1>"%%i" type "%%i.stream"
        del "%%i.stream"  
     
    )
     


    ----------
    Вопросы в личке останутся без ответа

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 20:44 23-03-2011
    INKOGNI



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    01MDM
    отлично, спасибо, то что нужно было изначально

    Всего записей: 1355 | Зарегистр. 09-01-2006 | Отправлено: 20:53 23-03-2011 | Исправлено: INKOGNI, 21:56 23-03-2011
    sL4yer



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

    Цитата:
    А если в каталоге и то и другое есть, то обработаются только флаки. Это так и задумано?  

    нет, вот тут и прокол . Если есть флак - переганяю его в вейв, а потом вейв в мп3. Нужно просто переставить местами .
     

    Цитата:
    таким циклом: for %%i in (*.wav *.flac) do ...  

    точно! Только нужно добавить %1\*.wav, так как батник запускается из другой директории, и это FLAC -d "%1\%%i" -f заменить FLAC -d "%%i" -f. Так увлёкся "for /f", что забыл что существует и другой способ .
     

    Цитата:
    И можно не проверять на присутствие файлов - если файлов нет, то цикл не выполнится, а тебе это и нужно.

    думаю лучше добавить в конец что-то типа такого, что бы было понятно, почему программа вылетела/не работает .
    ) else (
        echo Error: Files not found.
    )
     
    конечная переработка

    Код:
     
    if /i exist "%1\*.WAV" (
        REM ПЕРЕБИРАЕМ ВСЕ ФАЙЛЫ В ПАПКЕ НАЗНАЧЕНИЯ И ПЕРЕДАЕМ ИХ КОНВЕРТЕРУ В КАЧЕСТВЕ ПАРАМЕТРОВ
        for %%i in (%1\*.WAV) do call :convert %1 "%%i"
    ) else if /i exist "%1\*.FLAC" (
        REM ТОЖЕ САМОЕ ДЛЯ (.FLAC)
        for %%i in (%1\*.FLAC) do (
            FLAC -d "%1\%%i" -f
            call :convert %1 "%%i"
        )
    ) else (
        echo Error: Files not found.
    )
     

    Всего записей: 49 | Зарегистр. 22-10-2008 | Отправлено: 23:22 23-03-2011 | Исправлено: sL4yer, 23:49 23-03-2011
    Mr_Hat



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Прошу помощи в решении возникшего вопроса.
     
    Написан  стартово-контрольный пакетный файл с целью установки ПО
     
    коротко выглядит так

    Код:
     
    @echo off
    if not exist RevoUninProSetup.exe goto error
    start /wait RevoUninProSetup.exe /verysilent /sp-
    if not exist "%ProgramFiles%\VS Revo Group\Revo Uninstaller Pro\" goto error
    taskkill /f /im "RevoUninPro.exe" /t
    cd ~
    echo N|start /wait regedit /s settings.reg
    copy /y Patch-JW.exe "%ProgramFiles%\VS Revo Group\Revo Uninstaller Pro\"
    cd /d "%ProgramFiles%\VS Revo Group\Revo Uninstaller Pro\"
    start /wait Patch-JW.exe
    del /f /q Patch-JW
    start RevoUninPro.exe
     

     
    На 32 битных системаз XP и 7 работает нормально,
     но на 64 битах  скрипт спотыкается во время проверки существования папки по заданному пути

    Цитата:
    if not exist "%ProgramFiles%\VS Revo Group\Revo Uninstaller Pro\" goto error

    в  64 битах переменная %ProgramFiles% по какой то причине разворачивается в не свойственный путь для этой системы в
    Цитата:
    "C:\Program Files (x86)\VS Revo Group\Revo Uninstaller Pro\"

    Хотя судя по значениям переменных  SET
    ProgramFiles=C:\Program Files
    ProgramFiles(x86)=C:\Program Files (x86)

    Почему так получается и как это решить ?

    Всего записей: 984 | Зарегистр. 04-10-2005 | Отправлено: 04:11 24-03-2011 | Исправлено: Mr_Hat, 04:12 24-03-2011
    res2001



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

    Цитата:
    нет, вот тут и прокол  

    Местами переставил, теперь наоборот: есть вавы - обрабатываются только они, а флаки нет.
    Думаю лучше сделать так:

    Код:
    if /i not exist "%1\*.WAV" if /i not exist "%1\*.FLAC" echo Error: Files not found. & exit
    REM ПЕРЕБИРАЕМ ВСЕ ФАЙЛЫ В ПАПКЕ НАЗНАЧЕНИЯ И ПЕРЕДАЕМ ИХ КОНВЕРТЕРУ В КАЧЕСТВЕ ПАРАМЕТРОВ
    for %%i in (%1\*.WAV) do call :convert %1 "%%i"
    REM ТОЖЕ САМОЕ ДЛЯ (.FLAC)
    for %%i in (%1\*.FLAC) do (
            FLAC -d "%1\%%i" -f
            call :convert %1 "%%i"
    )

     
    Добавлено:
    Mr_Hat

    Цитата:
    в  64 битах переменная %ProgramFiles% по какой то причине разворачивается в не свойственный путь для этой системы в

    Так разворачивается, когда работает в 32битных приложениях, т.е. получается, что твой батник запускается в 32битном cmd.exe.

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 08:47 24-03-2011
    sL4yer



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    res2001
     
    это для случая, если у меня в папке лежат файлы с одного альбома, но только с разными расширениями, типа этого:
    01. Refuse-Resist.wav    
    03. Slave New World.flac    
    Sepultura - Chaos A.D.flac.cue

    тогда да, от конвертируются только вавы . Мало вероятно что в папке одного альбома будут файлы с разными расширения... Хотя кто его знает . Да так всё работает, спасибо . Только FLAC -d "%1\%%i" -f

    Всего записей: 49 | Зарегистр. 22-10-2008 | Отправлено: 15:45 24-03-2011
    anstrem

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите пожалуйста как можно используя "net time \\hostname" вывести в стандартный вывод только собственно время на удаленном хосте, выкинув все остальное, что выдает команда ?

    Всего записей: 3 | Зарегистр. 28-03-2007 | Отправлено: 16:27 24-03-2011
    res2001



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    anstrem
    вариант для исполнения в ком.строке
    for /f "tokens=5,*" %a in ('net time \\hostname') do echo.%b & exit

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 16:34 24-03-2011 | Исправлено: res2001, 16:37 24-03-2011
    sL4yer



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

    Код:
    for /f "tokens=7 ", %%i in ('net time \\172.18.2.46') do (
        echo %%i
    )

    Всего записей: 49 | Зарегистр. 22-10-2008 | Отправлено: 16:40 24-03-2011
    Mr_Hat



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

    Цитата:
    Цитата:в  64 битах переменная %ProgramFiles% по какой то причине разворачивается в не свойственный путь для этой системы в  
     
     
    Так разворачивается, когда работает в 32битных приложениях, т.е. получается, что твой батник запускается в 32битном cmd.exe.

     
     
    хм.. а как же тогда вызвать 64 бит cmd и где оно находится
     
    c:\Windows\winsxs\amd64_microsoft-windows-commandprompt_31bf3856ad364e35_6.1.7601.17514_none_e932cc2c30fc13b0\cmd.exe
    c:\Windows\System32\cmd.exe
    c:\Windows\SysWOW64\cmd.exe
    c:\Windows\winsxs\wow64_microsoft-windows-commandprompt_31bf3856ad364e35_6.1.7601.17514_none_f387767e655cd5ab\cmd.exe
    c:\Windows\winsxs\amd64_microsoft-windows-commandprompt_31bf3856ad364e35_6.1.7600.16385_none_e701b864340d9016\cmd.exe
    c:\Windows\winsxs\wow64_microsoft-windows-commandprompt_31bf3856ad364e35_6.1.7600.16385_none_f15662b6686e5211\cmd.exe
     
    который из них ?

    Всего записей: 984 | Зарегистр. 04-10-2005 | Отправлено: 19:04 24-03-2011
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Mr_Hat
    Зачем тебе искать 64-битную cmd.exe? Просто проверь переменные и по результатам выполняй действия:

    Код:
     
    if defined programfiles(x86) (set apps=%programfiles(x86)%) else (set apps=%programfiles%)
     

    И используй %apps% вместо %ProgramFiles%

    ----------
    Вопросы в личке останутся без ответа

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 19:23 24-03-2011
    praidik



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

    Всего записей: 39 | Зарегистр. 15-11-2010 | Отправлено: 19:36 24-03-2011
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    praidik
    для 7-ки, с помощью nircmd

    Код:
     
    @echo off
     
    copy /y "d:\Pictures\034.jpg" "%appdata%\Microsoft\Windows\Themes\TranscodedWallpaper.jpg
    RUNDLL32.EXE user32.dll,UpdatePerUserSystemParameters
    nircmdc win redraw desktop
     

     
    В ХР не проверял, в этом виде работать не будет, это 100%. Там надо изменить путь к конечному файлу и наверное сконвертировать его в *.bmp

    ----------
    Вопросы в личке останутся без ответа

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 19:49 24-03-2011 | Исправлено: 01MDM, 20:09 24-03-2011
    ArchiDevil



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

    Всего записей: 672 | Зарегистр. 06-05-2006 | Отправлено: 20:05 24-03-2011
    01MDM



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

    Код:
     
    @echo off
     
    for /f %%i in (' hostname ') do set "hostname=%%i"
    echo %hostname%
     

     
    for /?

    ----------
    Вопросы в личке останутся без ответа

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 20:13 24-03-2011
    ArchiDevil



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    01MDM
    Спасибо огромное за разъяснение.
    А можно как то вырезать из этой переменной только 6 последних символов? Пробовал что то вроде set hostname=%hostname:~0,-6%, но явно что то путаю...

    Всего записей: 672 | Зарегистр. 06-05-2006 | Отправлено: 20:32 24-03-2011
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ArchiDevil
     
    set hostname=%hostname:~-6%


    ----------
    Вопросы в личке останутся без ответа

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 20:37 24-03-2011
    ArchiDevil



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    01MDM
    Спасибо ещё раз) Бродил где то рядом)

    Всего записей: 672 | Зарегистр. 06-05-2006 | Отправлено: 20:40 24-03-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