Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - Создание Нового текстового документа через контекстное меню пкп

Ответить
Настройки темы
Любой язык - Создание Нового текстового документа через контекстное меню пкп

Новый участник


Сообщения: 19
Благодарности: 1

Профиль | Отправить PM | Цитировать


Изменения
Автор: Александр Котов
Дата: 16-05-2013
Цель: В 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

Это было ближе, но не то, что хотелось бы в итоге получить.

Отправлено: 11:33, 16-05-2013

 

Пользователь


Сообщения: 78
Благодарности: 23

Профиль | Отправить PM | Цитировать


Так? Хотя на форуме есть подобные темы...
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\""

Отправлено: 23:06, 21-05-2013 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 19
Благодарности: 1

Профиль | Отправить PM | Цитировать


Не так. Нужно как это делается в Windows по-умолчанию один в один, только не из подменю команды "Создать", а сразу через контекстное меню пкм.

Отправлено: 10:10, 22-05-2013 | #3


Пользователь


Сообщения: 78
Благодарности: 23

Профиль | Отправить PM | Цитировать


Вы добавляли в реестр данные? Там как раз для правой кнопки мыши... А по поводу
Цитата Александр Котов:
Нужно как это делается в Windows по-умолчанию один в один »
то уже можно в скрипте «допилить», как надо.

Отправлено: 21:52, 22-05-2013 | #4


Новый участник


Сообщения: 19
Благодарности: 1

Профиль | Отправить PM | Цитировать


Если бы знал, как допилить, не обращался бы к специалистам.
А предложеный вами скрипт создаёт файл аж в корневой папке диска. Тогда уж на крайняк лучше так:

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, цель не достигнута.

Отправлено: 00:14, 23-05-2013 | #5


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Александр Котов, Вам давно пора ознакомиться с тегами форума и, в особенности — с тэгом [code].
Это сообщение посчитали полезным следующие участники:

Отправлено: 00:20, 23-05-2013 | #6


Пользователь


Сообщения: 78
Благодарности: 23

Профиль | Отправить PM | Цитировать


Все там работает, как надо. Проверьте пути, где лежит файл. Надо обязательно в папке Windows.

Отправлено: 06:53, 23-05-2013 | #7


Новый участник


Сообщения: 19
Благодарности: 1

Профиль | Отправить PM | Цитировать


OSArev, может там все и работает, но ищется решение конкретной задачи, без похожих вариантов.

Отправлено: 09:52, 23-05-2013 | #8


Пользователь


Сообщения: 78
Благодарности: 23

Профиль | Отправить PM | Цитировать


Цитата Александр Котов:
но ищется решение конкретной задачи, без похожих вариантов. »
Вы бы показали свои искания, людям было бы интересно...
Вот пока без выделения
Код: Выделить весь код
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

Отправлено: 00:06, 24-05-2013 | #9


Новый участник


Сообщения: 19
Благодарности: 1

Профиль | Отправить PM | Цитировать


OSArev, свои изыскания привёл выше (#5). Это всё, что есть.

Отправлено: 09:43, 25-05-2013 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - Создание Нового текстового документа через контекстное меню пкп

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Интерфейс - [решено] Как сделать удаление файлов через контекстное меню без сохранения в карзине lexx3d Microsoft Windows 7 8 01-07-2012 09:07
2010 - [решено] Word | Печать обычного текстового документа в виде книги Ghost Microsoft Office (Word, Excel, Outlook и т.д.) 5 28-12-2010 10:09
Как сделать отправку файлов по email через контекстное меню? MzM NF Программное обеспечение Windows 0 19-09-2007 00:50
Отправка файла по почте через контекстное меню vagner_HATE Microsoft Windows 2000/XP 3 27-12-2005 16:02
создание нового документа MS Word Nodir Bek Microsoft Windows 95/98/Me (архив) 2 13-02-2004 10:45




 
Переход