Показать полную графическую версию : Создание Нового текстового документа через контекстное меню пкп
Александр Котов
16-05-2013, 11:33
Цель: В Windows 7 вынести создание Нового текстового документа из подменю команды Создать в основное контекстное меню пкм. Нужен тот же эффект, т.е. создаётся Новый текстовый документ с уже выделенным для переименования именем. Повторное создание документа получает название Новый текстовый документ (2) и т. д.
Пробовал прописывать в реестр:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\Directory\Background\shell\newtxtfile]
"MUIVerb"="Создать текстовый файл"
"Icon"="notepad.exe"
[HKEY_CLASSES_ROOT\Directory\Background\shell\newtxtfile\command]
@="cmd.exe /s /c pushd \"%V\" @echo >> Текст.txt"
или создавать батник с последующим закреплением в контекстном меню пкм:
chcp 1251
@echo off >> "Новый текстовый документ".txt
Это было ближе, но не то, что хотелось бы в итоге получить.
Так? Хотя на форуме есть подобные темы...
CreateObject.vbs
Option Explicit
Dim FSO, WshShell, objRegExp, sFile, PathName, i, strName, Ext, r
Set FSO = CreateObject("Scripting.FileSystemObject")
Set WshShell = CreateObject("WScript.Shell")
Set objRegExp = new regexp
Call CreateFile
WScript.Quit 0
Function CreateFile
Ext = ".txt"
sFile = inputbox("Создание текстового документа." & vbCrLf & _
"При совпадении имён к имени будут добалены" & vbCrLf & _
"приставка ""копия"" и порядковый номер." & vbCrLf & vbCrLf & _
"ВВЕДИТЕ НАЗВАНИЕ:", "Создание текстового документа.", "Новый текстовый документ",000,000)
If Len(sFile) = 0 Then
sFile = WScript.Quit
End If
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 not FSO.FileExists(PathName & "\" & sFile & Ext) Then
fso.CreateTextFile(PathName & "\" & sFile & Ext)
WshShell.Run("%windir%\notepad " & PathName & "\" & sFile & Ext)
Else
If not FSO.FileExists(PathName & "\" & sFile & " - копия" & Ext) Then
fso.CreateTextFile(PathName & "\" & sFile & " - копия" & Ext)
WshShell.Run("%windir%\notepad " & PathName & "\" & sFile & " - копия" & Ext)
Else
If FSO.FileExists(PathName & "\" & sFile & Ext) Then
With FSO
i = 0
Do
i = i + 1
If i <> 0 Then strName = sFile & " - копия (" & CStr(i) & ")" & Ext
If Not .FileExists(.BuildPath(PathName, strName)) Then
fso.CreateTextFile(PathName & "\" & strName)
WshShell.Run("%windir%\notepad " & PathName & "\" & strName)
Exit Do
End If
Loop
End With
End if
End If
End If
End If
End Function
И REG-файл для добавления в реестр:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\Directory\Background\shell\Новый текстовый документ]
"icon"="C:\\Windows\\ТВОЯ_ПАПКА\\ТВОЯ_ИКОНКА.ico"
[HKEY_CLASSES_ROOT\Directory\Background\shell\Новый текстовый документ\command]
@="WScript C:\\Windows\\ТВОЯ_ПАПКА\\CreateObject.vbs \"%V\""
Александр Котов
22-05-2013, 10:10
Не так. Нужно как это делается в Windows по-умолчанию один в один, только не из подменю команды "Создать", а сразу через контекстное меню пкм.
Вы добавляли в реестр данные? Там как раз для правой кнопки мыши... А по поводуНужно как это делается в Windows по-умолчанию один в один » то уже можно в скрипте «допилить», как надо.
Александр Котов
23-05-2013, 00:14
Если бы знал, как допилить, не обращался бы к специалистам.
А предложеный вами скрипт создаёт файл аж в корневой папке диска. Тогда уж на крайняк лучше так:
Dim FSO, MyFile
Set FSO = CreateObject("Scripting.FileSystemObject")
Set WshShell = WScript.CreateObject("WScript.Shell")
FileName=Inputbox("Введите имя нового текстового документа После нажатия кнопки ОК документ сохранится в ЗАКРЫТОМ виде","Создание текстового документа.")
'Для кнопки Отмена или для пустого поля ввода
If FileName=Empty Then
WScript.Quit
End If
'Проверка на существование файла и создание.
'Добавил открытие файла
If FSO.FileExists(FileName & ".txt") Then
WScript.Echo "Документ ''"& FileName & ".txt" & "'' - уже существует."
WScript.Quit 0
Else
fso.CreateTextFile(FileName & ".txt")
End If
или вот так:
Dim FSO, MyFile
Set FSO = CreateObject("Scripting.FileSystemObject")
Set WshShell = WScript.CreateObject("WScript.Shell")
FileName=Inputbox("Введите имя нового текстового документа После нажатия кнопки ОК документ сохранится в ОТКРЫТОМ виде для ввода текста","Создание текстового документа.")
'Для кнопки Отмена или для пустого поля ввода
If FileName=Empty Then
WScript.Quit
End If
'Проверка на существование файла и создание.
'Добавил открытие файла
If FSO.FileExists(FileName & ".txt") Then
WScript.Echo "Документ ''"& FileName & ".txt" & "'' - уже существует."
WshShell.Run("Explorer" &" " & FileName & ".txt")
WScript.Quit 0
Else
fso.CreateTextFile(FileName & ".txt")
End If
WshShell.Run("Explorer" &" " & FileName & ".txt")
но это всё не один в один как в Windows, цель не достигнута.
Александр Котов, Вам давно пора ознакомиться с тегами форума (http://forum.oszone.net/misc.php?do=bbcode) и, в особенности — с тэгом [code] (http://forum.oszone.net/misc.php?do=bbcode#code).
Все там работает, как надо. Проверьте пути, где лежит файл. Надо обязательно в папке Windows.
Александр Котов
23-05-2013, 09:52
OSArev, может там все и работает, но ищется решение конкретной задачи, без похожих вариантов.
но ищется решение конкретной задачи, без похожих вариантов. »
Вы бы показали свои искания, людям было бы интересно... :dont-know
Вот пока без выделения
Option Explicit
Dim FSO, sFile, PathName, i, strName, Ext
Set FSO = CreateObject("Scripting.FileSystemObject")
Call CreateFile
WScript.Quit 0
Function CreateFile
Ext = ".txt"
sFile = "Новый текстовый документ"
If WScript.Arguments.Count = 1 Then
PathName = WScript.Arguments.Item(0)
End if
If not FSO.FileExists(PathName & "\" & sFile & Ext) Then
fso.CreateTextFile(PathName & "\" & sFile & Ext)
Else
If FSO.FileExists(PathName & "\" & sFile & Ext) Then
With FSO
i = 0
Do
i = i + 1
If i <> 0 Then strName = sFile & " - копия (" & CStr(i) & ")" & Ext
If Not .FileExists(.BuildPath(PathName, strName)) Then
fso.CreateTextFile(PathName & "\" & strName)
Exit Do
End If
Loop
End With
End if
End If
End Function
Александр Котов
25-05-2013, 09:43
OSArev, свои изыскания привёл выше (#5). Это всё, что есть.
Понял, Вас. А без выделения имени файла для переименования ни как? Как в выше изложеном скрипте?
Посмотрю, может как-то можно будет через реестр извратиться...
Александр Котов
26-05-2013, 10:57
OSArev, без выделения имени файла для переименования никак. Ищу именно это для образца, чтобы по этому шаблону проделать то же для файлов с другими расширениями.
Угу, понятно... Просьба, если найдёте, что-нибудь поделитесь, пожалуйста. Самому стало интересно.
sFile = inputbox("Создание текстового документа." & vbCrLf & _ »
Скажите пожалуйста, а можно ли подправить так, чтоб документ создавался с содержимым из буфера обмена?
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.