Страница 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".
Опять?

Добавлено: Ср ноя 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
Работает?