Как я уже сказал в своем комментарии, часть переименования работает нормально. Однако вы должны иметь в виду, что он также выдает сообщение об ошибке, и ваш пакетный скрипт завершает работу сразу после переименования. Таким образом, команда RENAME
должна быть последней в вашем скрипте. (Тем не менее, если имя не меняется после переименования, сценарий также не завершается, и вы можете каким-то образом использовать это в своих интересах, но это другая история.)
Так что, если у вас есть проблемы с «обучением» вашего пакетного скрипта переименованию, я должен предположить, что он как-то связан с битом %s%
вашего примера. И поскольку вы сказали, что пытаетесь установить новое имя на текущую дату, то, возможно, именно эта часть и является причиной проблемы. Поэтому я решил поделиться с вами своим подходом к этому конкретному переименованию.
Вот рабочий пример:
@ECHO OFF
SET timeme=%DATE:/=-%
SET timeme=%timeme: =-%
RENAME %0 %timeme%.bat
Здесь я использую вывод переменной окружения DATE
. Вывод этой переменной отформатирован в соответствии с локальными настройками. На моем компьютере он отформатирован как ddd MM/dd/yyyy
, поэтому %DATE%
оценивается как Fri 04/22/2011
.
Вы видите, что я не просто использую вывод, но и обрабатываю его каким-то образом. Фактически, я заменяю /
и
(пробел) на -
, поэтому я могу использовать результат в качестве имени файла и делать это без необходимости заключать имя в двойные кавычки. Возможно, вам придется проверить вывод %DATE%
, чтобы увидеть, нужно ли вам подставлять и другие символы.
Но вы также можете использовать вывод по-другому. Например, вы можете вырезать год, месяц и день из строки даты, объединить части и использовать полученную строку в качестве нового имени. Вот пример того, как это можно сделать (он упорядочивает детали в формате yyyyMMdd
):
SET timeme=%DATE:~-4%%DATE:~4,2%%DATE:~7,2%
Опять же, это выражение настроено на мой формат отображения даты, поэтому вам может потребоваться изменить все или некоторые числа, чтобы адаптировать его к вашей среде.
Чтобы получить больше информации о извлечении подстроки (а также о подстановке подстроки, как в моем предыдущем примере скрипта), вы можете ввести HELP SET
из командной строки в любой время.