С учётом "но", наверное, следовало написать "не догадался".) В "Разном" есть смысл искать только в случае непосредственного назначения командам комбинаций клавиш. А так этот диалог "Выбор команды" вызывается либо из меню - Инструменты>Список команд ТС, либо командой cm_CommandBrowser.laburj писал(а):но в "Разном" поискать её догадался
Script Request
Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер
vbs:Йяхе писал(а):Друзья, такая задача: по хоткею добавлять текущую дату_время в конец имени файла\каталога.
Вот так:
Имя_файла_DD-MM-YYYY`HH-MM-SS.расширение
Код: Выделить всё
'==========================================================
' Переименование файла\папки -
' Добавление текущей даты_времи в конец имени:
' Имя_файла_DD-MM-YYYY`HH-MM-SS.расширение
'
' Параметры:
' {файл\папка}
'
' Пример параметров при вызове из TC:
' %P%N
'==========================================================
Option Explicit
Dim FSO, NameAdd, F
Set FSO = CreateObject("Scripting.FileSystemObject")
F = WScript.Arguments(0)
'Текущие дата и время вида DD.MM.YYYY H:MM:SS
NameAdd = Now
'Преобразуем к виду DD-MM-YYYY`HH-MM-SS
NameAdd = Replace(NameAdd, ":", "-")
NameAdd = Replace(NameAdd, ".", "-")
NameAdd = Left(NameAdd, 10) & "`" & Right("0" & Mid(NameAdd, 12), 8)
If FSO.FileExists(F) Then FSO.GetFile(F).Name = FSO.GetBaseName(F) & "_" & NameAdd & "." & FSO.GetExtensionName(F)
If FSO.FolderExists(F) Then FSO.GetFolder(F).Name = FSO.GetFolder(F).Name & "_" & NameAdd
Set FSO = Nothing
WScript.Quit
Нет, я не сплю. Я просто медленно моргаю.
Йяхе писал(а):Нужно менять имена либо выделенных файлов\каталогов, либо, если объект один, - того, который под курсором.
Код: Выделить всё
'==========================================================
' Переименование файлов\папок по файлу-списку -
' Добавление текущей даты_времи в конец имени:
' Имя_файла_DD-MM-YYYY`HH-MM-SS.расширение
'
' Параметры:
' {файл-список}
'
' Пример параметров при вызове из TC:
' %L
'==========================================================
Option Explicit
Dim FSO, NameAdd, List, F
Set FSO = CreateObject("Scripting.FileSystemObject")
List = WScript.Arguments(0)
'Текущие дата и время вида DD.MM.YYYY H:MM:SS
NameAdd = Now
'Преобразуем к виду DD-MM-YYYY`HH-MM-SS
NameAdd = Replace(NameAdd, ":", "-")
NameAdd = Replace(NameAdd, ".", "-")
NameAdd = Left(NameAdd, 10) & "`" & Right("0" & Mid(NameAdd, 12), 8)
For Each F In Split(FSO.OpenTextFile(List).ReadAll, vbNewLine)
If F <> "" Then
If FSO.FileExists(F) Then FSO.GetFile(F).Name = FSO.GetBaseName(F) & "_" & NameAdd & "." & FSO.GetExtensionName(F)
If FSO.FolderExists(F) Then FSO.GetFolder(F).Name = FSO.GetFolder(F).Name & "_" & NameAdd
End If
Next
Set FSO = Nothing
WScript.QuitНет, я не сплю. Я просто медленно моргаю.
Йяхе, так:
Код: Выделить всё
NameAdd = Mid(NameAdd, 7, 4) & Mid(NameAdd, 3, 4) & Left(NameAdd, 2) & "`" & Right("0" & Mid(NameAdd, 12), 8)Скрипт для переименования по собственной маске (маска может быть задана вторым параметром или по умолчанию через константу DefaultMask в теле скрипта):
Код: Выделить всё
'==============================================================
' Переименование файлов\папок в файле-списке по заданной маске.
' Возможные элементы маски (с учётом регистра):
' NNN - имя файла\папки;
' EEE - расширение - только для файлов;
' YYYY - текущий год - 4 цифры;
' YY - текущий год - 2 последние цифры;
' DD - текущий день - всегда 2 цифры;
' D - текущий день - убирается лидирующий 0;
' MM - текущий месяц - всегда 2 цифры;
' M - текущий месяц - убирается лидирующий 0;
' hh - текущий час - всегда 2 цифры;
' h - текущий час - убирается лидирующий 0;
' mm - текущая минута - всегда 2 цифры;
' m - текущая минута - убирается лидирующий 0;
' ss - текущая секунда - всегда 2 цифры;
' s - текущая секунда - убирается лидирующий 0;
' .. - точка (1 символ) - только для файлов.
'
' Параметры:
' {файл-список} [{маска}]
'
' Параметр "маска" не является обязательным -
' будет использовано значение по умолчанию.
'
' Пример параметров при вызове из TC:
' %L "NNN_YYYY-MM-DD`hh-mm-ss..EEE"
'==============================================================
Option Explicit
'====== Изменяемые параметры ==================================
' Маска по умолчанию
Const DefaultMask = "NNN_YYYY-MM-DD`hh-mm-ss..EEE"
'==============================================================
Dim FSO, List, F, Mask, NowTime, E
Set FSO = CreateObject("Scripting.FileSystemObject")
Set E = CreateObject("Scripting.Dictionary")
With WScript
List = .Arguments(0)
If .Arguments.Count > 1 Then
Mask = .Arguments(1)
Else
Mask = DefaultMask
End If
End With
NowTime = Now
With E
.Add "YYYY", Year(NowTime)
.Add "YY" , Right(Year(NowTime), 2)
.Add "DD" , Right("0" & Day(NowTime), 2)
.Add "D" , Day(NowTime)
.Add "MM" , Right("0" & Month(NowTime), 2)
.Add "M" , Month(NowTime)
.Add "hh" , Right("0" & Hour(NowTime), 2)
.Add "h" , Hour(NowTime)
.Add "mm" , Right("0" & Minute(NowTime), 2)
.Add "m" , Minute(NowTime)
.Add "ss" , Right("0" & Second(NowTime), 2)
.Add "s" , Second(NowTime)
.Add "NNN" , ""
.Add "EEE" , ""
.Add ".." , ""
End With
For Each F In Split(FSO.OpenTextFile(List).ReadAll, vbNewLine)
If F <> "" Then
If FSO.FileExists(F) Then
E("NNN") = FSO.GetBaseName(F)
E("EEE") = FSO.GetExtensionName(F)
E("..") = "."
FSO.GetFile(F).Name = ReplaceAll(Mask, E)
ElseIf FSO.FolderExists(F) Then
E("NNN") = FSO.GetFolder(F).Name
E("EEE") = ""
E("..") = ""
FSO.GetFolder(F).Name = ReplaceAll(Mask, E)
End If
End If
Next
Set E = Nothing
Set FSO = Nothing
WScript.Quit
Function ReplaceAll(pName, pDic)
Dim lK
ReplaceAll = pName
For Each lK In pDic.Keys
ReplaceAll = Replace(ReplaceAll, lK, pDic(lK), 1, -1, 0)
Next
End Function
Нет, я не сплю. Я просто медленно моргаю.
Сделал, только пока не выкладывал:sa писал(а):Вот только может, ещё до кучи ввести последовательное добавление _2, _3 и т.д. для уже существующих имён файлов\папок?
CC[n] - счётчик, где n - минимальное кол-во цифр счётчика.
sa
Вопрос:
Name1.txt
Name2.doc
20100601_02.xls
Нет, я не сплю. Я просто медленно моргаю.