Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Создание Нового текстового документа через контекстное меню пкп (http://forum.oszone.net/showthread.php?t=260656)

Александр Котов 16-05-2013 11:33 2150914

Создание Нового текстового документа через контекстное меню пкп
 
Цель: В 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

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

OSArev 21-05-2013 23:06 2153776

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

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

OSArev 22-05-2013 21:52 2154276

Вы добавляли в реестр данные? Там как раз для правой кнопки мыши... А по поводу
Цитата:

Цитата Александр Котов
Нужно как это делается в Windows по-умолчанию один в один »

то уже можно в скрипте «допилить», как надо.

Александр Котов 23-05-2013 00:14 2154384

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

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

Iska 23-05-2013 00:20 2154392

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

OSArev 23-05-2013 06:53 2154496

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

Александр Котов 23-05-2013 09:52 2154543

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

OSArev 24-05-2013 00:06 2155159

Цитата:

Цитата Александр Котов
но ищется решение конкретной задачи, без похожих вариантов. »

Вы бы показали свои искания, людям было бы интересно... :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 2155916

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

OSArev 25-05-2013 15:07 2156049

Понял, Вас. А без выделения имени файла для переименования ни как? Как в выше изложеном скрипте?
Посмотрю, может как-то можно будет через реестр извратиться...

Александр Котов 26-05-2013 10:57 2156446

OSArev, без выделения имени файла для переименования никак. Ищу именно это для образца, чтобы по этому шаблону проделать то же для файлов с другими расширениями.

OSArev 26-05-2013 18:49 2156677

Угу, понятно... Просьба, если найдёте, что-нибудь поделитесь, пожалуйста. Самому стало интересно.

denis19 18-08-2024 18:36 3030038

Цитата:

Цитата OSArev
sFile = inputbox("Создание текстового документа." & vbCrLf & _ »

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


Время: 00:20.

Время: 00:20.
© OSzone.net 2001-