|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Пробел вместо нуля в разряде десятков часов |
|
|
CMD/BAT - Пробел вместо нуля в разряде десятков часов
|
Новый участник Сообщения: 16 |
При добавлении текущего времени к имени файла (или папки), при создании папки с текущим временем в имени и многих других случаях, где используется %time:~0,2% , имеем пробел вместо нуля в разряде десятков часов, если часы не перевалили за 10: Err-123- 8.06.53.log и FOLDER- 8.07.49 вместо желаемых Err-123-08.06.53.log и FOLDER-08.07.49 , что неудобно (в т.ч. при сортировке по имени). Это исправимо? Знатоки! Откликнитесь!
for %%i in (Err-*.log) do ren "%%i" "%%~ni-%time:~0,2%.%time:~3,2%.%time:~6,2%%%~xi" md "FOLDER-%time:~0,2%.%time:~3,2%.%time:~6,2%" Системное время во всех местах отображается подходяще - с нулем... |
|
Отправлено: 18:29, 02-03-2017 |
Забанен Сообщения: 795
|
Я себе дату беру для имени папки по другому. так удобней:
rem взять дату заменить точки на подчеркивание, развернуть сначала год_месяц_день for /f "delims=. tokens=1,2,3" %%i in ("%date%") do set d=%%k_%%j_%%i rem echo %d% ... тоже самое и с временем, чуть изменив: |
Отправлено: 19:15, 02-03-2017 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 2732
|
Профиль | Отправить PM | Цитировать |
------- Отправлено: 20:26, 02-03-2017 | #3 |
Забанен Сообщения: 793
|
|
Отправлено: 22:04, 02-03-2017 | #4 |
Новый участник Сообщения: 16
|
Профиль | Отправить PM | Цитировать greg zakharov
Спасибо. Постараюсь осилить (см. P.S.) x0r Спасибо. С %date% все прошло гладко. О %time% : ну не заработал у меня этот и еще пара-тройка подобных ему сценариев, пока вручную не поставил точки в качестве разделителей компонентов системного времени (а это меня не устраивает). А когда извлеченное из системы время все же вставилось куда нужно, то при HH<10 вместо нуля в разряде десятков часов обнаружился все тот же пробел... И все равно было очень познавательно. Еще раз спасибо. megaloman Спасибо. Очень компактно и эффективно. Все заработало как положено, и нужные нули - в нужных местах без мороки (да Вы и сами знаете). Добавил (по аналогии) вставку даты, разумный твик реестра (чтобы без сюрпризов), подобрал компактные разделители (дело вкуса). И вот что вышло: Reg.exe add "HKCU\Control Panel\International" /v "s1159" /t REG_SZ /d "" /f Reg.exe add "HKCU\Control Panel\International" /v "s2359" /t REG_SZ /d "" /f Reg.exe add "HKCU\Control Panel\International" /v "sDate" /t REG_SZ /d "." /f Reg.exe add "HKCU\Control Panel\International" /v "sTime" /t REG_SZ /d ":" /f Reg.exe add "HKCU\Control Panel\International" /v "sShortDate" /t REG_SZ /d "yyyy.MM.dd" /f Reg.exe add "HKCU\Control Panel\International" /v "iTLZero" /t REG_SZ /d "1" /f Reg.exe add "HKCU\Control Panel\International" /v "sTimeFormat" /t REG_SZ /d "HH:mm:ss" /f Set "date1=%date: =0%" Set "date1=%date1:~0,4%'%date1:~5,2%'%date1:~8,2%" Set "time1=%time: =0%" Set "time1=%time1:~0,2%'%time1:~3,2%'%time1:~6,2%" for %%i in (Err-*.log) do ren "%%i" "%%~ni_%date1%`%time1%%%~xi" md "FOLDER_%date1%`%time1%" А вот и желаемый продукт: Err-123_2017'03'02`06'12'19.log и FOLDER_2017'03'02`06'12'19 ! Всем большое спасибо! P.S. До этого на тему CMD/BAT не заморачивался... |
|
Последний раз редактировалось qaaqasqad, 05-03-2017 в 14:19. Причина: дополнение Отправлено: 01:00, 03-03-2017 | #5 |
Забанен Сообщения: 795
|
Цитата qaaqasqad:
rem взять время заменить точки на подчеркивание. for /f "delims=:, tokens=1,2,3" %%i in ("%time%") do (set t=%%i_%%j_%%k) set t=%t: =0% echo %t% pause ![]() |
|
Отправлено: 16:41, 03-03-2017 | #6 |
Новый участник Сообщения: 16
|
Профиль | Отправить PM | Цитировать x0r
Спасибо. "Обнулился" ![]() ![]() ::Reg.exe add "HKCU\Control Panel\International" /v "sShortDate" /t REG_SZ /d "yyyy.MM.dd" /f for /f "delims=.:,;-_`/|\ tokens=1,2,3" %%i in ("%date%") do (set dateX=%%i'%%j'%%k) for /f "delims=.:,;-_`/|\ tokens=1,2,3" %%i in ("%time%") do (set timeX=%%i'%%j'%%k) set timeX=%timeX: =0% md "FLDR`%dateX%`%timeX%" На выходе (при yyyy/MM/dd в системе) получается: FLDR`2017'03'04`06'55'56 ![]() Еще раз всем спасибо! |
Последний раз редактировалось qaaqasqad, 05-03-2017 в 14:07. Отправлено: 00:49, 04-03-2017 | #7 |
Ветеран Сообщения: 2732
|
Профиль | Отправить PM | Цитировать |
------- Отправлено: 17:30, 04-03-2017 | #8 |
Забанен Сообщения: 795
|
Цитата qaaqasqad:
|
|
Отправлено: 20:36, 04-03-2017 | #9 |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать |
Отправлено: 00:19, 05-03-2017 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Снижение стоимости часов Pebble и возможное появление часов LG на webOS | OSZone News | Новости информационных технологий | 0 | 02-10-2014 19:30 | |
Разное - Некорректное завершение работы при разряде батареи | P.O.D. | Microsoft Windows 7 | 0 | 02-11-2010 10:26 | |
На DVD диске объём превышает несколько десятков гигабайт | gen0m.rsw | Хочу все знать | 4 | 11-07-2010 20:37 | |
Выключение сервера при разряде UPS | Seven | Microsoft Windows NT/2000/2003 | 11 | 08-02-2010 11:44 | |
В Windows и Office найдено более двух десятков «дыр» | CnyH9I | Флейм | 4 | 05-02-2010 16:58 |
|