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

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

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

vu1tur (27-04-2007 11:55): продолжаем в теме «Задачи на bat-файлах 3»  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

vu1tur



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

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

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 16:59 14-11-2006 | Исправлено: Elroir, 04:30 26-04-2007
    Tipulatoid



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    igor_andreev
    И все-таки остались косячки
    вот пример файла stock.txt:

    Код:
    SAGA 6,42 9,24 10,55 1,23  
    PlayGirl 8,92 15,57 20,56 4,39  
    Уфа -0,59 0,00 -7,54 0,00  
    BSC КФХ Славинка 8,60 14,78 19,31 4,02
    Raul Gonsalez 8,69 14,23 18,00 2,48  
    Last champion 8,90 14,77 18,85 2,75  
     

     
    после запуска этого кода:

    Код:
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set fs = fso.OpenTextFile("stock.txt", 1, false)
    Set f = fso.OpenTextFile("new_stock.txt", 2, true)
        fsContent = fs.ReadAll
        fs.Close
     
    Set regEx = New RegExp
        regEx.Pattern = "\D*([0-9\,\-\s]*)$"
        regEx.MultiLine = True
        regEx.Global = True
    Set Matches = regEx.Execute(fsContent)
     For Each Match in Matches
        RetStr = RetStr & Match.Value & vbCRLF
        RetStr = regEx.Replace(RetStr, "$1")
     Next    
     f.Write RetStr
     f.Close

     
    получается new_stock.txt:

    Код:
    6,42 9,24 10,55 1,23  
    8,92 15,57 20,56 4,39  
    0,59 0,00 -7,54 0,00  
    8,60 14,78 19,31 4,02
    8,69 14,23 18,00 2,48  
    8,90 14,77 18,85 2,75  
     

     
    Т.е. он обрезает минус (дефис) у того числа, которое стоит рядом со словом. Помогите с этим, плиз

    Всего записей: 349 | Зарегистр. 22-12-2006 | Отправлено: 10:00 29-01-2007
    Elroir



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

    Цитата:
    Как присвоить переменной путь где находится прожка и вписать её в реестр?


    Код:
     
    @echo off
    setlocal
    set cpath=%~dp0
    reg add HKLM\Software\Proga /ve /d "%cpath:~0,-1%" /f>nul
     

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 10:49 29-01-2007 | Исправлено: Elroir, 10:50 29-01-2007
    Maza Faka



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

    Цитата:
    set cpath=%~dp0

     
    Что тут происходит? Обьясни ПЛЗ

    Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 11:52 29-01-2007
    Elroir



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Maza Faka
    В батнике переменная %0 - это название самого батника.
    А модификатор ~dp, дает нам полный путь к файлу, имя которого находится в переменной. Соответственно %~dp0 - даст нам полный путь до того места, где находится батник. Есть одна тонкость - ~dp выдает путь с чертой в конце. Для того, чтобы ее убрать, я использую вспомогательную переменную cpath, от которой "отрезаю" последний символ.

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 12:02 29-01-2007
    igor_andreev

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Tipulatoid
    Ну для приведенного тобой кусочка stock.txt вот так

    Код:

    regEx.Pattern = "\D(\s[\s\-\,0-9]{4,})$"

    Если опять что-то не то всплывет, то следующий вопрос по VBS задавай тут

    Всего записей: 1667 | Зарегистр. 08-12-2004 | Отправлено: 13:53 29-01-2007 | Исправлено: igor_andreev, 13:59 29-01-2007
    ViSiToR



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Возможно ли написать батник, который будет работать как переключатель для отображения расширения файлов и отображения скрытых файлов? т.е нужно чтобы при запуске батника, у всех файлов отображалось расширение и все скрытые файлы тоже отображались (не меняя их атрибуты), а при повторном запуске, чтобы всё возвращалось в норму (по умолчанию).
     
    Полагаю это где то в реестре делается, но я никак не могу найти где, может кто то знает, подскажите плиз, а переключатель я уже как нибудь сам забацаю  
     
    Elroir
    Твой последний пост добавил в шапку .

    ----------
    ViSiToR a.k.a CreatoR
    CreatoR это не ник, CreatoR это стиль жизни!

    Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 18:23 29-01-2007
    Elroir



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

    Цитата:
    добавил в шапку

    Ну раз добавил, тогда я скажу где в реестре эти значения

    Код:
     
    [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced]
    "Hidden"=dword:00000001
    "HideFileExt"=dword:00000000
     

    Hidden - показывать/не показывать скрытые файлы. 1-показывать,2-не показывать
    HideFileExt -  показывать/не показывать расширения. 0-показывать,1-не показывать
    Тут проблема может быть в том, что надо будет перезапускать эксплорер, чтобы он заново считал значения из реестра.

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 18:37 29-01-2007
    Maza Faka



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

    Цитата:
    reg add HKLM\Software\Proga /ve /d "%cpath:~0,-1%" /f>nul

    Для чего нужно это: ":~0,-1" ?
    Вот так тоже работает: reg add HKLM\Software\Proga /ve /d "%cpath%" /f>nul

    Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 18:38 29-01-2007
    01MDM



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

    Цитата:
    т.е нужно чтобы при запуске батника, у всех файлов отображалось расширение и все скрытые файлы тоже отображались (не меняя их атрибуты)

     
    Может так:
     
    dir /b | attrib
     

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 18:55 29-01-2007
    Elroir



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

    Цитата:
    Для чего нужно это: ":~0,-1" ?  
    Вот так тоже работает: reg add HKLM\Software\Proga /ve /d "%cpath%" /f>nul

    Дубль два :

    Цитата:
    Есть одна тонкость - ~dp выдает путь с чертой в конце. Для того, чтобы ее убрать, я использую вспомогательную переменную cpath, от которой "отрезаю" последний символ.

    ":~0,-1" - взять все символы из переменной, кроме последнего.
    Проверь, что у тебя записывается в реестр без этого.  

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 19:51 29-01-2007
    ViSiToR



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

    Цитата:
    скажу где в реестре эти значения

    Большое спасибо!
     
    Вот накалякал переключатель, и, кстати, ненужно перезапускать експлорер, достаточно обновить папку/рабочий стол...
     

    Код:
    @echo off
    Reg Query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v Hidden> %temp%\regquery.tmp
    For /f "delims= " %%a in (%temp%\regquery.tmp) do set HidVal1=%%a
    If %HidVal1:~-3%==0x1 (Reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v hidden /t REG_DWORD /d 2 /f) else (
    Reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v Hidden /t REG_DWORD /d 1 /f)
    )
     
    Reg Query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v HideFileExt> %temp%\regquery.tmp
    For /f "delims= " %%a in (%temp%\regquery.tmp) do set HidVal2=%%a
    If %HidVal2:~-3%==0x1 (Reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v HideFileExt /t REG_DWORD /d 0 /f) else (
    Reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v HideFileExt /t REG_DWORD /d 1 /f)
    )
    del %temp%\regquery.tmp

     
    Можно наверно и без вывода в файл, но у меня если честно нету уже сил, если кто-то поправит, буду признателен.
     
    Теперь только осталось узнать как батником обновить папку(и)  

    ----------
    ViSiToR a.k.a CreatoR
    CreatoR это не ник, CreatoR это стиль жизни!

    Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 20:57 29-01-2007
    Elroir



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

    Цитата:
    Можно наверно и без вывода в файл, ... если кто-то поправит

    Поправляю

    Код:
     
    @echo off
    setlocal enableextensions
    for /f "usebackq delims= " %%a in (`"Reg Query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v Hidden"`) do set HidVal1=%%a
    If %HidVal1:~-3%==0x1 (Reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v hidden /t REG_DWORD /d 2 /f>nul) else (
    Reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v Hidden /t REG_DWORD /d 1 /f>nul)
    for /f "usebackq delims= " %%a in (`"Reg Query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v HideFileExt"`) do set HidVal2=%%a
    If %HidVal2:~-3%==0x1 (Reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v HideFileExt /t REG_DWORD /d 0 /f>nul) else (
    Reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v HideFileExt /t REG_DWORD /d 1 /f>nul)
     

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 22:15 29-01-2007
    ViSiToR



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

    Цитата:
    Поправляю

    Спасибо, но теперь и мой пример не работает , в реестер пишется как надо, но обновление не действует...
     
    Чувствую что то в системе делает команда setlocal enableextensions...


    ----------
    ViSiToR a.k.a CreatoR
    CreatoR это не ник, CreatoR это стиль жизни!

    Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 00:44 30-01-2007
    Elroir



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

    Цитата:
    Чувствую что то в системе делает команда setlocal enableextensions...  

    В принципе, его можно отключить - я написал просто на всякий случай. Но у меня что твой код, что мой - все равно не обновляется.
     
    Добавлено:
    Поправка - если нажать на View->Refresh тогда обновляется.

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 00:50 30-01-2007
    bert85



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Помогите, пожалуйста, батником, который бы в папке (по заранее заданному пути ) создавал текстовый файл с определенным расширением и вписывал туда пару строчек текста (прописываются в самом батнике). Если в той директории существует уже файл с таким именем, то его нужно заменить новым. Вотъ.

    Всего записей: 55 | Зарегистр. 14-02-2006 | Отправлено: 00:59 30-01-2007
    Elroir



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

    Код:
     
    @echo off
    setlocal
    set dpath=c:\temp\
    set file_name=file.ext
    echo Text line number one>%dpath%%file_name%
    echo Text line number two>>%dpath%%file_name%
     

    Выделенный текст меняешь на нужные тебе значения папки, файла и текста.

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 01:10 30-01-2007
    ViSiToR



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

    ----------
    ViSiToR a.k.a CreatoR
    CreatoR это не ник, CreatoR это стиль жизни!

    Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 01:19 30-01-2007
    bert85



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Elroir
    БОЛЬШОЕ тебе СПАСИБО

    Всего записей: 55 | Зарегистр. 14-02-2006 | Отправлено: 01:32 30-01-2007
    stalker0



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    утилита shutdown.exe при работе в Вин2000 в батнике ведет себя "не правильно" -  
    не так как в ВинХР (требует ввести имя удаленного ПК, завершает работу ПК некорректно)
    Может есть замена этой утилите?
     
    Нужно: выключить ПК,напр., через 5 часов.
    Спасибо.

    Всего записей: 686 | Зарегистр. 19-04-2005 | Отправлено: 01:58 30-01-2007
    igor_andreev

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

    Цитата:
    как запустить свойства папки батником?

    RunDll32.exe shell32.dll,Options_RunDLL 0
     
    Добавлено:
    Хотя вам скорее всего нужна команда
    RunDll32.exe USER32.DLL,UpdatePerUserSystemParameters ,1 ,True
    она по идее обновляет настройки из ветки HKEY_CURRENT_USER  
     
    Добавлено:
    А все команды rundll32 тут живут

    Всего записей: 1667 | Зарегистр. 08-12-2004 | Отправлено: 02:28 30-01-2007 | Исправлено: igor_andreev, 02:32 30-01-2007
       

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

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 2
    vu1tur (27-04-2007 11:55): продолжаем в теме «Задачи на bat-файлах 3»


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

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.Board
    © Ru.Board 2000-2020

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru