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

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



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

    Всего записей: 2863 | Зарегистр. 31-10-2003 | Отправлено: 17:55 28-09-2010 | Исправлено: Accessor, 18:02 28-09-2010
    smirnvlad

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

    Цитата:
    переименование всех   файлов в папке  с добавлением  даты и времени формата  (пример 2010_09_27_21_34_имя ориг файла)...

     
    создаю тысячу файлов "%номер%.zip" и батник с кодом выше маску меняю на *.zip, загружаю дисковую систему запросами, запускаю батник и вижу файл "2010_09_28_23_43_2010_09_28_23_43_10.zip" т.е. переименованный файл переименовывался ещё раз
    чтобы такое избежать

    Код:
    for /f "tokens=*" %%a in ('dir /b *.zip') do ren "%%a" "%date:~6,4%_%date:~3,2%_%date:~0,2%_%time:~0,2%_%time:~3,2%_%%a"

    Всего записей: 417 | Зарегистр. 31-03-2009 | Отправлено: 19:52 28-09-2010
    LikvidatorMax

    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Пытаюсь удалить файл с помощью del /q /s /f "%CPath%"
    где %CPath% путь, имя файла и расширение, которое берется из файла.
     
    Не удаляется, пишет: "Could Not Find %CPath%"
     
    Файл скрытый, специфичный (системный?), но с правами вроде все нормально и cmd запускается с правами администратора в Windows 7.
     
    Есть ли средство мощнее?

    Всего записей: 36 | Зарегистр. 05-01-2009 | Отправлено: 21:08 28-09-2010 | Исправлено: LikvidatorMax, 21:11 28-09-2010
    Free_Soft



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

    Код:
    del /f /q /a s h "%CPath%"

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



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Народ, есть вопрос. Хочу сцепить два юникодных файла. Сцепляю два конфига для 1С (*.v8i). Одна конфигурация в первом файле. Вторая, соответственно, во втором. Команды для сцепки пробовал разные:
    1. copy file1+file2 ibases.v8i
    2. type file1 > ibases.v8i & type file1 >> ibases.v8i
    3. for /f "tokens=*" %i in (file1,file2) do echo %i >> ibases.v8i
    Во всех случаях на стыке двух файлов закрадывается символ с кодом 0xfeff, который потом мешает нормальной работе 1С. Т.е. при запуске 1С в окне выбора конфигурации, видна только первая конфа, а вторую отрезает 1С своими силами, из-за того, что она с посторонним символом и 1С считает ещё мусором и с лёгкостью удаляет её из результирующего файла конфигурации. Вопрос, как сцеплять, чтоб не было мусора. Либо как удалить этот мусор сразу после сцепки двух файлов?

    Всего записей: 2863 | Зарегистр. 31-10-2003 | Отправлено: 10:32 29-09-2010
    res2001



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Accessor
    А в исходных файлах эти символы есть?
    Если нет, то добавь в команду copy ключик /b: copy /b file1+file2 ibases.v8i

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



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

    Цитата:
    А в исходных файлах эти символы есть?
    Если нет,  
    похоже что есть, это код BOM в уникодной кодировке.
     
    А вообще - copy /a file1+file2 file3 - у меня исправно сливает файлы UTF-16, вырезая лишний BOM  
     
     
     
    Кто-нидубь подскажет - поменять Window title у запущенной программы внешними средствами вообще реально?

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



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

    Цитата:
    Кто-нидубь подскажет - поменять Window title у запущенной программы внешними средствами вообще реально?

    Вроде как PowerShell умеет. В книге Попова А. В. "Введение в Windows PowerShell" в 4-й главе командами PowerShell настраивается оболочка PowerShell в режиме реального времени, включая и заголовок окна, но, как я понимаю, приведённые действия справедливы для окна любой программы.

    Всего записей: 3542 | Зарегистр. 17-08-2009 | Отправлено: 11:41 29-09-2010
    Accessor



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    res2001
    Увы, в исходных файлах этого символа нет. Его вставляет система ровно на стыке двух файликов.
    Что касается ключика /b в команде copy, то я пробовал и с ним тоже. Причём, синтаксис команды позволяет указывать "бинарность" файла в именовании каждого сцепляемого файла, что я и сделал. Увы, тошнотворный символ появляется всё равно.
     
     
    wolf0425
    ну, нет его там. вот даю два файла, что я сливаю в uue
    cfg1.v8i
    cfg2.v8i
     
    команда для сливания вот такая:
    copy /a cfg1.v8i+cfg2.v8i ibases.v8i
     
    результирующий файл
     
    Добавлено:
    причём, в команде сливания что ключ /a, что ключ /b - всё одинаково, вставляется этот символ.

    Всего записей: 2863 | Зарегистр. 31-10-2003 | Отправлено: 11:53 29-09-2010 | Исправлено: Accessor, 12:08 29-09-2010
    NIKZZZZ



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

    Цитата:
    Увы, в исходных файлах этого символа нет.

    А если посмотреть в HEX виде?
    Cору /a нормально сливает UNI файлы, "яю" между ними не вставляет.
    Если в исходных файлах нет этих символов, может их просто добавить?
     
     
     
     
    Добавлено:
    Accessor
    Так кодировочка UTF8 !!!

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 12:06 29-09-2010
    res2001



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Accessor
    В бинарном режиме копирования, copy не делает ни каких предположений о содержимом файлов и сливает все как есть побайтно. Значит эти символы есть в исходных файлах.
    Посомотри в HEX виде, как посоветовал NIKZZZZ.

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



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

    Цитата:
    smirnvlad

     
    создаю тысячу файлов "%номер%.zip" и батник с кодом выше маску меняю на *.zip, загружаю дисковую систему запросами, запускаю батник и вижу файл "2010_09_28_23_43_2010_09_28_23_43_10.zip" т.е. переименованный файл переименовывался ещё раз  
    чтобы такое избежать  
     
    Код:   for /f "tokens=*" %%a in ('dir /b *.zip') do ren "%%a" "%date:~6,4%_%date:~3,2%_%date:~0,2%_%time:~0,2%_%time:~3,2%_%%a"
     
     
    Спасибо !!! но у меня сразу после переименование , файлы перемещаются в другую папку я так решил т.к с коммандной строкой не сильно дружу
     
     
    А вообще вся байда была придумана для резервного копирования в реалтайме  при работе в программе (Х)- прога глюченная но необходимая таким образои  мой .cmd  срабатывает каждые 20 минут в тихом режиме и проэкты бекапятся куда надо ,, если прога зависла и проэкт запорот можно всегда откатиться  - теперь нужно научиться пользоваться ctrl-s

    Всего записей: 75 | Зарегистр. 15-01-2002 | Отправлено: 12:18 29-09-2010
    res2001



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    И еще, BOM добавляется в начало документа, а не в конец и тем более не в середину.

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



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Accessor
     
    EF BB BF - эти три байта в начале файла, при слиянии их нужно просто проигнорировать в первой строке второго файла, UTF8 Windows понимает плохо.

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 12:25 29-09-2010
    Accessor



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    res2001
    NIKZZZZ
    Спасибо за помощь, всё получилось. Удалил hex-редактором эту нудную комбинацию EF BB BF. Проблема заключалась в том, что я работал FARом. Он, почему-то, не показывал мне эти лишние байты. Как только взял в руки Hiew - сразу увидел мусор в исходных файлах.

    Всего записей: 2863 | Зарегистр. 31-10-2003 | Отправлено: 12:58 29-09-2010
    res2001



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Accessor
    В фаре поменял бы кодировку с УТФ на любую другую и байты бы вылезли.
    Любой текстовый редактор, понимающий УТФ8, не показывает БОМ.

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



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

    Цитата:
    В фаре поменял бы кодировку с УТФ на любую другую и байты бы вылезли.  
    не, просто от переключения - не вылезли бы.
    вылезли бы если из редактирования файла выйти с установленной анси/оем кодировкой и снова зайти.
    И не записались бы в в файл при сохранении в 1251/866
     
     
    Добавлено:

    Цитата:
    настраивается оболочка PowerShell в режиме реального времени, включая и заголовок окна, но, как я понимаю, приведённые действия справедливы для окна любой программы.
    оболочка там настраивается наверно же из самой оболочки? что процесс может поменять имя своего окна - это понятно, вопрос можно ли поменять имя окна совершено левого уже запущенного процесса?

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

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Нужно сравнить текущую дату с датой файла из папки и если они различаются на 3 месяца удалить файл.

    Всего записей: 3 | Зарегистр. 29-09-2010 | Отправлено: 18:23 29-09-2010
    bomzzz



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

    Цитата:
     
    ECHO OFF
    COLOR 9F
    CLS
    setlocal enabledelayedexpansion
    echo %DATE%
    set MYDATE=%DATE%
    set /A CURDAY=1%MYDATE:~0,2%-100
    set /A CURMOUNTH=1%MYDATE:~3,2%-100
    set /A CURYEAR=1!%MYDATE:~6,4%-10000
    echo %CURYEAR% %CURMOUNTH% %CURDAY%
     
     
    SET DIRCMD=/B /A:-D
    PUSHD
    for /f "delims=" %%I in ('DIR') do (
    echo %%~tI
    SET FILEDATA=%%~tI
    echo !FILEDATA!
    set /A DAY=1!FILEDATA:~0,2!-100
    set /A MOUNTH=1!FILEDATA:~3,2!-100
    set /A YEAR=1!FILEDATA:~6,4!-10000
    echo !YEAR! !MOUNTH! !DAY!
     
    )
    ECHO.
    POPD
    pause
     

     
    Добавлено:
    осталось алгоритм сравнения придумать и реализовать.
     

    set /A CHANGE=%CURYEAR%-!YEAR!
    if !CHANGE! NEQ 0 set /A MOUNTH=!CHANGE!*12+!MOUNTH!

    Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 18:31 29-09-2010 | Исправлено: bomzzz, 18:52 29-09-2010
    Batnik

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

    Цитата:
    осталось алгоритм сравнения придумать и реализовать.

     
    А может просто сделать типо так If Текущая дата - Дата создания файла > 300 then удалить файл
     

    Всего записей: 3 | Зарегистр. 29-09-2010 | Отправлено: 18:47 29-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