Я использую команду robocopy для создания системы резервного копирования, мне удалось скопировать папки, но отметка даты неверна. Папки имеют префикс даты и времени.

Команда robocopy такая:

robocopy U:\Data\  X:\Private\Backups\FolderName_%date:/=-%-(%time::=-%) /e

Выход из папки отображается следующим образом:

FolderName_09-11-2013-(20-24-06.60)

Единственное, что я хочу изменить - это дата, я хочу показать месяц в виде строки только с первыми 3 символами, такими как октябрь.

Может кто-нибудь, пожалуйста, направьте меня. Благодарю.

2 ответа2

3

Обратите внимание, что использование %date% очень сильно зависит от версии Windows и региона. Каждый язык / регион имеет свои собственные настройки, и пользователи могут изменить это тоже. Не очень надежный способ получить дату.

Самый эффективный способ получить правильную дату - использовать wmic OS Get localdatetime . Я не уверен, что вы можете получить название месяца таким же образом, поэтому здесь я просто использовал несколько операторов if, чтобы получить название месяца:

@echo off
for /f "delims=" %%a in ('wmic OS Get localdatetime ^| find "."') do set dt=%%a
set year=%dt:~0,4%
set month=%dt:~4,2%
set day=%dt:~6,2%
if %month%==01 set month=jan
if %month%==02 set month=feb
if %month%==03 set month=mar
if %month%==04 set month=apr
if %month%==05 set month=may
if %month%==06 set month=jun
if %month%==07 set month=jul
if %month%==08 set month=aug
if %month%==09 set month=sep
if %month%==10 set month=oct
if %month%==11 set month=nov
if %month%==12 set month=dec
robocopy U:\Data\  X:\Private\Backups\FolderName_%day%-%month%-%year%-(%time::=-%) /e

Я знаю, что это не «одна строка», но я думаю, что это самый надежный способ получить дату.

-1

Этот короткий скрипт будет делать то же самое, что и выше, без операторов IF.

@echo off &setlocal
for /f "tokens=2*" %%a in ('reg query "HKCU\Control Panel\International" /v sShortDate^|find "REG_SZ"') do set "ssShortDate=%%b"
reg add "HKCU\Control Panel\International" /f /v sShortDate /d "ddd MMM" >nul
set "dowlm=%date:~4,3%
echo %dowlm%
endlocal

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .