|
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
| Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - [решено] Контекстное меню -> Новый текстовый документ. |
|
||||
|
|
VBS/WSH/JS - [решено] Контекстное меню -> Новый текстовый документ.
|
|
Пользователь Сообщения: 60 |
Здравствуйте. Вот здесь набросок твика реестра для добавления пункта в контекстное меню "Новый txt" можно сделать его без окон командной строки, добавить открытие в блокноте (или асоциированном для txt приложении) и запрос на действие если файл с таким именем уже существует? Спасибо.
|
|
|
Отправлено: 00:44, 30-10-2011 |
|
Пользователь Сообщения: 78
|
Профиль | Отправить PM | Цитировать Ты этого хочеш?
Call CreateFile
Function CreateFile
Set FSO = CreateObject("Scripting.FileSystemObject")
Set WshShell = CreateObject("WScript.Shell")
sFile = inputbox("Введите название:","Создание текстового документа.",,000,000)
If Len(sFile) = 0 Then
sFile = WScript.Quit
End If
Set objRegExp = new regexp
objRegExp.Pattern = "[\*\\\/\?\<\>\:\""\|]"
If objRegExp.Test(sFile) Then
R = MsgBox("ОШИБКА!!! " & vbCrLf & _
"Введены недопустимые символы в имени файла." & vbCrLf & _
"Попробуйте снова", 64+5 , "Создание текстового документа.")
Select Case R
Case vbRetry
Call CreateFile
Case vbCancel
WScript.Quit
End Select
Else
'Путь для создания
'Определяем,где находимся(только для контекстного меню)
If WScript.Arguments.Count = 1 Then
PathName = WScript.Arguments.Item(0)
End if
'Создание
If FSO.FileExists(PathName & "\" & sFile & ".txt") Then
B=WshShell.Popup("Документ "&Chr(34)& PathName & "\" & sFile & ".txt"&Chr(34)&" - уже существует."& vbCrLf & _
"Выберие,рекомендуемое действие!"& vbCrLf & vbCrLf & _
"Отмена - выход из программы."& vbCrLf & _
"Повторить - вернуться к выбору имени."& vbCrLf & _
"Продолжить - продолжение программы.", 33,"Создание текстового документа.", 512 + 6 + 64)
Select Case B
Case -1
WshShell.Popup "Время ожидания истекло."& vbCrLf & _
"Нажмите ОK для выхода из программы." ,,"Создание текстового документа.",64
Case 2
Wscript.Quit
Case 10
Call CreateFile
Case 11
N=WshShell.Popup("Хотите ли Вы перезаписать существующий файл?"& vbCrLf & vbCrLf & _
"ДА - перезапись существующего файла."& vbCrLf & _
"Нет - переименование старого и создание нового файлов."& vbCrLf & _
"Отмена - выход из программы.", 33,"Создание текстового документа.", 256 + 3 + 64)
Select Case N
Case -1
WshShell.Popup "Время ожидания истекло."& vbCrLf & _
"Нажмите ОK для выхода из программы." ,,"Создание текстового документа.",64
Case 6
FSO.DeleteFile PathName & "\" & sFile & ".txt"
fso.CreateTextFile(PathName & "\" & sFile & ".txt")
WshShell.Run("%windir%\notepad " & PathName & "\" & sFile & ".txt")
Case 7
Ren=Right("0" & Minute(Now), 2) & Right("0" & Second(Now), 2)
InFile =PathName & "\" & sFile & ".txt"
OutFile=PathName & "\" & sFile & "_" & Ren & ".txt"
FSO.MoveFile InFile, OutFile
fso.CreateTextFile(PathName & "\" & sFile & ".txt")
WshShell.Run("%windir%\notepad " & PathName & "\" & sFile & ".txt")
Case 2
Wscript.Quit
End Select
End Select
Else
fso.CreateTextFile(PathName & "\" & sFile & ".txt")
WshShell.Run("%windir%\notepad " & PathName & "\" & sFile & ".txt")
End if
End if
End Function
|
|
Последний раз редактировалось OSArev, 30-10-2011 в 10:34. Отправлено: 02:50, 30-10-2011 | #2 |
|
Пользователь Сообщения: 60
|
Профиль | Отправить PM | Цитировать Не совсем. Можно чтобы файл создавался с определенным именем (Readme, например) И было только второе окно про перезапись,
Цитата OSArev:
|
|
|
Последний раз редактировалось Sta1917, 30-10-2011 в 14:14. Отправлено: 13:42, 30-10-2011 | #3 |
|
Пользователь Сообщения: 78
|
Профиль | Отправить PM | Цитировать Цитата Sta1917:
Call CreateFile
Function CreateFile
Set FSO = CreateObject("Scripting.FileSystemObject")
Set WshShell = CreateObject("WScript.Shell")
sFile = "Readme"
If WScript.Arguments.Count = 1 Then
PathName = WScript.Arguments.Item(0)
End if
If FSO.FileExists(PathName & "\" & sFile & ".txt") Then
N=WshShell.Popup("Документ "&Chr(34)& PathName & "\" & sFile & ".txt"&Chr(34)&" - уже существует."& vbCrLf & _
"Хотите ли Вы перезаписать существующий файл?"& vbCrLf & vbCrLf & _
"ДА - перезапись существующего файла."& vbCrLf & _
"Нет - к имени нового файла будет добавлено числовле значение."& vbCrLf & _
"Отмена - выход из программы.", 33,"Создание текстового документа.", 256 + 3 + 64)
Select Case N
Case -1
WshShell.Popup "Время ожидания истекло."& vbCrLf & _
"Нажмите ОK для выхода из программы." ,,"Создание текстового документа.",64
Case 6
FSO.DeleteFile PathName & "\" & sFile & ".txt"
fso.CreateTextFile(PathName & "\" & sFile & ".txt")
WshShell.Run("%windir%\notepad " & PathName & "\" & sFile & ".txt")
Case 7
Ren=Right("0" & Minute(Now), 2) & Right("0" & Second(Now), 2)
fso.CreateTextFile(PathName & "\" & sFile & "_" & Ren & ".txt")
WshShell.Run("%windir%\notepad " & PathName & "\" & sFile & "_" & Ren & ".txt")
Case 2
Wscript.Quit
End Select
Else
fso.CreateTextFile(PathName & "\" & sFile & ".txt")
WshShell.Run("%windir%\notepad " & PathName & "\" & sFile & ".txt")
End if
End Function
|
|
|
Отправлено: 11:41, 31-10-2011 | #4 |
|
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата OSArev:
|
||
|
Отправлено: 15:31, 31-10-2011 | #5 |
|
Пользователь Сообщения: 78
|
Профиль | Отправить PM | Цитировать Доброго времени...
Iska, нашёл скрипт SendMessagehttp://forum.oszone.net/post-1718295-2.html, через текстовый документ. Убрав проверку даты получил: Call CreateFile
Function CreateFile
Set FSO = CreateObject("Scripting.FileSystemObject")
Set WshShell = CreateObject("WScript.Shell")
sFile = "Readme"
If WScript.Arguments.Count = 1 Then
PathName = WScript.Arguments.Item(0)
End if
If FSO.FileExists(PathName & "\" & sFile & ".txt") Then
N=WshShell.Popup("Документ "&Chr(34)& PathName & "\" & sFile & ".txt"&Chr(34)&" - уже существует."& vbCrLf & _
"Хотите ли Вы перезаписать существующий файл?"& vbCrLf & vbCrLf & _
"ДА - перезапись существующего файла."& vbCrLf & _
"Нет - к имени нового файла будет добавлено числовле значение."& vbCrLf & _
"Отмена - выход из программы.", 33,"Создание текстового документа.", 256 + 3 + 64)
Select Case N
Case -1
WshShell.Popup "Время ожидания истекло."& vbCrLf & _
"Нажмите ОK для выхода из программы." ,,"Создание текстового документа.",64
Case 6
FSO.DeleteFile PathName & "\" & sFile & ".txt"
fso.CreateTextFile(PathName & "\" & sFile & ".txt")
WshShell.Run("%windir%\notepad " & PathName & "\" & sFile & ".txt")
Case 7
CheckFile = "d:\check.txt"
Newfile = PathName & "\" & sFile & "_" & SetNumberFile(CheckFile) & ".txt"
fso.CreateTextFile(Newfile)
WshShell.Run("%windir%\notepad " & Newfile)
Case 2
Wscript.Quit
End Select
Else
fso.CreateTextFile(PathName & "\" & sFile & ".txt")
WshShell.Run("%windir%\notepad " & PathName & "\" & sFile & ".txt")
End if
End Function
Function SetNumberFile(f)
Dim arrCheck
Dim CountArchk
Dim objFSO
Set objFSO = CreateObject("Scripting.FileSystemObject")
If objFSO.FileExists(f) Then
arrCheck = Split(objFSO.OpenTextFile(f).ReadLine, "#", 2)
CountArch = arrCheck(1) + 1
End If
If Not objFSO.FileExists(f) Then CountArch = 1
objFSO.OpenTextFile(f, 2, True).Write "#" & CountArch
SetNumberArchive = CountArch
End Function
Цитата Iska:
|
|
|
Отправлено: 20:22, 31-10-2011 | #6 |
|
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата OSArev:
Шучу. Прототип кода может выглядеть примерно так: Option Explicit
Dim strPath
Dim i
Dim strName
strPath = "c:\Temp"
With WScript.CreateObject("Scripting.FileSystemObject")
i = 0
Do
i = i + 1
If i = 1 Then ' По аналогии с Windows
strName = "Текстовый документ.txt"
Else
strName = "Текстовый документ" & " (" & CStr(i) & ").txt"
End If
If Not .FileExists(.BuildPath(strPath, strName)) Then
WScript.Echo strName
' Здесь создаём текстовый файл с именем «strName»
Exit Do
End If
Loop
End With
WScript.Quit 0
Option Explicit
WScript.Echo GetNextName("c:\Temp", "Текстовый документ.txt")
' Здесь создаём текстовый файл с возвращённым функцией именем
WScript.Quit 0
Function GetNextName(strPath, strTemplateName)
Dim i
Dim strName
Dim strBaseName
Dim strExtension
With WScript.CreateObject("Scripting.FileSystemObject")
If .FolderExists(strPath) Then
strBaseName = .GetBaseName(strTemplateName)
strExtension = .GetExtensionName(strTemplateName)
i = 0
Do
i = i + 1
If i = 1 Then
strName = .BuildPath(strPath, strBaseName & "." & strExtension)
Else
strName = .BuildPath(strPath, strBaseName & " (" & CStr(i) & ")." & strExtension)
End If
If Not .FileExists(strName) Then
Exit Do
End If
Loop
Else
WScript.Echo "Folder [" & strPath & "] not found"
Err.Raise 76
End If
End With
GetNextName = strName
End Function
|
|
|
Последний раз редактировалось Iska, 01-11-2011 в 02:10. Причина: Добавлена функция Отправлено: 01:56, 01-11-2011 | #7 |
|
Пользователь Сообщения: 78
|
Профиль | Отправить PM | Цитировать Iska Спасибо огромное!!! Обалдеть!!! "А, ларчик просто открывался..." Я вчера в такие дебри залез, ух...
Спасибо еще раз! |
|
Отправлено: 13:09, 01-11-2011 | #8 |
|
Пользователь Сообщения: 60
|
Профиль | Отправить PM | Цитировать Цитата OSArev:
|
|
|
Отправлено: 23:16, 08-11-2011 | #9 |
|
Пользователь Сообщения: 78
|
Профиль | Отправить PM | Цитировать Цитата Sta1917:
Option Explicit
Call CreateFile
WScript.Quit 0
Function CreateFile
Dim FSO, WshShell, sFile, PathName, i, strName, N
Set FSO = CreateObject("Scripting.FileSystemObject")
Set WshShell = CreateObject("WScript.Shell")
sFile = "Readme"
'Определяем,где находимся(только для контекстного меню)
If WScript.Arguments.Count = 1 Then
PathName = WScript.Arguments.Item(0)
End if
'Создание
If FSO.FileExists(PathName & "\" & sFile & ".txt") Then
N=WshShell.Popup("Документ "&Chr(34)& PathName & "\" & sFile & ".txt"&Chr(34)&" - уже существует."& vbCrLf & _
"Хотите ли Вы перезаписать существующий файл?"& vbCrLf & vbCrLf & _
"ДА - перезапись существующего файла."& vbCrLf & _
"Нет - к имени нового файла будет добавлен последующий порядковый номер."& vbCrLf & _
"Отмена - выход из программы.", 33,"Создание текстового документа.", 256 + 3 + 64)
Select Case N
Case -1
WshShell.Popup "Время ожидания истекло."& vbCrLf & _
"Нажмите ОK для выхода из программы." ,,"Создание текстового документа.",64
Case 6
'Для кн."ДА"
FSO.DeleteFile PathName & "\" & sFile & ".txt"
fso.CreateTextFile(PathName & "\" & sFile & ".txt")
WshShell.Run("%windir%\notepad " & PathName & "\" & sFile & ".txt")
Case 7
'Для кн."НЕТ"
With FSO
i = 0
Do
i = i + 1
If i <> 0 Then strName = sFile & " _" & CStr(i) & ".txt"
If Not .FileExists(.BuildPath(PathName, strName)) Then
fso.CreateTextFile(PathName & "\" & strName)
Exit Do
End If
Loop
End With
WshShell.Run("%windir%\notepad " & PathName & "\" & strName)
Case 2
Wscript.Quit
End Select
Else
'Если ещё нет файла с ук.названием
fso.CreateTextFile(PathName & "\" & sFile & ".txt")
WshShell.Run("%windir%\notepad " & PathName & "\" & sFile & ".txt")
End if
End Function
|
|
|
Отправлено: 01:56, 09-11-2011 | #10 |
|
|
|
Участник сейчас на форуме |
|
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
| Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
| Разное - [решено] Возвращение в меню "Создать" пункта "Текстовый документ", ассоциирование с TXT | Pavla | Microsoft Windows 7 | 16 | 10-07-2012 07:47 | |
| Интерфейс - Из контекстного меню в пункте "Создать", пропала команда "Текстовый документ". | QUMATOZ | Microsoft Windows 2000/XP | 1 | 23-10-2011 18:07 | |
| Разное - [решено] Как задать свое название вместо "Новый текстовый документ" при создании | oldim | Microsoft Windows 7 | 3 | 25-09-2011 14:07 | |
| Разное - [решено] Не могу создать новый текстовый документ | Artesmann | Microsoft Windows Vista | 2 | 24-12-2008 19:24 | |
| Разное - в меню под правой кнопкой мыши исчезла опция создать текстовый документ | fnm | Microsoft Windows 2000/XP | 1 | 07-10-2008 15:15 | |
|