View previous topic :: View next topic |
Author |
Message |
Toni
Joined: 13 Jul 2005 Posts: 26
|
(Separately) Posted: Wed Jul 13, 2005 15:58 Post subject: Автоматическое создание каталога с именем - текущая дата? |
|
|
Приветствую. Есть такой вопрос: - мне часто приходиться создавать каталоги, именем которого должна быть просто текущая дата. Никто не подскажет, можно ли как-то этото процесс автоматизировать при помощи Тотала? |
|
Back to top |
|
|
Batya
Joined: 15 Dec 2004 Posts: 2218 Location: Москва, Россия
|
(Separately) Posted: Wed Jul 13, 2005 16:47 Post subject: |
|
|
Создай файл *.vbs, повесь его на кнопку или в меню "Запуск" и в параметрах кнопки укажи %P.
Code: | '=====================================================================
' Создание папки с именем системной даты
' В параметрах вызова из TC должно быть прописано:
' %P
'=====================================================================
Dim FSO
Set FSO = CreateObject("Scripting.FileSystemObject")
Dim MyPath, MyDate, NewFold, M1
MyPath = WScript.Arguments(0)
MyDate = Date
NewFold = MyPath & MyDate
If Not FSO.FolderExists(NewFold) Then
FSO.CreateFolder(NewFold)
M1 = MsgBox("Создана папка:" & chr(13) & NewFold, vbOKOnly + vbInformation, "Результат")
Else
M1 = MsgBox("Папка" & chr(13) & NewFold & chr(13) & "уже существует", vbOKOnly + vbExclamation, "Внимание!")
End If
Set FSO = Nothing
Wscript.Quit |
|
|
Back to top |
|
|
Toni
Joined: 13 Jul 2005 Posts: 26
|
(Separately) Posted: Wed Jul 13, 2005 19:06 Post subject: |
|
|
Только что выяснил, что скрипт не работает, если я пытаюсь создать каталог на FTP. Т.е. захожу на FTP Сервер и пытаюсь там создать каталог... - выдает ошибку:
Строка: 16
Символ: 3
Ошибка: Недопустимое имя или номер файла
Код: 800А0034
Источник: ошибка выполнения Microsoft VBScript
Вот, увы...
Если бы можно было это как-то исправить, буду весьма благода...! |
|
Back to top |
|
|
Batya
Joined: 15 Dec 2004 Posts: 2218 Location: Москва, Россия
|
(Separately) Posted: Wed Jul 13, 2005 19:14 Post subject: |
|
|
Я с FTP никогда не работал. Для проверки вставь после 14-ой строки:
Хоть узнать, что скрипт вообще пытается создать. |
|
Back to top |
|
|
Volniy
Joined: 15 Dec 2004 Posts: 585 Location: Местный
|
(Separately) Posted: Thu Jul 14, 2005 10:49 Post subject: |
|
|
Batya wrote: | Я с FTP никогда не работал. |
FSO предоставляет доступ к файловой системе компьютера, тоесть к дискам, папкам, файлам. Доступ через FTP протокол - это уже совсем из другой оперы. Перепиши лучше скрипт через {F7}->имя новой папки->{ENTER}. |
|
Back to top |
|
|
Toni
Joined: 13 Jul 2005 Posts: 26
|
(Separately) Posted: Thu Jul 14, 2005 11:00 Post subject: |
|
|
Batya
Вставил, не помогло!
Volniy
Спасибо за участие, только, не могли бы Вы по подробнее объяснить - что имеется ввиду? Т.е, что именно надо сделать? Как подставить скрипт к функции клавиши {F7}? |
|
Back to top |
|
|
Batya
Joined: 15 Dec 2004 Posts: 2218 Location: Москва, Россия
|
(Separately) Posted: Thu Jul 14, 2005 13:26 Post subject: |
|
|
Volniy
Понял. Спасибо за совет.
Вот только как проверять существование папки? FSO.FolderExists тоже ведь не работает (я оставил на всякий случай )?
Toni
Quote: | Вставил, не помогло! |
А и не должно было помочь. Просто должно было появиться дилоговое окно с названием создаваемой папки.
По совету Volniy изменил скрипт. Проверь на работоспособность.
Code: | '=====================================================================
' Создание папки с именем системной даты
' В параметрах вызова из TC должно быть прописано:
' %P
'=====================================================================
Dim FSO, WS
Set FSO = CreateObject("Scripting.FileSystemObject")
Set WS = WScript.CreateObject("WScript.Shell")
Dim MyPath, MyDate, NewFold, M1
MyPath = WScript.Arguments(0)
MyDate = Date
NewFold = MyPath & MyDate
If Not FSO.FolderExists(NewFold) Then
Wscript.Sleep 500
WS.SendKeys "{F7}" & NewFold & "{Enter}"
M1 = MsgBox("Создана папка:" & chr(13) & NewFold, vbOKOnly + vbInformation, "Результат")
Else
M1 = MsgBox("Папка" & chr(13) & NewFold & chr(13) & "уже существует", vbOKOnly + vbExclamation, "Внимание!")
End If
Set FSO = Nothing
Set WS=Nothing
Wscript.Quit |
|
|
Back to top |
|
|
Toni
Joined: 13 Jul 2005 Posts: 26
|
(Separately) Posted: Thu Jul 14, 2005 16:49 Post subject: |
|
|
Batya
Еще раз спасибо огромное за участие в решение проблемы!
Новый скрипт отрабатывает на FTP, но, создает каталог с именем всего пути.
Вот такой, вот каталог у меня получился:
ftpU##логин"upload.als.ru#Toni#Privat#2005.07.14
Может быть можно это как-то исправить? |
|
Back to top |
|
|
Toni
Joined: 13 Jul 2005 Posts: 26
|
(Separately) Posted: Thu Jul 14, 2005 16:57 Post subject: |
|
|
Batya
Сейчас еще проверил создание новым скриптом каталога локально (на винте, не на FTP), там - тоже самое, имя каталога содержит весь путь, НО! еще и ошибка выдается:
Строка: 13
Символ: 1
Ошибка: Индекс выходит за пределы допустимого диапазона
Код: 800А0009 |
|
Back to top |
|
|
Batya
Joined: 15 Dec 2004 Posts: 2218 Location: Москва, Россия
|
(Separately) Posted: Thu Jul 14, 2005 17:35 Post subject: |
|
|
Блин, ступил, когда скрипт правил, чтоб на FTP работал. Вот нормальный вариант (входные параметры уже не нужны):
Code: | '=======================================
' Создание папки с именем системной даты
'=======================================
Dim WS
Set WS = WScript.CreateObject("WScript.Shell")
Dim NewFold
NewFold = Date
Wscript.Sleep 500
WS.SendKeys "{F7}" & NewFold & "{Enter}"
Set WS=Nothing
Wscript.Quit |
Также убрал проверку на наличие каталога - не знаю, как на FTP проверять. |
|
Back to top |
|
|
Batya
Joined: 15 Dec 2004 Posts: 2218 Location: Москва, Россия
|
(Separately) Posted: Thu Jul 14, 2005 18:46 Post subject: |
|
|
А в принципе, можно вообще обойтись одной строчкой
Code: | WScript.CreateObject("WScript.Shell").SendKeys "{F7}" & Date & "{Enter}" |
|
|
Back to top |
|
|
Volniy
Joined: 15 Dec 2004 Posts: 585 Location: Местный
|
(Separately) Posted: Thu Jul 14, 2005 18:47 Post subject: |
|
|
Batya wrote: | Также убрал проверку на наличие каталога - не знаю, как на FTP проверять. |
Можно с помощью Helper-а:
Code: | Set TCS = CreateObject("TCSCRIPT.Helper")
NewFold = Date
TCS.SendCommand "cm_SelectAll"
All= TCS.GetSrcSelectedFiles
For Each a In ALL
If StrComp(a, NewFold & "\",1)=0 Then
MsgBox "Папка" & chr(13) & NewFold & chr(13) & "уже существует", vbExclamation, "Внимание!"
Wscript.Quit
End If
Next
TCS.SendCommand "cm_MkDir",False
TCS.SendKeystroke CStr(NewFold)
TCS.SendKeystroke "{ENTER}"
Set TCS=Nothing
Wscript.Quit
|
|
|
Back to top |
|
|
Toni
Joined: 13 Jul 2005 Posts: 26
|
(Separately) Posted: Fri Jul 15, 2005 16:20 Post subject: |
|
|
Спасибо всем (в очередной раз!!) за участие. Теперь все заработало!!! Ну, или, почти все:
Batya
Твои оба (и короткий и длинный варианты) - работают!
Volniy
А, вот, твой вариант выдает ошибку:
Строка: 7
Символ: 39
Ошибка: Предполагается наличие окончания инструкции
Код: 800А0401
Но, тем не менее, еще раз - ВСЕМ, ВСЕМ, ВСЕМ! ОГРОМНЫЙ СЭНКС!!! |
|
Back to top |
|
|
Volniy
Joined: 15 Dec 2004 Posts: 585 Location: Местный
|
(Separately) Posted: Fri Jul 15, 2005 19:08 Post subject: |
|
|
Toni wrote: |
Volniy
А, вот, твой вариант выдает ошибку:
Строка: 7
Символ: 39
|
Скрипт 100% рабочий (даже на FTP сервере проверялся). Извини, но ты, видимо перенес его текст кривовато. Это бывает. А строку эту 7-ую можешь просто убрать. |
|
Back to top |
|
|
LocKtaR-o-DarK
Joined: 12 Aug 2005 Posts: 349 Location: Москва
|
(Separately) Posted: Sat Aug 13, 2005 23:33 Post subject: |
|
|
Господа это можно сделать и без скриптов.
И довольно просто.
Для этого создаем новую кнопку
В строке "Команда" пишем
В строке "Параметры" пишем
Code: | for /f "tokens=1,2,3,4 delims=. " %%a in ('date /t') do md "%%d%%c-%%b-%%a" |
Значок на свое усмотрение, конечно же.
Формат отображения тоже.
Удачи. |
|
Back to top |
|
|
|