Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Добавление имя каталога к именам выделенных файлов?
Goto page Previous  1, 2, 3, 4  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Общие вопросы printer-friendly view
View previous topic :: View next topic  
Author Message
MStin



Joined: 17 Nov 2005
Posts: 24

Post (Separately) Posted: Mon Nov 21, 2005 14:31    Post subject: Reply with quote

1. Смотря как это будет работать. Если он будет висеть в памяти и ослеживать изменения в "PageStory", то это будет супер. Если нет, то имеет смысл разовый запуск.
2. Дело в том, после переименования, необходимо открытие файла в соотв. программе и внесение некоторого редактирования. После чего он копируется в "F:\PD_xxx_temp\.. "
Back to top
View user's profile Send private message
Batya



Joined: 15 Dec 2004
Posts: 2218
Location: Москва, Россия

Post (Separately) Posted: Mon Nov 21, 2005 15:57    Post subject: Reply with quote

Готово.
Создай файл *.vbs с содержимым:
Code:

'======================================================================
' Переименование файлов в указанном каталоге с заданной периодичностью
' К имени файла добавляется приставка - имя родительского каталога
' Поддерживается двойное вложение подкаталогов
'======================================================================

Dim Mydir, Mysleep, Delimiter, MyKey
'========== Изменяемые параметры =======================================
Mydir     = "E:\PAGE STORE\"  'Сканируемый каталог
Delimiter = "_"               'Разделитель после приставки
Mysleep   = 10000             'Пауза между сканированием в миллисекундах
MyKey     = "HKCU\Environment\RunningMyScript" 'Ключ в реестре
'=======================================================================
Dim FSO, WshShell, MyFolder, MyFolder1
Set FSO = CreateObject("Scripting.FileSystemObject")
Set WshShell = WScript.CreateObject("WScript.Shell")
Set MyFolder = FSO.GetFolder(Mydir)

Dim MykeyValue, MyDirName, ScanFile, ScanFileName, NameLen, MySubFolders, i
MykeyValue = True
WshShell.RegWrite MyKey, MykeyValue

Do While MykeyValue
  MySubFolders = MyDir
  For Each ScanFolder in MyFolder.SubFolders
    MySubFolders = MySubFolders & chr(13) & FSO.GetFolder(ScanFolder).Path
    For Each ScanFolder1 in ScanFolder.SubFolders
      MySubFolders = MySubFolders & chr(13) & FSO.GetFolder(ScanFolder1).Path
    Next
  Next
  MySubFolders = Split(MySubFolders, chr(13))
  For Each ScanFolder in MySubFolders
    Set MyFolder1 = FSO.GetFolder(ScanFolder)
    MyDirName = MyFolder1.Name
    NameLen   = Len(MyDirName)
    For Each ScanFile in MyFolder1.Files
      ScanFileName = FSO.GetFile(ScanFile).Name
      If Left(ScanFileName, NameLen) <> MyDirName Then
        FSO.MoveFile ScanFile, MyFolder1.Path & "\" & MyDirName & Delimiter & ScanFileName
      End If
    Next
  Next
  MykeyValue = WshShell.RegRead(MyKey)
  Wscript.Sleep Mysleep
Loop
WshShell.RegDelete MyKey
Set FSO       = Nothing
Set WshShell  = Nothing
Set MyFolder  = Nothing
Set MyFolder1 = Nothing
WScript.Quit

Этот файл будет висеть в памяти и сканировать папки с интервалом 10 сек. Чтобы корректно прервать его работу, необходимо запустить другой файл *.vbs с содержимым:
Code:
WScript.CreateObject("WScript.Shell").RegWrite "HKCU\Environment\RunningMyScript", "False"

Надеюсь, понятно, что критерием остановки первого скрипта будет значение False в указанном ключе реестра (это значение заносит второй скрипт).
Back to top
View user's profile Send private message
MStin



Joined: 17 Nov 2005
Posts: 24

Post (Separately) Posted: Mon Nov 21, 2005 16:05    Post subject: Reply with quote

Понятно. Спасибо. Пойду тестить.
А переменные можно менять?
Типа вместо "_" поставить "."?
Back to top
View user's profile Send private message
Batya



Joined: 15 Dec 2004
Posts: 2218
Location: Москва, Россия

Post (Separately) Posted: Mon Nov 21, 2005 16:06    Post subject: Reply with quote

MStin
Не сразу заметил последний твой пост.
1.
Quote:
Если он будет висеть в памяти и ослеживать изменения в "PageStory", то это будет супер.

Именно это я и сделал.
2. Если все эти файлы - обычный текст, то я могу их править скриптом, ну а уж потом переносить. Иначе, могу только выполнить вызов этих файлов (в ассоциированной программе).
Back to top
View user's profile Send private message
MStin



Joined: 17 Nov 2005
Posts: 24

Post (Separately) Posted: Mon Nov 21, 2005 16:07    Post subject: Reply with quote

Да ладно. Пока и так здорово. А время я могу уменьшить. Или это будет сильно тормозить систему?
Back to top
View user's profile Send private message
Batya



Joined: 15 Dec 2004
Posts: 2218
Location: Москва, Россия

Post (Separately) Posted: Mon Nov 21, 2005 16:09    Post subject: Reply with quote

MStin
Quote:
А переменные можно менять?
Типа вместо "_" поставить "."?

Конечно можно. Я даже сверху комментарий приписал - "Изменяемые параметры". Только надо учесть, что если будешь менять ключ реестра, во втором файле пропиши такой же.
Back to top
View user's profile Send private message
Batya



Joined: 15 Dec 2004
Posts: 2218
Location: Москва, Россия

Post (Separately) Posted: Mon Nov 21, 2005 16:11    Post subject: Reply with quote

MStin
Quote:
А время я могу уменьшить. Или это будет сильно тормозить систему?

Если честно, то не знаю, насколько этот скрипт ресурсотребователен. Поиграйся, сравни.
Back to top
View user's profile Send private message
MStin



Joined: 17 Nov 2005
Posts: 24

Post (Separately) Posted: Mon Nov 21, 2005 16:12    Post subject: Reply with quote

Ну это понятно. Спасибо.
Куда слать пиво? Smile
Это на Бейсике написано?
Буду разбираться. Классно!!! СУПЕР!!! Мечта сбылась!!!
Back to top
View user's profile Send private message
MStin



Joined: 17 Nov 2005
Posts: 24

Post (Separately) Posted: Mon Nov 21, 2005 16:13    Post subject: Reply with quote

Шикарно работает Smile
Back to top
View user's profile Send private message
Batya



Joined: 15 Dec 2004
Posts: 2218
Location: Москва, Россия

Post (Separately) Posted: Mon Nov 21, 2005 16:15    Post subject: Reply with quote

MStin
Написано на Visual Basic Script. Применяется технология Windows Script Host.
Quote:
Куда слать пиво?

Smile Москва, Россия
Back to top
View user's profile Send private message
Batya



Joined: 15 Dec 2004
Posts: 2218
Location: Москва, Россия

Post (Separately) Posted: Mon Nov 21, 2005 16:16    Post subject: Reply with quote

MStin
Quote:
Шикарно работает

Старался Smile
Back to top
View user's profile Send private message
MStin



Joined: 17 Nov 2005
Posts: 24

Post (Separately) Posted: Mon Nov 21, 2005 16:25    Post subject: Reply with quote

А нельзя сделать, чтобы файлы которые попадают просто в "PageStory" не переименовывались в PageStory_***
а оставались оригинальными?
Back to top
View user's profile Send private message
MStin



Joined: 17 Nov 2005
Posts: 24

Post (Separately) Posted: Mon Nov 21, 2005 16:30    Post subject: Reply with quote

И вообще, можно задать имена каталогов, которые бы не учавствовали в процедуре?
Спасиб Smile
Back to top
View user's profile Send private message
Batya



Joined: 15 Dec 2004
Posts: 2218
Location: Москва, Россия

Post (Separately) Posted: Mon Nov 21, 2005 16:45    Post subject: Reply with quote

MStin
Quote:
А нельзя сделать, чтобы файлы которые попадают просто в "PageStory" не переименовывались в PageStory_***

В 24 строке вместо
Code:
MySubFolders = MyDir

запиши
Code:
MySubFolders = ""

И вместо
Code:
MySubFolders = Split(MySubFolders, chr(13))

запиши
Code:
MySubFolders = Split(Mid(MySubFolders, 2), chr(13))


Quote:
И вообще, можно задать имена каталогов, которые бы не учавствовали в процедуре?

Можно. Только вопрос - эти папки лежат непосредственно в твоей "PageStory" или могут быть в подкаталогах этой папки? Или пропускать по маске названия в любом месте?
Back to top
View user's profile Send private message
MStin



Joined: 17 Nov 2005
Posts: 24

Post (Separately) Posted: Mon Nov 21, 2005 17:28    Post subject: Reply with quote

Thx!
Щас заценю Smile
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Общие вопросы All times are GMT + 4 Hours
Goto page Previous  1, 2, 3, 4  Next
Page 2 of 4

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group