Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Переименование группы файлов по дате создания

Ответить
Настройки темы
CMD/BAT - Переименование группы файлов по дате создания

Пользователь


Сообщения: 84
Благодарности: 0

Профиль | Отправить PM | Цитировать


Добрый день!

Подскажите, как в некоторой папке, по какой-либо маске (к примеру *.arj) переименовать все файлы удовлетворяющие маске добавив впереди дату создания до секунд.
например было Dat_day1.arj, а будет, например, 2012-04-09-23-44-25_Dat_day1.arj, где сначала идет год, месяц, день и т.д. Как переименовать отдельный файл знаю, а вот обойти все в цикле затрудняюсь. Необходимо сделать все проверки на наличие папки, файлов и т.д. что там по уму нужно.

Пробовал найденное на форуме, но почему то не срабатывает, пишет не найден файл
Спасибо.

Отправлено: 21:56, 09-04-2012

 

Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Serg2010, WSH устроит?
читать дальше »
Код: Выделить весь код
Option Explicit

Dim strFolder
Dim strExtension

Dim objFile
Dim dtDateCreated


With WScript.Arguments
	If .Count <> 2 Then
		WScript.Echo "Usage: cscript.exe //nologo """ & WScript.ScriptFullName & """ ""<Path>"" ""<mask>"""
		WScript.Quit 1
	Else
		strFolder = .Item(0)
		strExtension   = .Item(1)
	End If
End With

With WScript.CreateObject("Scripting.FileSystemObject")
	If .FolderExists(strFolder) Then
		For Each objFile In .GetFolder(strFolder).Files
			If UCase(.GetExtensionName(objFile.Name)) = UCase(strExtension) Then
				dtDateCreated = objFile.DateCreated
				
				objFile.Name = _
					Align(Year  (dtDateCreated), 4) & "_" & _
					Align(Month (dtDateCreated), 2) & "_" & _
					Align(Day   (dtDateCreated), 2) & "_" & _
					Align(Hour  (dtDateCreated), 2) & "_" & _
					Align(Minute(dtDateCreated), 2) & "_" & _
					Align(Second(dtDateCreated), 2) & "_" & _
					objFile.Name
			End If
		Next
	Else
		WScript.Echo "Folder [" & strFolder & "] not found"
	End If
End With

WScript.Quit 0

Function Align(anyValue, lngWidth)
	Align = Right(String(lngWidth, "0") & CStr(anyValue), lngWidth)
End Function

Первым аргументом указываете путь, вторым — расширение.

Отправлено: 22:53, 09-04-2012 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Пользователь


Сообщения: 84
Благодарности: 0

Профиль | Отправить PM | Цитировать


Добрый вечер!

Да надо именно в cmd. Так как другие какие либо скрипты и программы запрещены отделом защиты информации.

:-(

Отправлено: 19:14, 10-04-2012 | #3


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Serg2010, а Вы проверьте.

Отправлено: 20:16, 10-04-2012 | #4


Аватара для El Sanchez

Ветеран


Contributor


Сообщения: 1264
Благодарности: 1024

Профиль | Отправить PM | Цитировать


Цитата Serg2010:
Да надо именно в cmd »
Serg2010, на CMD только до минут, без секунд.
Код: Выделить весь код
@Echo Off
SetLocal
If "%~1"=="" Echo:Параметры не заданы.&Exit /B 1
If "%~2"=="" Echo:Не задан второй параметр.&Exit /B 1
If Not Exist "%~1" Echo:Папка %~1 не найдена.&Exit /B 1

For /F "Tokens=1-6* Delims=.: " %%A In ('Dir /A-D /TC /-C "%~1\*.%~2"^|FindStr /i .%~2$') Do Ren "%~1\%%G" "%%C-%%B-%%A-%%D-%%E_%%G"
Пример вызова: script.bat "C:\Source" "arj"


Цитата Serg2010:
Так как другие какие либо скрипты и программы запрещены отделом защиты информации. »
Чем мотивируют-то?

Отправлено: 17:46, 12-04-2012 | #5


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата El Sanchez:
Чем мотивируют-то? »
«Низзяяяя!»


Цитата El Sanchez:
…только до минут, без секунд. »
Можно по пути брать из Wbem:
Код: Выделить весь код
wmic.exe DataFile where "Name = 'c:\\boot.ini'" get CreationDate /value
Это сообщение посчитали полезным следующие участники:

Отправлено: 19:04, 12-04-2012 | #6


Аватара для El Sanchez

Ветеран


Contributor


Сообщения: 1264
Благодарности: 1024

Профиль | Отправить PM | Цитировать


Iska, спасибо, что напомнили, получилось вот что:
Код: Выделить весь код
@Echo Off
SetLocal
If "%~1"=="" Echo:Параметры не заданы.&Exit /B 1
If "%~2"=="" Echo:Не задан второй параметр.&Exit /B 1
If Not Exist "%~1" Echo:Папка %~1 не найдена.&Exit /B 1

Set Source=%~pn1
:Loop
If Not "%Source%"=="" If "%Source:~-1%"=="\" Set Source=%Source:~0,-1%& GoTo :Loop
For /F "Tokens=2* Delims=," %%A In ('WMIC DataFile Where ^"Drive^=^'%~d1^' And Path^=^'%%Source:\^=\\%%\\^' And Extension^=^'%~2^'^" Get Name^,CreationDate /Format:CSV 2^>nul^|FindStr /i .%~2$') Do (
	Set dF=%%A
	Call Ren "%%B" "%%dF:~0,4%%-%%dF:~4,2%%-%%dF:~6,2%%-%%dF:~8,2%%-%%dF:~10,2%%-%%dF:~12,2%%_%%~nxB"
)

Последний раз редактировалось El Sanchez, 13-04-2012 в 10:27. Причина: update

Это сообщение посчитали полезным следующие участники:

Отправлено: 21:32, 12-04-2012 | #7


Пользователь


Сообщения: 84
Благодарности: 0

Профиль | Отправить PM | Цитировать


спасибо.... секунды в принципе и не важны .... ну что так всё сложно то а :-)

Отправлено: 21:39, 13-04-2012 | #8


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Serg2010, если секунды не важны, то это проще.

Отправлено: 00:40, 14-04-2012 | #9



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Переименование группы файлов по дате создания

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Прочие - [решено] Сортирование файлов по папкам (копирование по дате создания) DIMM2005 Программное обеспечение Windows 36 03-01-2020 16:54
Переименование группы файлов по дате создания Serg2010 AutoIt 1 10-04-2012 10:25
CMD/BAT - [решено] Создание папок по дате получения файлов и перемещение в них файлов KamikadZZe Скриптовые языки администрирования Windows 1 01-09-2011 14:15
CMD/BAT - Удаление файлов по дате ADGJMPTW Скриптовые языки администрирования Windows 1 10-10-2010 20:08
CMD/BAT - [решено] Копирование самого позднего по дате создания каталога. SANIOK_AV Скриптовые языки администрирования Windows 2 04-12-2009 17:29




 
Переход