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

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



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Народ!
    Че-та у меня if exist "путь с пробелами\nul" не отрабатывает. Если вместо nul воткнуть имя файла - работает.
    Это только у меня так?
    Проверьте, плз., кому не влом.

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



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    res2001
    а что от этой операции требуется?

    Всего записей: 1536 | Зарегистр. 19-04-2010 | Отправлено: 11:08 14-09-2010
    res2001



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    ну как что - проверить существование каталога с длинным именем содержащим пробелы
     
    Добавлено:
    Собственно говоря, даже короткое имя каталога без пробелов выдает не правильный результат, если записано в кавычках. Убираешь кавычки - ок.

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



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

    Код:
    if exist "путь с пробелами, включая имя файла"

    если уж очень надо поставить nul, тогда так

    Код:
    if exist "путь с пробелами, включая имя файла" >nul

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



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Важно использование именно с кавычками, поскольку каталоги с длинными именами, в т.ч. и с пробелами имеются.
    Если кавычки убрать, то вообще не проверяет, что вполне естественно.
     
    Добавлено:
    Free_Soft

    Цитата:
    ну а при чем тут nul?

    Это из справки винды по команде if цитата:

    Цитата:
    Команда if не может быть использована непосредственно для проверки существования каталога, но в каждом каталоге существует устройство (NUL). Следовательно, существование каталога может быть проверено, как показано ниже. В следующем примере проверяется наличие каталога:
     
    if exist c:mydir\nul goto process  
     

     
    Добавлено:
    Имя файла включать не надо, каталоги могут быть пустыми, необходимо проверить именно наличие каталога.

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



    Запрет на пост
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    res2001
    че так что ли надо, а не так
    if exist mydir\nul
    if exist mydir\
     
    Добавлено:
    работает и так if exist mydir

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



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

    Цитата:
    В общем, нужно решение для экстренного снесения одним пользователем записей о базах 1с 7.7 для всех остальных юзеров..
    а эти юзера залогинены в этот момент?  
    и дело вообще где происходит - на терминальном сервере?
     
    что-то мне кажется, что уже запущенной 1С совершенно пофигу снос настроек в регистри, а вот у следующей 1С отобрать настройки можно попробовать.

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 11:27 14-09-2010 | Исправлено: wolf0425, 11:27 14-09-2010
    Free_Soft



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    даа... надо чаще справки читать))
    первый раз про nul в этом контексте услышал. Но прекрасно работает и без него, как с указанием имени файла, так и с указанием имени каталога

    Всего записей: 1536 | Зарегистр. 19-04-2010 | Отправлено: 11:27 14-09-2010
    res2001



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

    Цитата:
    че так что ли надо, а не так
    if exist mydir\nul
    if exist mydir\  

    Судя по документации надо с nulом.
     

    Цитата:
    работает и так if exist mydir

    Действительно работает.
    Чудеса. Но ведь не работало же.
    Опять же в доке винды про nul говорится. Да я и сам все время с nulом делал проверку существования каталогов.
    Может пропатчили что-нить.

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



    Запрет на пост
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Free_Soft
    if exist mydir\  
    if exist mydir
    так можно отличить каталог от файла

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



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

    Цитата:
    работает и так if exist mydir
    Действительно работает.
    Чудеса. Но ведь не работало же.  
    работало. только этот вариант срабатывает и на файл mydir
     
    ещё вариант: dir /a:d "my dir" >nul 2>nul && echo exist!

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 11:35 14-09-2010
    sergioser

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

    Цитата:
    sergioser
    типа такого
    FOR /F %%I IN ('TYPE MY.TXT ^| FIND "мас адрецк"') do echo %%I

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

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



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

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



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    bomzzz
    Мой вариант скрипта разбора файлов еще интересует?
    Я довел до ума работу с длинными файлами и добавил отдельную обработку txt

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



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    sergioser
    TYPE MY.TXT | FIND /v "мас адрецк" && echo not found

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 11:46 14-09-2010 | Исправлено: wolf0425, 11:46 14-09-2010
    bomzzz



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

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



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

    Код:
    @echo off
    setlocal enabledelayedexpansion
    set "indir=c:\2\"
    set "outdir=c:\1\"
    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 (
        call :getdirname "%%~na"
        md "%outdir%!getdirname!"
        move "%indir%%%a" "%outdir%!getdirname!\"
        2>nul move "%indir%%%a.txt" "%outdir%!getdirname!\"
    )
    exit /b
     
    rem Имя каталога в переменной !getdirname!
    :getdirname
    if "%2" equ "" (set "fnum=0" & set "getdirname=%~1") else (set "fnum=%2" & set "getdirname=%~1-%2")
    if exist "%outdir%%getdirname%\" (
        set /a "fnum+=1"
        call :getdirname "%~1" !fnum!
    ) else set "fnum="
    exit /b
     

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 11:53 14-09-2010 | Исправлено: res2001, 12:10 14-09-2010
    bomzzz



    Запрет на пост
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    res2001
    файлы описаний не сортирует
     
    Добавлено:
    счетчик работает
     
    Добавлено:
    и теепрь работает отуда угодно а не только из корня
     
    Добавлено:
    файлы без расширений обрабатывает
     
    Добавлено:
    http://forum.ru-board.com/topic.cgi?forum=62&topic=21297&start=260#16
    я свой до такого состояния довел. как счетчик организовать все так и не врублюсь, понял что подпрограммой, но чета туплю
     
    Добавлено:
    ээээ верни назад этот вообще не работает

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



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

    Цитата:
    ээээ верни назад этот вообще не работает

    опять поправил

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



    Запрет на пост
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    заработало!
     
    Добавлено:
    вот из за счетчика в именах недопустимы восклицательные знаки, вернее из за сетенабле локал. без него все знаки включая процентики обрабатывает в именах нормлаьно. нельзя так воткнуть сюда ендлокал, чтоб все таки восклицательные знаки глотало???

    Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 12:12 14-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