Войти

Показать полную графическую версию : [решено] создать папку с текстовым файлом внутри


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


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

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

Iska
04-03-2019, 23:16
* это примерно этот скрипт? »
Именно что «примерно».

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

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

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

Iska
05-03-2019, 00:30
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

https://i.imgur.com/i0WrwQ5.png
Замените мои пути своими.

madars1
05-03-2019, 10:07
Выдает ошибку (сделал на всякий случай тестовый каталог как у вас)

Как я делал:
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



https://i109.fastpic.ru/big/2019/0305/cb/8bc8e030289ff5684aa03919243112cb.jpg (https://fastpic.ru/)

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

https://i109.fastpic.ru/big/2019/0305/a6/6f6eab25e3fd5a001d020d23400aa7a6.jpg (https://fastpic.ru/)

Iska
05-03-2019, 14:45
Давайте попробуем вывести путь нашего каталога:
strSourceFolder = .BuildPath(strParentPath, strClipboardContent)

WScript.Echo "[" & strSourceFolder & "]"

If Not .FolderExists(strSourceFolder) Then

madars1
05-03-2019, 15:51
Давайте попробуем вывести путь нашего каталога: »
Извините пожалуйста, а куда вышеприведенный код вставлять?

Iska
06-03-2019, 00:11
madars1, выделенное вставить между двумя невыделенными инструкциями.

madars1
06-03-2019, 09:14
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. теперь после запуска скрипта выскакивает сначала это:

https://i110.fastpic.ru/big/2019/0306/0e/2c54450123857af4d470b91d17318d0e.jpg (https://fastpic.ru/)

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

https://i110.fastpic.ru/big/2019/0306/1d/67cbe286fe1b36ae713e9b02f57d901d.jpg (https://fastpic.ru/)

mwz
06-03-2019, 14:51
madars1

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

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

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

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

mwz
06-03-2019, 16:49
что[]бы в папку заходило не в проводнике, а в самом total commander'e ? »

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

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

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

madars1
06-03-2019, 16:58
cd \\<computerName>\Users\<и далее>


Это вставлять куда?

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

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

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

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

mwz
06-03-2019, 17:26
Это вставлять куда? »

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

Iska
06-03-2019, 18:14
а если я захочу, можно сделать - что бы в папку заходило не в проводнике, а в самом total commander'e ? »
Насколько я знаю — нет, это Вам не Far Manager.

mwz
06-03-2019, 19:15
Iska, согласен: отработка в окне TotalCmd не получится.

PS
Но вот вызвать его из скрипта, задающего пути к панелям — можно (https://yandex.ru/search/?clid=2186621&text=передача параметров TotalCmd).

Iska
06-03-2019, 21:53
mwz, скрипт исполняется уже из-под TC. И нам нужно обратное — каким-то образом передать результат исполнения TC вобрат.

mwz
06-03-2019, 22:25
каким-то образом передать результат исполнения TC вобрат »

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

Iska
06-03-2019, 22:26
Вот, например, как бы это могло выглядеть для 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;
}

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




© OSzone.net 2001-2012