Страница 1 из 2

Автоматизация размножения файла под разным именем

Добавлено: Вт ноя 14, 2017 16:02
Igor_Gurov
Не смог найти того что мне поможет, мб плохо искал. В скриптах я особо не разбираюсь поэтому не смог из разных собрать то что мне нужно.
структура того что мне нужно такова

000001(папка)
000001.xxx
mkp(папка)

есть файл нужно его раскопировать с определенной нумирацией(обычно это интервал например 000081-000120) и положить в папку с таким же именем а так же создать в этой папке еще папку с именем "mkp"

Возможно ли это сделать одним скриптом?
и вторая задача в этих папках mkp лежат файлы которые имеют имя all_00001.xxx возможно ли не открывая каждую папку переименовать их все заменив "all_" на "mkp_"?

Добавлено: Вт ноя 14, 2017 20:46
Zmy
По второй задаче, даже скрипты не надо.
Поиск файлов, файлы на панель, или файлы без каталогов, инструмент группового переименования, создаёте задачу, и всё.

По первой задаче, я написал скрипт. Сохраняете его под именем "CopyToFolderCount.vbs".
Должен быть выделен файл под курсором.

Но вы не очень понятно объяснили задачу. Если не так надо, то уточните.

Command:
C:\Temp\CopyToFolderCount.vbs

Parameteres:
"%N"


[cut="Скрипт"]

Код: Выделить всё

'Первый параметр - %N
'------------------------------------------------------------------
If WScript.Arguments.Count = 0 Then  MsgBox "Первый параметр должен" & _
" быть. " &  VbCrLf & VbCrLf & "%N", vbOKOnly + vbError, "Not Parameters" : Wscript.Quit : End If
Dim sla, las, asl, lls, lsa, sls, ssl
Set fso = CreateObject("Scripting.FileSystemObject") : sla = WScript.Arguments(0)
Set lsa = fso.GetFile(sla) : las = InputBox("Input" & " Start", "Input " & "Start")
If Len(las) = 0 Or IsEmpty(las) Then Set fso = Nothing : Set lsa = Nothing : WScript.Quit
asl = InputBox("Input " & "End", "Input " & "End") : If Len(asl) = 0 Or IsEmpty(asl) Then Set fso = Nothing : Set lsa = Nothing : WScript.Quit : If InStrRev(sla, ".") > 0_
Then lls = Left(sla, InStrRev(sla, ".") - 1) : Else lls = sla : ssl = ""
For sls = las to asl : If Not fso.FileExists(sls & sla) Then : fso.CreateFolder sls & sla : fso.CreateFolder sls & _
sla & "\" & "mkp" : End If : lsa.Copy _
sls & sla & "\" : Next : Set fso = Nothing : Set lsa = Nothing : WScript.Quit 
[/cut]
.

Добавлено: Ср ноя 15, 2017 06:10
Flasher
Zmy писал(а):Но вы не очень понятно объяснили задачу.
Не очень — это ещё мягко сказано.
Zmy писал(а):Parameteres:
"%N"
И будет: ""тут пробел.ext""

P.S.: "Первый параметр должен БЫТЬ." - Zmy ©
Ура, товарищи! :)

Добавлено: Ср ноя 15, 2017 06:29
Zmy
Flasher, что вы хотите сказать?

Добавлено: Ср ноя 15, 2017 06:37
Flasher
Что тема шита белыми нитками. ;)

Добавлено: Ср ноя 15, 2017 08:10
Igor_Gurov
Извините я вполне мог объяснить непонятно.
Могу еще раз объяснить.
Файл, это файл проекта к определенной программе который очень долго создавать через саму программу.
Сама папка проекта называется так же как и проект и в этой же папке должна быть еще одна папка под названием mkp ну и сам файл.
Прошу извинить если изъясняю непонятно.

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

Добавлено: Ср ноя 15, 2017 08:40
Zmy
Вот есть описание того, как это делается.
http://forum.wincmd.ru/viewtopic.php?t=14282

Своими словами скажу так.

[cut]Термины могут не совпадать, в виду того, что есть разные русификаторы, но смысл должен быть понятен.
Правой кнопкой мыши по панели инструментов, выбираем "Редактировать".
Появляется окно свойств панели. Добавить кнопку. В поле "Команда" вставляем полный путь до скрипта.
Можно выбрать скрипт в диалоге. Для этого, справа от этого поля есть выпадающее меню. "Вставить имя файла".
Открывается диалог, находите этот скрипт, и выбираете его. Его имя с полным путём должно вставиться в поле "Команда".
Если в полном пути есть пробелы, то надо обязательно брать полный путь и имя в кавычки.
Разумно будет, вообще, не допускать пробелов в путях и именах.
В поле "Параметр" вводите "%N".
Поле "Путь" или "Папка" должно остаться незаполненным.
При желании, заполняете поля "Иконка" и "Подсказка".
И всё.
[/cut]
Наводите курсор на свой файл (выделяете его), и нажимаете эту кнопку, должен появиться диалог ввода.
Вводите диапазон от Start (число, с которого будет отсчитываться счётчик) до End (число, на котором закончится счётчик).
Если эти диалоги не появятся, значит что-то неправильно настроено.
.

Добавлено: Ср ноя 15, 2017 12:29
Flasher
Igor_Gurov писал(а):Извините я вполне мог объяснить непонятно.
Пунктуация в вашем тексте когда-нибудь появится? Не говоря уже про заглавные буквы. Диапазоны из головы берутся? Или алгоритм их получения таки имеется для работы с группой выделенных файлов?

Zmy
Энергию-то пожалейте. Памятка в переводе не нуждается, как и в поиске, впрочем.
Термины могут не совпадать, в виду того, что есть разные русификаторы
О каких ещё терминах речь? Тем более, что памятка была согласована с переводчиком справки ТС.
Zmy писал(а):В поле "Параметр" вводите "%N".
Опять? :shock:

Добавлено: Ср ноя 15, 2017 13:01
Zmy
А что не в порядке с параметром?

Добавлено: Ср ноя 15, 2017 13:03
Flasher
Я же написал:
Flasher писал(а):И будет: ""тут пробел.ext""
В параметрах ставится знак вопроса спереди, курсор — на объект с наличием пробелов. В случае с %M иначе.

Добавлено: Ср ноя 15, 2017 13:11
Zmy
Без вопроса у меня прекрасно отрабатывает файлы с пробелом в имени. Хоть с кавычками, хоть без.

Добавлено: Ср ноя 15, 2017 13:21
Flasher

Код: Выделить всё

Set oFile = CreateObject("Scripting.FileSystemObject").GetFile(WSH.Arguments(0))
+

Код: Выделить всё

TOTALCMD#BAR#DATA
C:\Файл-объект_под_курсором.vbs
"%N"
WScript.exe,2
Файл-объект под курсором
Под курсором: C:\File Name.txt
Результат:
Строка: 1
Символ: 1
Ошибка: Файл не найден
Код: 800A0035
Источник: Ошибка выполнения Microsoft VBScript
Иначе и быть не может, т. к. кавычки (запретные, кстати) передаются как часть имени.

Добавлено: Ср ноя 15, 2017 13:29
Zmy
Вот так попробуйте.

Код: Выделить всё

msgBox CreateObject("Scripting.FileSystemObject").GetFile(WSH.Arguments(0))

Добавлено: Ср ноя 15, 2017 13:33
Flasher
Контекст не имеет значения. Важна правильная передача.

Добавлено: Ср ноя 15, 2017 13:35
Zmy
Работает?