Экспорт переменных реестра из пакетного файла
В некоторых случаях поставлена задача, противоположная рассмотренной в предыдущем абзаце. Чтобы сохранить в пакетном файле некоторую часть реестра с полным перечнем параметров, необходимо использовать следующий подход:
regedit.exe -ea C:\environment.reg «HKEY_CURRENT_USER\Environment»
Происходит сохранение ветки HKEY_CURRENT_USER\Environment в документ, расположенный по адресу C:\environment.reg. При запросе на восстановление значений HKEY_CURRENT_USER\Environment, предполагается необходимым только выполнить запуск environment.reg. Примером использования такой команды следует назвать осуществление регулярного бэкапа настроек ПО или всей системы. Подобная информация находится в реестре и может быть выгружена оттуда. Полный адрес может включать в себя проблемы. Чтобы они не вызвали ошибку, надо позаботиться о заключении подобного пути в кавычки.
Обработка восстановления последовательности (НЕ МОНОПОЛЬНО, с возможностью задать отбор по Контрагентам и по Фирмам) Промо
Обработка предназначена для восстановления последовательности проведения документов.
Пригодится, когда возникает ситуация необходимости перепроведения документов, в хронологическом порядке или в том порядке, в котором нужно пользователю за определенный период времени.
Отличается от стандартной обработки «Проведение документов», тем что, можно сделать отбор документов по фирме, по контрагенту или группе контрагентов, и нет необходимости в монопольном доступе, а также можно менять последовательность документов по усмотрению пользователя.
Эта версия обработки для использования на платформе 8.2 в типовых конфигурациях БП 2.0, а также и для УТ 10.3 и УТП 1.2
1 стартмани
Способы обхода процедуры проверки даты из файла BAT
Некоторые программы в процессе своей работы осуществляют проверку текущей даты. В большинстве случаев это создано для контроля временных рамок использования. Достаточно часто владелец устанавливает возможность бесплатной эксплуатации на протяжении установленного периода времени. Когда сроки истекают, расширенный или даже весь функционал программы перестает работать. Другой вариант – это регулярное обновление до последней версии.
Если Вы не хотите, чтобы программа использовала временную проверку, можно изменить свои настройки даты и времени. Этот вариант нельзя назвать приемлемым по многим причинам. Более эффективным подходом требуется назвать использование пакетного файла со специально прописанной информацией. Предполагается запуск приложения и последующий возврат даты к тому значению, что присутствовало ранее.
set tempdate=%date:~-10%
date 01-01-04
start notepad.exe
date %tempdate%
Что именно делают прописанные строки? Прежде всего, производится сохранение текущей даты в системе. Для этого применяется особая переменная. Во второй строке происходит установка системной даты на новое значение. В данном случае, это 1 января 2004 года. Сразу после этого предполагается проведение вызова программы, отвечающей за проверку системной даты. Мы использовали блокнот, но в Вашем случае требуется предусмотреть подобный момент. Пока Блокнот является открытым, пакетный документ ожидает, а сама дата не предусматривает изменение обратно. После закрытия Блокнота происходит возврат системной даты из переменной.
Важно уделить внимание определенному моменту. Когда в пути до конкретного документа используются символы из кириллицы, рекомендуется применять текстовый редактор с поддержкой кодировки 866 (ОЕМ, русская) или аналогичного варианта. Когда это не предусматривается, происходит выдача ошибки и работа пакетного файла не осуществляется
Когда это не предусматривается, происходит выдача ошибки и работа пакетного файла не осуществляется.
Большинство программ упрощают систему проверки – она выполняется исключительно в процессе запуска. Это позволяет модифицировать пакетный документ в соответствии с подобными запросами.
set tempdate=%date:~-10%
date 01-01-04
start notepad.exe
date %tempdate%
Процесс работы довольно прост. В первую очередь выполняется изменение системной даты и последующий запуск программы. Пакетный документ не станет ждать, пока она завершит своё функционирование и осуществит возврат даты на прежнее значение.
Горячие клавиши
Начнем с горячих клавиш, ведь сначала необходимо изучить, что нам может дать рабочая среда.
F1 — В консоли эта клавиша работает в точности как и стрелка вправо, т.е. выводит по одному символу из последней введенной (либо выбранной в истории) команды.F2 <символ> — Выводит последнюю введенную команду до указанного символа. Например, если последняя введенная вами команда выглядела вот так:
то после нажатия комбинации клавиш
F2 5
вы получите:
F3
— Выводит последнюю, и только последнюю, в истории команду целиком.
F5
— Выводит последние введенные команды по порядку, также как и стрелка вверх.
F6
— Вставляет символ EOF на текущую позицию командной строки, что аналогично нажатию комбинации Ctrl Z.
F7
— Диалоговое окно, содержащее историю команд.
Alt F7
— Очищает историю команд.
— Перебирает команды, которые начинаются с символов уже введенных в командную строку.
Если перед нажатием
F8
ничего не вводить, то эта клавиша будет работать как и стрелка вверх, но с небольшим отличием — перебор строк будет осуществляться циклично, т.е. после первой команды из списка будет выведена последняя.
F9 <число>
— Вставляет команду из истории под соответствующим номером. К примеру, в ситуации приведенной на скрине выше при нажатии комбинации
F9 4
в консоли появится:
Применяемые в документах BAT команды
Как уже упоминалось, допускается использовать все команды, некоторые из них предназначаются специально для работы в пакетных файлах. Можно ознакомиться с полным перечнем. Для этого предполагается получить доступ к командной строке. Это можно сделать через Пуск > Выполнить > CMD.
Предусматривается несколько вариантов получения сведений:
help
Если осуществить ввод указанной команды, можно получить полный список существующих команд и небольшие описания к ним. Разрешается обеспечение более детальных сведений. Чтобы можно было их получить, требуется ввести help и название интересующей команды. В качестве примера рекомендуется указать возможность получения данных по АТ:
help AT
Результатом необходимо назвать выдачу перечня ключей для осуществления запуска указанной команды из пакетного документа. В данном плане Windows предоставляет гораздо более широкие возможности, чем DOS. Одним из примеров расширенного функционала требуется назвать открытие файла логов деятельности пакетного доку
start название_документа.txt
Если осуществить запуск подобной команды, то произойдет открытие название_документа.txt. Важным моментом является тот факт, что пакетный файл окончит свою деятельность. Использование подобного метода является оправданным в тех случаях, когда объемы лог-файла невелики.
Перенаправление результата выполнения команды в документ
В случае деятельности BAT файлов сложного типа способны возникнуть проблемы в плане того, насколько правильно функционирует система. Именно по этой причине применяется специальное средство – запись в специальный лог-файл. Это предусматривает возможность ознакомиться с документом в дальнейшем и провести анализ того, насколько правильно осуществлялось выполнение поставленных задач.
Чтобы выполнить перенаправление результата работы в специально предназначенный для этого документ, требуется создать файл BAT со следующими строками:
@echo off
echo Start %time%
echo Create test.txt
echo test>C:\test.txt
echo Copy Test.txt to Old_test.txt
copy C:\test.txt C:\Old_test.txt
echo Stop %time%
Необходимо подробнее разобрать, что именно выполняет указанный набор команд.
Первой строкой задается отключение вывода команд. Это позволит получить в лог-документе исключительно результаты осуществления.
Второй строкой указывается время, когда начал исполняться пакетный файл.
Третьей строкой указывается на то, что следующей командой будет создаваться текстовый документ test.txt.
Четвертая строка предназначена для того, чтобы непосредственно осуществить поставленную задачу. Следующим этапом производится запись в него одного слова – test.
Пятая строка проводит выдачу в лог-документ пояснение о том, что следующим этапом станет происходить копирование в иное место.
В шестой строке осуществляется непосредственное копирование C:\test.txt в файл C:\Old_test.txt. Можно говорить о том, что происходит создание копии документа, но с присвоением для него нового названия.
В заключительной строке указывается команда, которая предусматривается для указания времени действия пакетного документа. Аналогичные сведения можно получить в лог-файле.
Требуется рассмотреть дальнейшие возможности по модификации предложенного набора команд. Часто возникает запрос на выполнение хранения подобных документов в специально предназначенной для них папке. Каждый день должна производиться запись отчета с присвоением для него нового названия. Оптимальный вариант – это использование имени, состоящего из некоторого слова и автоматически добавляемой к нему текущей даты. Сам файл можно назвать 1.bat и сохранить.
Теперь создадим на диске папку LOG и полный путь к ней станет иметь указанный вид: C:\LOG. Следующим этапом происходит запуск команду установленного типа:
1.bat>C:\LOG\%date~-10%.txt
Когда в расположении документа предусматриваются пробелы, рекомендуется предусмотреть указанный момент и применять кавычки или специальный формат записи. Ниже указано два возможных варианта:
«C:\Program Files\1.bat»>C:\LOG\%date~-10%.txt
C:\Progra~1\1.bat>C:\LOG\%date~-10%.txt
Предполагается, что сразу после начала работы 1.bat в папке C:\LOG произойдет создание документа с названием, которое включает текущую дату. Именно указанный файл и требуется установить в качестве отчета о деятельности пакетного файла 1.bat. Если запустить рассмотренный BAT файл, то предполагается предоставление указанного далее результата:
Start 19:03:27,20
Create test.txt
Copy Test.txt to Old_test.txt
Скопировано файлов: 1.
Stop 19:03:27,21
Чтобы произвести перенаправление результатов работы bat-документа в лог-документа, следует применять специальный символ (>). Написание команды будет иметь представленный ниже вид:
Путь\ИмяФайла.bat>Путь\ИмяЛогФайла.txt
Некоторые вопросы касаются расширения, которое должно даваться лог-файлу. Оно может быть любым, в том числе являться страницей html. Последний вариант особенно удобен в том случае, когда выгрузка значений должна происходить на какой-либо сайт.
Новое в версии 1.1
1. Добавлена возможность запуска Отчетов
2. Организована проверка доступа к объекту перед выполнением, проверка прав.
3. Реализована возможность отключения вывода информационных сообщений, в то числе и при ошибках. Тем не менее в журнал регистрации сообщения пишутся.
4. В макете «Исходники» находится описание для «практически безболезненного» включения обработки в состав конфигурации, так как при запуске через ключ /Execute необходимо наличие прав на интерактивный запуск внешних обработок.
5. Изменен алгоритм построения параметра запуска, соответственно изменен и конструктор.
11.06.2010 — Исправлена ошибка в версии 1.1 — исправлен код в макете «Исходники» (осуществлен запуск обработчика только на клиенте)
Шаг 2. Проверьте настройки планировщика заданий
Теперь давайте перейдем к планировщику заданий и изменим там соответствующие настройки. Откройте планировщик задач и найдите свою задачу в разделе «Активные задачи». Они должны быть перечислены в алфавитном порядке.
Дважды щелкните по нему, и он сам откроет задачу в том же окне. Чтобы отредактировать задачу, вам нужно щелкнуть ее правой кнопкой мыши и выбрать «Свойства».
Здесь есть несколько вкладок, и пару вещей нужно проверить и изменить здесь. Во-первых, на вкладке Общие необходимо проверить учетную запись пользователя, которая используется для запуска задачи. В моем случае это учетная запись Aseem, которой я ранее дал разрешения в файловой системе и которая входит в группу администраторов на компьютере.
Далее необходимо выбрать параметр «Выполнить» независимо от того, вошел пользователь в систему или нет, и выбрать Windows Vista, Windows Server 2008 в поле «Настроить для».
На вкладке «Действия» необходимо выбрать сценарий, нажать «Изменить», а затем добавить путь к папке, содержащей сценарий, в поле «Начать с (необязательно)». Это может показаться ненужным, но это не так. В моем случае я поставил в поле C: Users Aseem Documents .
Теперь нажмите OK, чтобы сохранить настройки. Когда вы это сделаете, может появиться диалоговое окно, в котором вы должны ввести пароль для учетной записи пользователя, которая будет запускать задачу. Это выдвигает другое требование. Вы не можете использовать учетную запись, которая не имеет пароля. Учетная запись пользователя должна иметь пароль для запуска задачи.
Наконец, вы должны запустить задачу вручную один раз в планировщике задач, чтобы убедиться, что она выполняется. Если он работает нормально после того, как вы изменили все настройки, тогда он должен работать, когда он должен быть запущен. В моем случае это должно было произойти при запуске, и после внесения изменений все работало нормально.
Обратите внимание, что если ваш сценарий обращается к различным компьютерам в домене при запуске, вы должны попытаться использовать учетную запись администратора домена для запуска задачи. Это гарантирует, что учетная запись имеет достаточно разрешений для доступа к удаленным компьютерам
Еще один момент, на который следует обратить внимание, — это если ваш скрипт обращается к ресурсам в общем сетевом ресурсе. Если ваш скрипт использует буквы для доступа к сети, он может не запуститься
Например, вместо использования F: data в сценарии следует использовать \ имямашины имяресурса data . Если вы все еще не можете запустить скрипт, оставьте здесь комментарий, и я постараюсь помочь. Наслаждайтесь!
Советы
- Чтобы запустить пакетный файл в Windows, просто дважды щелкните по нему.
- Используйте команду «PAUSE», чтобы работа файла возобновилась вручную (когда пользователь нажжет клавишу), а команду «TIMEOUT», чтобы работа файла возобновилась автоматически.
SLEEP.EXE из Windows XP Resource Kit (или Windows 2003 Resource Kit — смотря какая ОС).
Из краткой справки
sleep.exe/? Usage: C:Program FilesWindows Resource KitsToolssleep.exe time-to-sleep-in-seconds C:Program FilesWindows Resource KitsToolssleep.exe time-to-sleep-in-milliseconds C:Program FilesWindows Resource KitsToolssleep.exe commited-memory ratio (1%-100%)
понятно, что для задержки в 10 секунд надо запустить
sleep.exe 10
а для задержки 500 мс надо написать
sleep.exe -m 500
Преимущества: можно задавать задержки в секундах и миллисекундах.
Недостатки: SLEEP.EXE не входит в стандартный комплект Windows и может оказаться, что на другом компьютере его нет.
Инструкция
Паузу можно создать при помощи любой команды. Например, при помощи ping:
ping -n 1 -w 100000 192.168.254.254 >nul
-n 1 – выполнить один запрос-w 100000 – ждать ответа 100 секунд (значение указывается в миллисекундах), меняете это значение на то, которое нужно вам192.168.254.254 – IP адрес, который заведомо не существует в локальной сети, т.е. никогда не ответит на ping, поэтому команда будет выполняться до достижения таймаута>nul – перенаправление всего вывода команды ping в никуда.
Можно использовать утилиту sleep.exe из Ресурскита.
Скрипт WSH/JScript
Создаём на JScript небольшой скрипт SLEEP.JS, использующий функцию WScript.Sleep:
if(WScript.Arguments.Unnamed.length){ var milliseconds=WScript.Arguments.Unnamed(0); WScript.Sleep(milliseconds); }
и вызываем его из командного файла, например, задержка 10 секунд:
cscript //nologo sleep.js 10000
или 500 мс
cscript //nologo sleep.js 500
Преимущества: можно задавать задержки в секундах и миллисекундах; не требуются сторонние программы.
Описание
В некоторых ситуациях может потребовать изменить текущую дату с помощью командой строки или с помощью bat-файла. Например, в ситуациях, когда текущая дата сбилась из-за разряженной батарейки в BIOS и системное время сбилось. Также очень часто бывает, что бывает необходимо обойти проверку даты у какой либо программы. Некоторое программное обеспечение при запуске проверяет текущую системную дату. Если дата больше, чем заложено разработчиком, то программа не запускается. Например, разработчик считает, что версия программы может отработать месяц, а потом пользователь должен будет установить обновленную версию программы. С одной стороны это забота о пользователе, который будет иметь в своем распоряжении свежую версию программы с устраненными недочетами, по отношению к прошлым версиям. С другой стороны, производитель вынуждает пользователя скачивать новую версию даже если пользователя полностью устраивает та версия программы, которая у него установлена. Данную проблему можно легко решить при помощи следующего пакетного файла, который будет запускать программу, дожидаться ее завершения и возвращать дату на ту, которая была до запуска программы.
В данном примере текущая системная дата сначала сохраняется в переменной, затем (во второй строке) системная дата устанавливается на 1-е января 2004 года, а потом вызывается программа, которая проверяет системную дату. В данном примере это Блокнот. До тех пор, пока открыт Блокнот, пакетный файл находится в ожидании, не завершаясь и не переводя системную дату обратно. Как только Блокнот будет закрыт, пакетный файл продолжит свое выполнение и установит системную дату на сохраненное в переменной tempdate значение, т.е. на то, которое было до запуска пакетного файла.
Не забывайте, что если путь до файла, которым запускается программа, содержит пробелы, то его (путь) необходимо заключить в кавычки. Если путь содержит кириллицу, то при написании пакетного файла необходимо использовать текстовый редактор, поддерживающий кодировку DOS (например, FAR). В противном случае, при запуске пакетного файла будет выведено сообщение о том, что «указанный файл не является внутренней или внешней командой…».
Если программа проверяет текущую системную дату только при своем запуске и во время работы больше этого не делает, то пакетный файл можно модифицировать, добавив перед именем исполняемого файла программы оператор start, т.е. наш пример будет выглядеть так:
В этом случае, пакетный файл изменит системную дату, запустит программу и не дожидаясь ее завершения вернет дату на ту, которая была до запуска программы.
Вычисления
В bat-файлах можно выполнять простые арифметические операции с целыми 32-битными числами и битами с помощью команды set /a. Максимальным поддерживаемым числом является 2^31-1 = 2147483647, а минимальным – -(2^31) = -2147483648. Синтаксис напоминает язык программирования Си. К арифметическим операторам относятся: *, /, %, +, -. В bat-файле % (остаток целочисленного деления) должен вводиться как “%%”.
Операторы с двоичными числами интерпретируют число как 32-битную последовательность. К ним относятся: ~ (побитовое НЕ или дополнение), & (И), | (ИЛИ), ^ (исключающее ИЛИ), << (сдвиг влево), >> (сдвиг вправо). Логическим оператором отрицания является ! (восклицательный знак). Он изменяет 0 в 1 и ненулевое значение в 0. Оператором комбинирования служит , (запятая), которая позволяет производить большее число операций в одной команде set. Комбинированные операторы присваивания += и -= в выражениях a+=b и a-=и соответствуют выражениям a=a+b и a=a-b. Так же работают и *=, %=, /=, &=, |=, ^=, >>=, <<=. Приоритет операторов следующий:
(); %+-*/; >>, <<; &; ^; |; =, %=, *=, /=, +=, -=, &=, ^=, |=, <<=, >>=; ,
Литералы можно вводить в виде десятичных, шестнадцатеричных (с ведущими 0x) и восьмеричных чисел (с ведущим нулем). Например, set /a n1=0xffff присваивает n1 шестнадцатеричное значение.
Как запустить командный файл в Windows 10
В Windows 10 вы можете запустить командный файл как минимум тремя способами. Вы можете запустить пакет по требованию, используя проводник или командную строку. Вы можете создать запланированное задание с помощью планировщика заданий. Или вы можете поместить скрипт в папку «Автозагрузка», чтобы запускать его каждый раз при входе в устройство.
Запуск пакетного файла по требованию
Если вам нужно запустить скрипт по требованию, вы можете использовать проводник или командную строку.
Проводник
Чтобы запустить пакетный файл с помощью проводника, выполните следующие действия:
- Откройте проводник.
- Найдите папку со сценарием.
- Дважды щелкните командный файл, чтобы запустить его.
- (Необязательно) Если вы выполняете команду, требующую прав администратора, вам нужно запустить сценарий от имени администратора, щелкнув правой кнопкой мыши пакетный файл и выбрав опцию Запуск от имени администратора.
После того, как вы выполните шаги, пакет будет выполнять каждую команду в последовательности, отображая результаты в терминале.
Командная строка
Чтобы запустить командный файл из командной строки, выполните следующие действия:
- Откройте командную строку от имени администратора.
- Введите путь и название командного файла и нажмите Enter:
C:\PATH\TO\FOLDER\BATCH-NAME.bat
Например, следующая команда запускает пакетный файл, расположенный в пользовательской папке «batch» внутри папки «Downloads»:
C:\Users\user\Documents\scripts\first_batch.bat
После того, как вы выполните эти шаги, выходные данные будут отображаться на экране, даже если скрипт содержит команду «PAUSE».
Запуск пакетного файла по расписанию
Чтобы запланировать запуск пакетного файла в Windows 10, вы можете использовать планировщик задач, выполнив следующие действия:
- Откройте Пуск.
- Введите планировщик заданий и щелкните по верхнему результату, чтобы открыть приложение.
- Щелкните правой кнопкой мыши ветку «Библиотека планировщика заданий» и выберите опцию Создать папку….
- Введите имя для папки – например, MyScripts.
Необязательно создавать папку, но рекомендуется организовать ваши задачи.
- Нажмите кнопку ОК.
- Щелкните правой кнопкой мыши папку MyScripts.
- Выберите опцию Создать простую задачу.
- В поле «Имя» введите краткое описательное имя для задачи – например, SystemInfoBatch.
- (Необязательно) В поле «Описание» создайте описание для задачи.
- Нажмите кнопку Далее.
- Выберите опцию Ежемесячно.
В Windows 10 планировщик задач позволяет выбрать несколько триггеров, в том числе на определенную дату, во время запуска или при входе любого пользователя в устройство. В зависимости от ваших требований вам нужно будет настроить дополнительные параметры. В этом случае мы выбираем вариант запуска задачи каждый месяц.
- Нажмите кнопку Далее.
- Используя настройку «Начать», укажите день и время запуска задачи.
- Используйте выпадающее меню «Месяцы», чтобы выбрать месяцы года, в которые вы хотите выполнить задачу.
- Используйте выпадающее меню «Дни» или «В:», чтобы указать дни, в которые будет выполняться задание.
- Нажмите кнопку Далее.
- Выберите опцию Запустить программу, чтобы запустить пакетный файл.
- В поле «Программа/скрипт» укажите путь к пакетному файлу.
- Нажмите кнопку Готово.
После выполнения этих действий задача сохраниться и запустит пакетный файл по указанному вами расписанию.
Запуск пакетных файлов при запуске
В качестве альтернативы, если вы хотите запускать пакетный файл каждый раз, когда вы входите в свое устройство, вместо использования планировщика заданий, вы можете сохранить сценарий в папке «автозагрузка».
Чтобы запустить скрипт при запуске, используйте следующие простые шаги:
- Откройте проводник.
- Найдите папку с командным файлом.
- Щелкните правой кнопкой мыши файл и выберите параметр Копировать.
- Используйте комбинацию Win + R, чтобы открыть окно «Выполнить»
- Введите следующую команду: shell:startup
- Нажмите Вставить на вкладке «Главная» в папке «Автозагрузка». (Или вы можете нажать кнопку «Вставить ярлык», чтобы создать ярлык для командного файла.)
- Выйдите из учетной записи Windows 10.
- Войдите в аккаунт.
После выполнения этих шагов каждый раз, когда вы входите в учетную запись Windows 10, командный файл будет выполняться и выполнять команды в последовательности.
Мы ориентируем это руководство на Windows 10, но возможность использовать пакетные файлы существует давно, а это означает, что вы можете обратиться к этим инструкциям, если вы всё ещё используете более старую версию, включая Windows 8.1 или Windows 7.
Заключение
В консоли может быть сложно работать, если ее не «приручить». Но если выбрать удобную для себя командную оболочку и один раз ее настроить, то она будет постоянно помогать вам.
Чтобы не настраивать рабочее окружение на каждом новом компьютере заново, сохраняйте конфиги в Git-репозиторий. Но не забывайте о безопасности — следите, чтобы в репозиторий не попал ключи и пароли.
На замену старым утилитам приходят новые, нацеленные на пользователя, а не на скрипты. Используйте их и ищите новые! Если вам кажется, что утилита слишком сложная, возможно, вы такой не один и кто-то уже написал более простой в использовании аналог.
И самое главное — читайте документацию и исследуйте. Порой интересные возможности обнаруживаются у, казалось бы, полностью знакомых утилит.
Если будут вопросы или вам понадобится помощь с освоением консоли, пишите мне в Telegram @osipxd. Ещё я иногда пишу в канал @rareilly заметки про Android и вообще про всё интересное, что нахожу
Спасибо за внимание!