Компьютерный форум 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=339523)

madars1 04-03-2019 23:06 2861354

создать папку с текстовым файлом внутри
 
Здравствуйте! Нужен скрипт, который создает папку, названную текстом из буфера обмена, а внутри этой
папки создается текстовый файл с именем из буфера, либо с любым именем.
при запуске скрипта желательно что бы само зашло в только что созданную папку и открылся только что созданный текстовый файл.
А еще скромное пожелание: :) можно что бы в этот текстовый файл вставился полный путь в свежесозданную папку или же этот путь скопировался в буфер обмена?


-------------------
пример: копирую имя машины с браузера, запускаю скрипт - создается папка с именем машины(для примера лада), мне в буфер обмена вставляется полный путь в папку с именем лада,

* это примерно этот скрипт?
http://forum.oszone.net/thread-338632.html

Iska 04-03-2019 23:16 2861355

Цитата:

Цитата madars1
* это примерно этот скрипт? »

Именно что «примерно».

Цитата:

Цитата madars1
запускаю скрипт »

Как именно «запускаю»?

Цитата:

Цитата madars1
создается папка с именем машины(для примера лада) »

Где будет создаваться каталог с именем машины (учитывая то, что полного пути в буфере обмена нет)?

madars1 05-03-2019 00:03 2861370

есть каталог "коллекция" (путь: f:\модели\машины\коллекция\ )
скрипт name.vbs будет лежать в каталоге коллекция (запускать буду в окне total commander )
каталог будет создаваться в папке коллекция ( f:\модели\машины\коллекция\)

Iska 05-03-2019 00:30 2861372

madars1, ага, теперь ясно — заранее известный каталог, это другое дело.

Особого смысла в:
Цитата:

Цитата madars1
что бы в этот текстовый файл вставился полный путь в свежесозданную папку »

я не вижу, но как скажете:
Скрытый текст
"C:\Мои проекты\0248\0003.vbs"
Код:

Option Explicit

Const strParentPath = "C:\Мои проекты\0248"
'Const strParentPath = "F:\модели\машины\коллекция"

Dim strClipboardContent

Dim strSourceFolder
Dim objFolder

Dim strSourceFile


With WScript.CreateObject("Scripting.FileSystemObject")
        If .FolderExists(strParentPath) Then
                strClipboardContent = Trim(WScript.CreateObject("htmlfile").parentWindow.clipboardData.getData("text"))
                strSourceFolder = .BuildPath(strParentPath, strClipboardContent)
               
                If Not .FolderExists(strSourceFolder) Then
                        Set objFolder = .CreateFolder(strSourceFolder)
                Else
                        Set objFolder = .GetFolder(strSourceFolder)
                End If
               
                strSourceFile = .BuildPath(objFolder.Path, strClipboardContent & ".txt")
               
                If Not .FileExists(strSourceFile) Then
                        With .CreateTextFile(strSourceFile)
                                .WriteLine objFolder.Path
                                .Close
                        End With
                End If
               
                With WScript.CreateObject("Shell.Application")
                        .Explore objFolder.Path
                        .NameSpace(objFolder.Path).Items.Item(strClipboardContent & ".txt").InvokeVerb("Open")
                        WScript.Sleep 1000
                End With
               
                Set objFolder = Nothing
        Else
                WScript.Echo "Can't find source path [" & strParentPath & "]."
                WScript.Quit 1
        End If
End With

WScript.Quit 0


Замените мои пути своими.

madars1 05-03-2019 10:07 2861434

Вложений: 1
Выдает ошибку (сделал на всякий случай тестовый каталог как у вас)

Как я делал:
1. total commander \ меню тотала командера \ настройка меню "'запуск" \ там указал директорию к скрипту

тело скрипта

Код:

Option Explicit

Const strParentPath = "c:\Мои проекты\0248\"
'Const strParentPath = "F:\\\"

Dim strClipboardContent

Dim strSourceFolder
Dim objFolder

Dim strSourceFile


With WScript.CreateObject("Scripting.FileSystemObject")
        If .FolderExists(strParentPath) Then
                strClipboardContent = Trim(WScript.CreateObject("htmlfile").parentWindow.clipboardData.getData("text"))
                strSourceFolder = .BuildPath(strParentPath, strClipboardContent)
               
                If Not .FolderExists(strSourceFolder) Then
                        Set objFolder = .CreateFolder(strSourceFolder)
                Else
                        Set objFolder = .GetFolder(strSourceFolder)
                End If
               
                strSourceFile = .BuildPath(objFolder.Path, strClipboardContent & ".txt")
               
                If Not .FileExists(strSourceFile) Then
                        With .CreateTextFile(strSourceFile)
                                .WriteLine objFolder.Path
                                .Close
                        End With
                End If
               
                With WScript.CreateObject("Shell.Application")
                        .Explore objFolder.Path
                        .NameSpace(objFolder.Path).Items.Item(strClipboardContent & ".txt").InvokeVerb("Open")
                        WScript.Sleep 1000
                End With
               
                Set objFolder = Nothing
        Else
                WScript.Echo "Can't find source path [" & strParentPath & "]."
                WScript.Quit 1
        End If
End With

WScript.Quit 0





Выдает ошибку:


Iska 05-03-2019 14:45 2861516

Давайте попробуем вывести путь нашего каталога:
Цитата:

Код:

                strSourceFolder = .BuildPath(strParentPath, strClipboardContent)
               
                WScript.Echo "[" & strSourceFolder & "]"
               
                If Not .FolderExists(strSourceFolder) Then



madars1 05-03-2019 15:51 2861533

Цитата:

Цитата Iska
Давайте попробуем вывести путь нашего каталога: »

Извините пожалуйста, а куда вышеприведенный код вставлять?

Iska 06-03-2019 00:11 2861621

madars1, выделенное вставить между двумя невыделенными инструкциями.

madars1 06-03-2019 09:14 2861653

что у меня получилось

Код:

Option Explicit

Const strParentPath = "c:\Мои проекты\0248\"

Dim strClipboardContent

Dim strSourceFolder
Dim objFolder

Dim strSourceFile


With WScript.CreateObject("Scripting.FileSystemObject")
        If .FolderExists(strParentPath) Then
                strClipboardContent = Trim(WScript.CreateObject("htmlfile").parentWindow.clipboardData.getData("text"))
                strSourceFolder = .BuildPath(strParentPath, strClipboardContent)
               
                WScript.Echo "[" & strSourceFolder & "]"
               
                If Not .FolderExists(strSourceFolder) Then
                        Set objFolder = .CreateFolder(strSourceFolder)
                Else
                        Set objFolder = .GetFolder(strSourceFolder)
                End If
               
                strSourceFile = .BuildPath(objFolder.Path, strClipboardContent & ".txt")
               
                If Not .FileExists(strSourceFile) Then
                        With .CreateTextFile(strSourceFile)
                                .WriteLine objFolder.Path
                                .Close
                        End With
                End If
               
                With WScript.CreateObject("Shell.Application")
                        .Explore objFolder.Path
                        .NameSpace(objFolder.Path).Items.Item(strClipboardContent & ".txt").InvokeVerb("Open")
                        WScript.Sleep 1000
                End With
               
                Set objFolder = Nothing
        Else
                WScript.Echo "Can't find source path [" & strParentPath & "]."
                WScript.Quit 1
        End If
End With

WScript.Quit 0



1. теперь после запуска скрипта выскакивает сначала это:



2. а затем вот это:


mwz 06-03-2019 14:51 2861725

madars1

"— Пролетаем Баден-Баден.
— Ну чо мы, лохи что ли? Зачем два раза-то повторять??"

Обратите внимание на свой первый скриншот.

madars1 06-03-2019 16:32 2861741

спасибо большое! все работает!
а если я захочу, можно сделать - что бы в папку заходило не в проводнике, а в самом total commander'e ?

Это я просто спросить :)

mwz 06-03-2019 16:49 2861742

Цитата:

Цитата madars1
что[]бы в папку заходило не в проводнике, а в самом total commander'e ? »

cd \\<computerName>\Users\<и далее>

Если прав доступа хватит.

PS
Или вас интересует скрипт, который в окне TotalCmd отрабатывает?

madars1 06-03-2019 16:58 2861744

Код:

cd \\<computerName>\Users\<и далее>
Это вставлять куда?

Скрипт работает супер! При копировании пути в папку выдает путь без слеша, вот так:

c:\Мои проекты\0248

А можно сделать что бы было вот так?:

c:\Мои проекты\0248\

mwz 06-03-2019 17:26 2861749

Цитата:

Цитата madars1
Это вставлять куда? »

В командную строку, в нижней части TotalCmd.

Iska 06-03-2019 18:14 2861763

Цитата:

Цитата madars1
а если я захочу, можно сделать - что бы в папку заходило не в проводнике, а в самом total commander'e ? »

Насколько я знаю — нет, это Вам не Far Manager.

mwz 06-03-2019 19:15 2861772

Iska, согласен: отработка в окне TotalCmd не получится.

PS
Но вот вызвать его из скрипта, задающего пути к панелям — можно.

Iska 06-03-2019 21:53 2861793

mwz, скрипт исполняется уже из-под TC. И нам нужно обратное — каким-то образом передать результат исполнения TC вобрат.

mwz 06-03-2019 22:25 2861797

Цитата:

Цитата Iska
каким-то образом передать результат исполнения TC вобрат »

Только во вторую копию ежели.

Iska 06-03-2019 22:26 2861798

Вот, например, как бы это могло выглядеть для Far Manager'а:
Скрытый текст
Код:

Macro {
        description = "Create subfolder and text file in predefined folder";
        flags      = "";
        key        = "CtrlAltL";
        area        = "Shell";
        condition  = function()
                return true
        end;

        action = function()
                local iErrorMsgFlags = 0x00010000 + 0x00000001
                local sParentPath = "C:\\Мои проекты\\0248"

                if(mf.testfolder(sParentPath) > 0) then
                        local sClipboard = mf.trim(mf.clip(0))
                        local sFolder    = sParentPath .. "\\" .. sClipboard
                        local sSourceFile = sFolder .. "\\" .. sClipboard .. ".txt"

                        if(mf.testfolder(sFolder) == 0) then
                                win.CreateDir(sFolder)
                        end

                        Panel.SetPath(0, sFolder)

                        Keys("ShiftF4 CtrlY")
                        print(sSourceFile)
                        Keys("CtrlEnter")
                        print(sFolder)
                        Keys("Enter F2 CtrlF10")
                else
                        mf.msgbox("Can't find predefined folder", "\nCan't find predefined folder\n\n\1\n[" .. sParentPath .. "]\n\1\n\n", iErrorMsgFlags)
                end
        end;
}


— и всё внутри него: и исполнение, и переход, и редактор.


Время: 23:18.

Время: 23:18.
© OSzone.net 2001-