|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - [решено] Контекстное меню -> Новый текстовый документ. |
|
|
VBS/WSH/JS - [решено] Контекстное меню -> Новый текстовый документ.
|
Пользователь Сообщения: 60 |
Профиль | Отправить PM | Цитировать Здравствуйте. Вот здесь набросок твика реестра для добавления пункта в контекстное меню "Новый 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 |
|