PDA

Показать полную графическую версию : Не создается файл с о временем в имени


Zlunder
21-09-2013, 19:43
Всем доброго времени суток!
Есть задача при загрузке ПК создавать архивную копию папки (допустим "d:\111\") и хранить недельную историю в архиве (допустим "d:\222\"), в имени файла должно присутствовать время создания архива. Организовано это след способом:

"c:\Program Files (x86)\WinRAR\winrar.exe" A "D:\222\%TIME:~0,-3%.rar" "D:\111"
dir D:\222\*.rar /a:-D/b/o:-D > list_of_files.txt
for /F "skip4" %%i in (list_of_files.txt) do (del /Q "%%i")

Но постоянно вылетает ошибка:

! Невозможно создать D:\222\19:34:46.rar
Синтаксическая ошибка в имени файла, имени папки или метке тома.

При чем ошибка возникает только с переменной %time%, при подстановке %date% все прекрасно отрабатывает, но такое условие не устраивает. Подскажите, с чем это м/б связано или что я не правильно делаю.

gora
21-09-2013, 19:59
с чем это м/б связано или что я не правильно делаю. »
Двоеточие в имени файла - недопустимый символ, (используется только после буквы диска).

Zlunder
21-09-2013, 20:12
А есть какое-нибудь решение этой проблемы?

Foreigner
21-09-2013, 20:14
Zlunder,

set "t=%time:~0,-3%"
echo %t::=-%

Zlunder
21-09-2013, 20:20
Так же ругается.

Foreigner
21-09-2013, 20:26
Так же ругается »
На это ругается?

set "t=%time:~0,-3%"
"c:\Program Files (x86)\WinRAR\winrar.exe" A "D:\222\%t::=-%.rar" "D:\111"

Zlunder
21-09-2013, 20:37
Все, нашел решение!

set h=%TIME:~0,2%
set m=%TIME:~3,2%
set s=%TIME:~6,2%

set HMS=%h%_%m%_%s%

Всем спасибо!

Iska
21-09-2013, 21:05
в имени файла должно присутствовать время создания архива. Организовано это след способом:
"c:\Program Files (x86)\WinRAR\winrar.exe" A "D:\222\%TIME:~0,-3%.rar" "D:\111"
… »
"c:\Program Files (x86)\WinRAR\winrar.exe" A -aghhiiss "D:\222\.rar" "D:\111"

Zlunder
21-09-2013, 21:27
Спасибо, но в итоге организовал это так:

chcp 1251
set D=%date:~0,2%
set M=%date:~3,2%
set Y=%date:~8,2%
set YMD=%Y%.%M%.%D%

set h=%TIME:~0,2%
set m=%TIME:~3,2%
set s=%TIME:~6,2%

set HMS=%h%час%m%мин%s%сек

set List=%List.txt%

"c:\Program Files (x86)\WinRAR\winrar.exe" A "D:\222\%YMD%__%HMS%.rar" "D:\111"

dir "D:\222\*.rar" /a:-D/b/o:-D > List

for /F "skip=7" %%i in (LIST) do (del /Q d:\222\"%%i")

Так нет привязки к командам winrar

Iska
22-09-2013, 02:11
chcp 1251»
Сохраняйте пакетный файл в кодировке OEM/866 и искореняйте у себя привычку использовать переключение кодовой страницы на ANSI за исключением особых случаев.


set D=%date:~0,2%
set M=%date:~3,2%
set Y=%date:~8,2%
set YMD=%Y%.%M%.%D%

set h=%TIME:~0,2%
set m=%TIME:~3,2%
set s=%TIME:~6,2%

set HMS=%h%час%m%мин%s%сек

set List=%List.txt%

"c:\Program Files (x86)\WinRAR\winrar.exe" A "D:\222\%YMD%__%HMS%.rar" "D:\111"

Так нет привязки к командам winrar »
Подобное имеет смысл при использовании 7-Zip. Для WinRAR же достаточно простого:
"c:\Program Files (x86)\WinRAR\winrar.exe" A -agyy.mm.dd__hhчасiiминssсек "D:\222\.rar" "D:\111"




© OSzone.net 2001-2012