Страница 1 из 3
Автоматическое создание каталога с именем - текущая дата?
Добавлено: Ср июл 13, 2005 15:58
Toni
Приветствую. Есть такой вопрос: - мне часто приходиться создавать каталоги, именем которого должна быть просто текущая дата. Никто не подскажет, можно ли как-то этото процесс автоматизировать при помощи Тотала?

Добавлено: Ср июл 13, 2005 16:47
Batya
Создай файл *.vbs, повесь его на кнопку или в меню "Запуск" и в параметрах кнопки укажи %P.
Код: Выделить всё
'=====================================================================
' Создание папки с именем системной даты
' В параметрах вызова из 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
Добавлено: Ср июл 13, 2005 19:06
Toni
Только что выяснил, что скрипт не работает, если я пытаюсь создать каталог на FTP. Т.е. захожу на FTP Сервер и пытаюсь там создать каталог... - выдает ошибку:
Строка: 16
Символ: 3
Ошибка: Недопустимое имя или номер файла
Код: 800А0034
Источник: ошибка выполнения Microsoft VBScript
Вот, увы...
Если бы можно было это как-то исправить, буду весьма благода...!

Добавлено: Ср июл 13, 2005 19:14
Batya
Я с FTP никогда не работал. Для проверки вставь после 14-ой строки:
Хоть узнать, что скрипт вообще пытается создать.
Добавлено: Чт июл 14, 2005 10:49
Volniy
Batya писал(а):Я с FTP никогда не работал.
FSO предоставляет доступ к
файловой системе компьютера, тоесть к дискам, папкам, файлам. Доступ через FTP протокол - это уже совсем из другой оперы. Перепиши лучше скрипт через {F7}->имя новой папки->{ENTER}.
Добавлено: Чт июл 14, 2005 11:00
Toni
Batya
Вставил, не помогло!
Volniy
Спасибо за участие, только, не могли бы Вы по подробнее объяснить - что имеется ввиду? Т.е, что именно надо сделать? Как подставить скрипт к функции клавиши {F7}?
Добавлено: Чт июл 14, 2005 13:26
Batya
Volniy
Понял. Спасибо за совет.
Вот только как проверять существование папки? FSO.FolderExists тоже ведь не работает (я оставил на всякий случай

)?
Toni
Вставил, не помогло!
А и не должно было помочь. Просто должно было появиться дилоговое окно с названием создаваемой папки.
По совету Volniy изменил скрипт. Проверь на работоспособность.
Код: Выделить всё
'=====================================================================
' Создание папки с именем системной даты
' В параметрах вызова из 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
Добавлено: Чт июл 14, 2005 16:49
Toni
Batya
Еще раз спасибо огромное за участие в решение проблемы!
Новый скрипт отрабатывает на FTP, но, создает каталог с именем всего пути.
Вот такой, вот каталог у меня получился:
ftpU##логин"upload.als.ru#Toni#Privat#2005.07.14
Может быть можно это как-то исправить?
Добавлено: Чт июл 14, 2005 16:57
Toni
Batya
Сейчас еще проверил создание новым скриптом каталога локально (на винте, не на FTP), там - тоже самое, имя каталога содержит весь путь, НО! еще и ошибка выдается:
Строка: 13
Символ: 1
Ошибка: Индекс выходит за пределы допустимого диапазона
Код: 800А0009
Добавлено: Чт июл 14, 2005 17:35
Batya
Блин, ступил, когда скрипт правил, чтоб на FTP работал. Вот нормальный вариант (входные параметры уже не нужны):
Код: Выделить всё
'=======================================
' Создание папки с именем системной даты
'=======================================
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 проверять.
Добавлено: Чт июл 14, 2005 18:46
Batya
А в принципе, можно вообще обойтись одной строчкой
Код: Выделить всё
WScript.CreateObject("WScript.Shell").SendKeys "{F7}" & Date & "{Enter}"
Добавлено: Чт июл 14, 2005 18:47
Volniy
Batya писал(а):Также убрал проверку на наличие каталога - не знаю, как на FTP проверять.
Можно с помощью Helper-а:
Код: Выделить всё
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
Добавлено: Пт июл 15, 2005 16:20
Toni
Спасибо всем (в очередной раз!!) за участие. Теперь все заработало!!! Ну, или, почти все:
Batya
Твои оба (и короткий и длинный варианты) - работают!
Volniy
А, вот, твой вариант выдает ошибку:
Строка: 7
Символ: 39
Ошибка: Предполагается наличие окончания инструкции
Код: 800А0401
Но, тем не менее, еще раз - ВСЕМ, ВСЕМ, ВСЕМ! ОГРОМНЫЙ СЭНКС!!!
Добавлено: Пт июл 15, 2005 19:08
Volniy
Toni писал(а):
Volniy
А, вот, твой вариант выдает ошибку:
Строка: 7
Символ: 39
Скрипт 100% рабочий (даже на FTP сервере проверялся). Извини, но ты, видимо перенес его текст кривовато. Это бывает. А строку эту 7-ую можешь просто убрать.
Добавлено: Сб авг 13, 2005 23:33
LocKtaR-o-DarK
Господа это можно сделать и без скриптов.
И довольно просто.
Для этого создаем новую кнопку
В строке "Команда" пишем
В строке "Параметры" пишем
Код: Выделить всё
for /f "tokens=1,2,3,4 delims=. " %%a in ('date /t') do md "%%d%%c-%%b-%%a"
Значок на свое усмотрение, конечно же.
Формат отображения тоже.
Удачи.