Простенький батник: Создание простого .bat по созданию файлов .txt? — Хабр Q&A
Содержание
Регулярные операции по обслуживанию БД БЭСТ-4+
Рассмотрим несколько способов облегчить жизнь администратора баз данных БЭСТ-4+.
К регулярным профилактическим мероприятиям с БД БЭСТ-4+ относятся:
— Операции по обновлению версий программы;
— Резервное копирование;
— Индексирование и упаковка.
Установка и обновление БЭСТ-4+ на рабочих станциях.
Порядок установки подробно описан в файле readme.rtf, идущем в поставке БЭСТ-4+.
Порядок установки сервис-паков описан в текстовом файле, идущем с пакетом.
В тех случаях, когда рабочие станции запускаются из общего каталога на сервере – добавить больше нечего.
В тех же случаях, когда исполняемые файлы размещаются на рабочих станциях – процедура обновления БЭСТа будет закончена после того, как изменения будут скопированы и на все рабочие станции.
С целью облегчения установки станций и их обновления, можно создать простенький bat-файл, размещаемый в каталоге с best.bat. rem Создаем каталог b4_plus на локальном диске
If Not exist c:\b4_plus (mkdir c:\b4_plus) rem Создаем каталог BIN для размещения исполняемых файлов If Not exist c:\b4_plus\bin (mkdir c:\b4_plus\bin) rem Копируем исполняемые файлы COPY bin\*. * c:\b4_plus\bin rem копируем конфиг-файлы COPY config.* c:\b4_plus rem Копируем главный запускаемый файл COPY best.bat c:\b4_plus rem Создаем pro.ini с указанием местоположения каталога pro echo %CD%\pro\ > c:\b4_plus\pro.ini |
В итоге, мы получили минимальную конфигурацию для создания рабочей станции. Сюда можно добавить копирование ярлыка, созданного для запуска и других необходимых файлов. Но будет ли работать БЭСТ-4+?
Для запуска БЭСТ-4+ и работы в нем, этого на первый взгляд достаточно, но при работе возникнут проблемы, из-за отсутствия каталога с утилитами.
Следует добавить:
rem Создаем каталог util IF not exist c:\b4_plus\util (mkdir c:\b4_plus\util) COPY util\*.* c:\b4_plus\util |
И самой последней строкой добавляем:
call sp\setupprn. exe |
Теперь разместим этот файл, loc_set.bat к примеру, в корневом каталоге БЭСТа.
Процедура установки станции и обновления пакета может намного упроститься, достаточно будет запустить всего один командный файл. Здесь уже больше организационных вопросов и вопросов к системному администратору.
В readme.rtf, в приложении 2 указаны переменные окружения, необходимые для запуска БЭСТ-4+. Их следует добавлять в первых строках файла best.bat, либо в другом файле из которого осуществляется запуск best.bat.
Для станций, можно формировать best.bat в нашем пакетном файле. (если best.bat остается оригинальным).
Rem Фрагмент кода, взамен COPY best.bat c:\b4_plus echo SET BEST_KEY=2 > c:\b4_plus\best.bat echo SET BEST_NET=TCPIP >> c:\b4_plus\best.bat echo SET BEST_NAME=192.168.1.1 >> c:\b4_plus\best.bat type best.bat >> c:\b4_plus\best. bat |
Если возникают вопросы по формированию командного файла и параметрам командной строки, на сайте http://www.saitov.km.ru/ можно найти подробные справочники, которые могут пригодиться в работе.
Резервное копирование
Не стоит лишний раз напоминать о важности ежедневного резервного копирования.
Наверняка этот вопрос уже решен, применительно к другим вашим данным.
Самое традиционное решение – запуск архиватора с параметрами по расписанию, прописанному в планировщике задач.
Например, для winrar
winrar.exe a -av -agYYMMDD -dh -ep1 -m5 -r -y -x*.exe -xactive.sem -xtmp -x*.cdx X:\archivs U:\b4_plus\DBASE\*.* |
Немного сложно, для человек незнакомого ранее с командной строкой, и неудобно. В комплексе, задачу архивирования по расписанию уже решили в нескольких утилитах. Одна из них – «Резервные копии для 1С».
Ссылка для скачивания http://www. aqtech.com/ru/download/setupb1c.exe
Утилита бесплатная, основные возможности:
- Настройка параметров задач как по умолчанию, так и для каждой в отдельности
- Мастера действий
- Задание каталогов, файлов и масок для архивации
- Задание исключений
- Произвольное количество мест для хранения резервных копий
- Задание времени начала архивации
- Выбор дней недели для архивации
- Возможность архивации при включении компьютера
- Задание промежутка времени между архивациями
- Задание дат начала и окончания архивации
- Задание срока хранения архивов
- Задание количества архивов для хранения
- Временное отключение задания
- Задание пароля для архивов
- Настройка действий при ошибках
- Подача звуковых сигналов через стандартный динамик компьютера
- Настраиваемый журнал событий
- Сворачивание в трэй
Пример использования
Снимок экрана №1 — Установка расписания
Снимок экрана №2 — Файлы и папки для архивирования
Снимок экрана №3 — Маски исключения
Снимок экрана №4 — Папка для хранения
Снимок экрана №5 — Запуск программы после архивации
Снимок экрана №6 — Действия при ошибках, проверка баз перед архивацией
Индексация
После создания архива необходимо провести индексирование и упаковку баз данных. Здесь важно отметить, что перед индексацией необходимо сделать резервное копирование, т.к. при индексации производится очистка баз данных от записей помеченных как удаленные.
В некоторых случаях, наличие копии базы с удаленными записями – позволяет провести оперативное «расследование» конфликтных ситуаций и восстановить необходимые данные. Поэтому, следует задать еще один вопрос – как часто необходимо индексировать базы данных?
Ответить на этот вопрос можете только вы сами.
В настройках БЭСТ-4 есть возможность включить ежедневную индексацию при входе в программу. В итоге, кто первый заходит – тот и запускает режим индексации баз данных. Не совсем оптимальное решение и подходит больше для однопользовательского варианта.
В сетях, где файл-сервер работает в круглосуточном режиме, подобные операции разумно проводить в то время, когда базы данных свободны. Для этого существует возможность запуска индексации из командной строки.
Формат записи
bin\init. exe index L:xxxxxx A:yy T:z
Где
L:xxxxxx- Код предприятия (из карточки предприятия, label.pro поле lbl_code)
A:yy — Подсистема (поле ARM из таблицы BASE_ALL.DBF)
T:z — Тип индексации 1 — Основные,2 — Архивные,3 — Все
Примеры использования:
Для нескольких предприятий:
bin\init index L:000001 L:000002
Для нескольких подсистем в нескольких базах Bin\init index L:код предприятия А:код подсистемы А:код подсистемы L:код предприятия А:код подсистемы и т.д.
bin\init index L:000001 A:00 A:01 A:14 A:MR L:000002 A:00 A:01 A:02 A:06
Сохранив эту строку в ind.bat, мы получаем законченную систему автономного обслуживания БД БЭСТ-4+ на базе программы «Резервное копирование для 1С».
С проверкой занятости баз перед запуском и индексированием после создания архива.
[CMD] .bat-файлу отказано в доступе | SafeZone
JavaScript отключён. Чтобы полноценно использовать наш сайт, включите JavaScript в своём браузере.
-
Автор темы74LoJWz -
Дата начала
74LoJWz
Новый пользователь
#1
Добрый день.
При запуске из проводника (не из оболочки cmd.exe) простенького .bat-файла
if not exist c:\del_after_test md c:\del_after_test cd /D c:\del_after_test if not exist c:\del_after_test\file.txt echo "" > file.txt ren c:\del_after_test\file. txt file.sql pause
Получаю следующее (команда rename для демонстрации ошибки):
c:\del_after_test>ren c:\del_after_test\file.txt file.sql
Отказано в доступе.
Проблема именно с .sql-файлами в Windows 7.
Кто-нибудь знает как обойти? В реальности команды (или .bat) должны вызываться VisualStudio при построении сборки.
Кирилл
#2
74LoJWz написал(а):
Проблема именно с .sql-файлами в Windows 7.
Нажмите для раскрытия…
При запуске скрипта из проводника у вас должны быть проблемы с правами доступа к диску С, проверьте — может иметь место.
Или же файл просто занят.
Попробуйте еще так:
if not exist c:\del_after_test md c:\del_after_test if not exist c:\del_after_test\file.sql echo "" > c:\del_after_test\file.sql pause
Склеил темы в одну
Последнее редактирование:
74LoJWz
Новый пользователь
#3
Кирилл написал(а):
Склеил темы в одну
Нажмите для раскрытия. ..
Да, вы правы это не проблема win7, поторопился с выводами.
Но, ваш код тоже не работает из bat-файла. При том что моя учетная запись входит в группу Администраторы, с файлами с расширением txt я никаких проблем не испытываю, а с расширением sql, как возможно и с другими, вот такая засада. При чем как на виртуальной машине в сети предприятия, так и на стационарном компьютере в той же сети, к которому я так же подключаюсь по vpn.
Буду благодарен за любые идеи.
Кирилл
#4
Если с txt проблем нет, то и с остальными не должно быть.
Проверьте в безопасном режиме
74LoJWz
Новый пользователь
#5
Всем спасибо.
Виноват Касперский.
Поделиться:
Ссылка
Сверху
Снизу
Создание простого пакетного файла (Tips.Net)
Пакетные файлы Windows отлично подходят, если вы хотите выполнить несколько задач в быстрой последовательности, или если вы хотите сделать что-то с несколькими файлами подряд, или если вы просто не хотите хотите использовать интерфейс GUI для выполнения некоторых задач (например, выполнения автоматических задач). Пакетные файлы — это текстовые файлы с расширением «.bat», содержащие операторы командной строки Windows. Конечно, вам нужно знать операторы командной строки, чтобы вводить их в файл .bat. В Интернете есть много мест, описывающих доступные операторы командной строки, но одно место выглядит следующим образом:
http://technet.microsoft.com/en-us/library/cc754340.aspx#BKMK_Index
Существуют различные способы создания пакетного файла, но, поскольку пакетный файл представляет собой не что иное, как простой текстовый файл, возможно, самый простой способ — использовать Блокнот. Поскольку я часто использую пакетные файлы, я создал папку C:\Bat, где храню их все. Чтобы создать новый, я использую проводник Windows или проводник для перехода к C:\Bat, затем щелкаю правой кнопкой мыши по этой папке и выбираю New | Текстовый документ . (См. рис. 1.)
Рисунок 1. Создание нового текстового документа.
Сразу после выбора пункта меню Текстовый документ введите имя, которое вы хотите дать пакетному файлу (скажем, вы хотите, чтобы он назывался «Каталог»), и нажмите Введите . Теперь, нажав , введите во второй раз, чтобы запустить Блокнот, и вы можете начать вводить операторы командной строки, составляющие ваш пакетный файл.
Например, вы хотите создать пакетный файл, который создает список каталогов папки и помещает этот список в файл с именем «Dirlist.txt». Оператор командной строки, который создает список каталогов, равен 9.0007 DIR , а чтобы направить вывод DIR в файл, используйте оператор «>». Таким образом, строка, которую вы вводите в Блокнот, будет:
. DIR > Dirlist.txt
Операторы командной строки не чувствительны к регистру, поэтому вам не нужно вводить DIR в верхнем регистре, если вы этого не хотите. После того, как вы введете это в Блокнот, сохраните файл и выйдите. Последнее, что нужно сделать перед фактическим вызовом вашего пакетного файла, — это переименовать его, чтобы он имел расширение «.bat» вместо расширения по умолчанию «.txt». Здесь снова в Проводнике Windows или Проводнике щелкните правой кнопкой мыши только что созданный файл («Directory.txt») и выберите Переименуйте из контекстного меню. С помощью клавиши со стрелкой вправо перейдите к части имени файла «.txt» и замените «.txt» на «.bat», а затем нажмите . Введите . (Windows спросит вас, уверены ли вы, что хотите переименовать файл. Нажмите Да .) Теперь у вас должен быть файл с именем «Directory.bat» в вашей папке.
Один из способов вызвать пакетный файл — дважды щелкнуть его, поэтому для фактического выполнения команды DIR дважды щелкните файл «Directory. bat». Немедленно окно ненадолго появится и исчезнет, и теперь вы увидите файл с именем «Dirlist.txt» в своей папке. Этот файл был создан командами в пакетном файле. Открыв этот файл, вы увидите список каталогов вашей папки C:\Bat.
Очевидно, что наличие пакетного файла, который создает список каталогов вашей папки C:\Bat, имеет ограниченное значение, но этот совет предназначен для того, чтобы дать вам представление о создании и вызове простого пакетного файла. Но возможности пакетной обработки очень мощные. См. другие советы, чтобы получить представление об использовании более сложных пакетных файлов.
Биография автора
Барри Дайсерт
Барри более 35 лет занимается компьютерной техникой, работая на различных должностях, таких как руководитель технической группы, руководитель проекта и разработчик программного обеспечения. В настоящее время он инженер-программист, специализирующийся на разработке пользовательских приложений под Microsoft Windows. Когда Барри не работает с Windows и не пишет советы, он писатель-любитель. Его первая научно-популярная книга называется «Хронологический комментарий к Откровению». Узнать больше о Барри…
Полезные примеры пакетных файлов — обучение / Windows Shell
На этой странице представлены примеры полезных пакетных файлов и фрагментов кода, которые можно использовать в пакетных файлах.
- Определите папку, в которой существует пакетный файл
- Анализ параметров командной строки
- Запуск программы Cygwin из пакетного файла
- Установить заголовок окна командной строки
Определите папку, в которой существует пакетный файл
Пакетным файлам часто необходимо знать расположение входных и выходных файлов.
Это может быть осложнено тем, как запускается пакетный файл, например, путем указания
имя в текущей папке, используя абсолютный или относительный путь к другой папке,
или быть найденным в ПУТЬ
переменная среды.
Один из вариантов — потребовать, чтобы пакетный файл выполнялся из определенной папки,
например, расположение командного файла. Однако это снижает гибкость.
Чтобы разрешить запуск пакетного файла из любой папки,
необходимо определить абсолютное местоположение скрипта, чтобы ввод и вывод
можно указать относительно этого местоположения.
В следующем примере определяется абсолютный путь к выполняемому пакетному файлу:
.
@эхо выключено rem Echo, иллюстрирующий, как получить папку пакетного файла и ее родительскую папку. rem Определите папку, в которой находится этот пакетный файл: rem — используется для указания пути относительно местоположения пакетного файла. установить папку сценария =% ~ dp0 rem Удалить конечный \ из папки scriptFolder установить scriptFolder=%scriptFolder:~0,-1% rem Также получите имя скрипта без начального пути. установить имя_сценария=%~nx0 rem Получите родительскую папку, которая является папкой для полной установки программного обеспечения. rem Необходимо получить родительскую папку, используя подход Windows for loop. для %%i в (%scriptFolder%) установите installFolder=%%~dpi rem Удалить конечный \ из installFolder установить installFolder=%installFolder:~0,-1% эхо scriptFolder=%scriptFolder% эхо installFolder=%installFolder% выход / б 0
- Подстроки обрабатываются с помощью операторов
:~
.
См. документацию по обработке строк. - Имена файлов и папок обрабатываются с использованием
%~
операторов.
См. документацию по тильде в процентах. - Оператор
for
используется для определения родительской папки для папки сценария.
потому что нет эквивалента команде Linuxdirname
.
Обратите внимание, что переменная индекса циклаfor
i
в%%i
должна соответствовать символу в конце строки (~
точек на дюйм). - Будьте осторожны при повторном использовании переменных в
для циклов
и убедитесь, что отложенное расширение не является проблемой во всем пакетном файле.
Если значения переменных не соответствуют ожидаемым, может потребоватьсяsetlocal EnableDelayedExpansion
.
См. документациюsetlocal
.
Анализ параметров командной строки
Обычной задачей при написании пакетного файла является разбор параметров командной строки.
Параметры могут принимать различные формы, в том числе:
-
-a
или/a
— односимвольный вариант -
-a xyz
— односимвольная опция с аргументом -
-abc
— длинный вариант с одинарным тире -
-abc xyz
— длинная опция с одним тире с аргументом -
--aabc
— длинный вариант с несколькими тире -
--aabc xyz
— длинная опция с несколькими тире с аргументом -
--aabc=xyz
— длинный вариант с несколькими дефисами и присваиванием с использованием знака равенства
Программы Windows традиционно использовали косую черту ( /
) для обозначения параметров команды.
Однако это конфликтует с путями, подобными Linux ( /folder1/folder2/file
).
Часто используется синтаксис тире в стиле Linux, а не косая черта.
особенно если программное обеспечение предназначено для Linux.
Можно использовать оператор for
для циклического перебора параметров команды, и пример будет
будут добавлены сюда в будущем.
Однако для простых программ, которые ожидают указания только одного или двух параметров команды,
использование подхода грубой силы работает. Например:
@эхо выключено rem Пример, показывающий парсинг командной строки методом грубой силы. если "%1%"=="/h" перейти к printUsage если "%2%"=="/h" перейти к printUsage если "%1%"=="-h" перейти к printUsage если "%2%"=="-h" перейти к printUsage если "%1%"=="/?" goto printИспользование если "%2%"=="/?" goto printИспользование :printUsage бэр echo Распечатайте здесь использование перейти к выходу0 :выход0 rem Выход из командного файла с кодом 0 выход / б 0
- Приведенный выше пакетный файл требует от нуля до двух параметров.
Поэтому параметр команды%1%
и%2%
проверены. - A
:printUsage
этикетка и
перейти к
используются для перехода к нужному коду.
Запуск программы Cygwin из пакетного файла
Может быть сложно реализовать необходимые функции в пакетном файле Windows.
Сценарий оболочки Cygwin может упростить выполнение задачи.
В следующем примере показано, как вызвать сценарий Cygwin из пакетного файла.
установить gpTempFile=%TMP%\sometempfile.tmp C:\cygwin64\bin\bash --login -c "echo HOME=$HOME" C:\cygwin64\bin\bash --login -c "echo USER=$USER" C:\cygwin64\bin\bash --login -c "echo $(pwd)" rem Перенаправить вывод программы Cygwin во временный файл C:\cygwin64\bin\bash --login -c "путь/к/программе" > %gpTempFile% rem Прочитать временный файл в 'gpVersion' установить /p gpVersion=<%gpTempFile%
- Предполагается расположение установки Cygwin по умолчанию (рекомендуется использовать расположение по умолчанию для предотвращения проблем)
- Важно знать место, где открывается оболочка Cygwin, а также значение важных
переменные среды, которые будут влиять на поведение вызываемой программы Cygwin.
Приведенные выше эхо-операторы помогают понять окружающую среду. - Чтобы найти программу на Cygwin, она должна быть в пути, быть указана как абсолютный путь,
или указываться относительно места запуска программы. - Windows не позволяет назначить выходные данные программы переменной.
Использование временного файла — один из способов обойти это ограничение.
Установить заголовок окна командной строки
Может быть полезно установить заголовок окна командной строки,
например, чтобы указать, что инструмент командной строки настроен для среды.
Например, можно запустить сценарий для настройки PATH
и других переменных среды.
необходимо для запуска программного обеспечения в окне командной строки.
название
команда используется для установки заголовка, например:
@эхо выключено
rem Пример того, как установить заголовок окна командной строки
rem Настроить среду для программного инструмента
установить ENV_VAR1 = некоторое значение
установить ENV_VAR2 = некоторое значение
rem Установите заголовок, чтобы указать, что окно командной строки настроено для программного обеспечения ABC.