Как можно работать с переменными среды %date% и %time% в коммандных файлах Windows. cmd /. bat

Блог did5.ru

На переименование доменного компьютера у администратора уходит 10-15 минут. При этом достаточно много совершается телодвижений. Т.к. в крупной сети эта операция происходит очень часто, то суммарное затраченное время поражает. Весь этот процесс можно упростить до безобразия.

Используем стандартную программу netdom.exe. Графического интерфейса у нее нет, поэтому все действия выполняются через командную строку. Запускаем cmd.exe и вводим:

Где pcName — имя компьютера, который будем переименовывать, newName — новое имя ПК, /userd — учетная запись администратора и его пароль в /passwordd. Вместо пароля стоит зведочка (*), чтобы не держать пароль в открытом виде. Пароль будет запрашиваться при выполнении команды. Также задано время до перезагрузки — 15 секунд.

Чтобы не писать каждый раз длинную команду, я написал .bat файл, который запрашивает параметры и подставляет в командную строку.

Если все параметры введены правильно, то через 15 секунд ПК загрузится и будет уже с новым именем. Если на компьютере никто не вошел в систему (экран ввода пароля), то компьютер переименуется, но не перезагрузится.

Нашли опечатку в тексте? Пожалуйста, выделите ее и нажмите Ctrl+Enter! Спасибо!

Как можно работать с переменными среды %date% и %time% в коммандных файлах Windows .cmd / .bat

Иногда требуется сформировать переменную даты и времени в cmd / bat скриптах windows так, как нужно нам, а не так, как нам отдаёт операционная система.

Например чтоб добавить эти данные в log файл, для фиксации времени или даты события, создать файл с именем, в котором должны фигурировать данные даты или времени (день, месяц, год, час, минуты, скунды, миллисекунды.) Да мало-ли, какие у нас задачи. Подключаем нашу фантазию 🙂

В следующем примере мы видим разбиение переменных по нужным нам шаблонам.

h- час 2 знака (то есть час будет выдаваться в следующем виде — 01, 02, . 09, . , 12, . 24)

m — минуты 2 знака

s — секунжы 2 знака

ms — миллисекунды 2 знака, почему-то от 0 до 99

dd — день 2 знака

mm — месяц 2 знака

yyyy — год 4 знака

Пример использования переменных %DATE% и %TIME% в скриптах cmd / bat Windows:

@echo off
set h=%TIME:~0,2%
set m=%TIME:~3,2%
set s=%TIME:~6,2%
set ms=%TIME:~9,2%
set curtime=%h%:%m%:%s%:%ms%
set dd=%DATE:~0,2%
set mm=%DATE:~3,2%
set yyyy=%DATE:~6,4%
set curdate=%dd%-%mm%-%yyyy%
set curdatetime=%curdate% %curtime%

echo Текущее время — %curdatetime%

В некоторых версиях Windows формат выдачи даты и времени другой, поэтому данный скрипт может работать совсем так как нам нужно.

По идее, подобным способом можно брать части любых переменных, суть в том что формат здесь такой:

Первая цифра после :~ — это номер символа, с которого мы начинаем брать значение, вторая цифра это сколько символов захватывать.

Таким образом получается что мы можем взять для своих нужд любую часть, любой доступной нам переменной среды Windows.

Мне известны следующие переменные, значения которых мы можем получить:

Дополнительные ресурсы

@Maven Я только что обновил свой ответ, поскольку вы обновили вопрос, добавив его в цикл для команды DIR и подстановочных знаков, чтобы получить ожидаемый результат (ы). Возможно, вам понадобится добавить логику IF, чтобы отфильтровать ее по какому-то явному имени папки, иначе он получит все совпадения.

Если вам нужно установить подходящее имя каталога Docum?nt* , то вам нужно:

Если маске соответствует несколько каталогов, вы получите только одно совпадение. Если вам нужна переменная для хранения списка соответствующих каталогов, то вам нужно будет использовать for /f .

6 Ответ от alexii 2012-04-09 20:50:51

Re: CMD/BAT: Переменная цикла For и имена переменных окружения.

Избегайте излишнего цитирования. Я поправил Ваш пост.

Только до меня было так сделано, что программа проверяет все логические диски системы и устанавливает следующие переменные в зависимости от типа диска:

Вы не дали комментариев по:

Если по условиям задачи допустимо использование «wmic.exe» или «fsutil.exe», то можно и не задавать перечень дисков «ручками».

Ибо в этом случае нет нужды устанавливать переменные окружения:

Надо работать с этими уже установленными переменными окружения.

Узнаем имена компьютеров через Powershell используя PSremoting

Мы так же можем использовать PSremoting, но для него может потребоваться предварительная настройка, т.к. будет использоваться NTLM. Настройка обсуждалась в этой статье. Если с помощью встроенной переменной мы получаем имя своего компьютера:

То у множества компьютеров имя мы можем получить так:

Как узнать список переменных в редакторе реестра

Для просмотра системных переменных окружения в редакторе реестра, нужно открыть ветку реестра:

Для просмотра пользовательских переменных окружения в редакторе реестра, нужно открыть ветку реестра:

Оцените статью
Fobosworld.ru
Добавить комментарий

Adblock
detector