Дата добавления пакетного файла в имя файла

2 года назад я написал командный файл, который, казалось, отлично работал, ежедневно создавая резервную копию электронной таблицы Excel. Внезапно на 1 день он перестал работать должным образом и начал буквально назначать переменные вместо того, чтобы тянуть фактическую дату, поэтому он просто начал перезаписывать себя каждый день.

Я пошел от получения этого имени файла: Вкусный график 2018 - 30.04.2018

Чтобы теперь получить это имя файла: Вкусный график 2018 - ~ 4,2- ~ 6,2- ~ 0,4

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

@echo off
for /f "delims=" %%a in ('wmic OS Get localdatetime  ^| find "."') do set dt=%%a
set YYYY=%dt:~0,4%
set MM=%dt:~4,2%
set DD=%dt:~6,2%
set HH=%dt:~8,2%
set Min=%dt:~10,2%
set Sec=%dt:~12,2%

set stamp=%MM%-%DD%-%YYYY%

copy "J:\TROY C\2018 Schedule\Tasty Schedule 2018.xlsx" "J:\Joe's Folder\ChocScheduleBackUps\Tasty Schedule 2018 - %stamp%.xlsx"

Вы недавно меняли переменную системного пути? Этот путь к папке должен существовать в переменной системного пути. C:\windows\System32\Wbem.

Squashman 31.10.2018 15:36
0
1
1 720
3

Ответы 3

Запустите следующую команду в командной строке:

wmic OS Get localdatetime

Это должно показать дату, вы можете начать оттуда.

Проверьте настройки вашего языкового стандарта: указанная команда WMIC зависит от языкового стандарта.

Чтобы WMIC заработал, при запуске set PATH из командной строки вам необходимо увидеть следующее:

C:\Program Files\7-Zip>set PATH
Path=...;C:\WINDOWS\System32\Wbem;...

(Не изменяйте каталог C:\Windows, ваш компьютер больше не будет работать)

('wmic' не распознается как внутренняя или внешняя команда, работающая программа или командный файл.) Может быть, именно поэтому он сейчас не возвращает дату правильно?

Brandon 31.10.2018 13:49

Скорее всего, вы можете проверить, существует ли этот файл? C:\Windows\System32\wbem\WMIC.exe. Если это так, проверьте, присутствует ли этот каталог в переменной среды PATH.

Dominique 31.10.2018 14:26

Я вошел в переменные среды и не увидел WMIC в списке пользовательских или системных переменных. Я добавил wmic в качестве переменной и местоположение в качестве значения в обоих, но все равно получаю то же нераспознанное сообщение, когда я запускаю его из CMD. Странно то, что какое-то время это работало отлично, а однажды просто перестало работать.

Brandon 31.10.2018 16:05

Это не способ сделать это: вам нужно проверить, присутствует ли указанный путь в вашей переменной среды PATH. Возможно, он написан как %SystemRoot%\System32\Wbem.

Dominique 31.10.2018 16:34

Я не уверен, что полностью понимаю. Я должен быть в Системных свойствах> Дополнительно> Переменные среды, правильно? В этом месте (C: \ или SystemRoot) не было значения, которое вообще указывало на папку wbem. Я нажал кнопку «Новый» и добавил еще один с переменной wmic, но это, похоже, не помогло. Вы говорите, что C: \ Windows следует изменить на SystemRoot и попробовать таким образом?

Brandon 31.10.2018 16:54

Как изменить переменные среды / PATH: computerhope.com/issues/ch000549.htm

Dominique 31.10.2018 16:59

Вот пример использования RoboCopy вместо этого:

@Echo Off
Set "dStamp="
For /F "Tokens=1-3 Delims=/ " %%A In ('RoboCopy/NJH /L "\|" Null') Do If Not Defined dStamp Set "dStamp=%%B-%%C-%%A"
If Defined dStamp Copy "J:\TROY C\2018 Schedule\Tasty Schedule 2018.xlsx" "J:\Joe's Folder\ChocScheduleBackUps\Tasty Schedule 2018 - %dStamp%.xlsx"

Я решил свою проблему, добавив «C: \ Windows \ System32 \ wbem \» в PATH, чтобы WMIC работал, а также добавив «C: \ Windows \ System32 \» в PATH, чтобы FIND работал.

Другие вопросы по теме