Создание папки внутри существующей с изменением имени

Обсуждение вопросов автоматизации Total Commander с помощью сторонних программ и скриптовых технологий.

Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер

B_comp
Сообщения: 3
Зарегистрирован: Чт сен 23, 2010 16:55

Создание папки внутри существующей с изменением имени

Сообщение B_comp »

После долгих мучений, понял что сам не справлюсь:)
Задача: Есть папка с именем x_y. Нужно создать внутри нее папку с именем x_job, т.е все что после подчеркивания (y = любой набор символов) заменить на "job".
Затем скопировать в полученную папку файл из определенного места (всегда один и тот же файл из одного и того же места), переименовать его оставив родное расширение в x_y (название исходной папки) и запустить.
Хотелось бы находясь в нужной исходной папке, нажав на педаль, получить описанный выше результат. Возможно ли это?
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

1) x - это тоже любой набор символов, или "x_" - константа?
2) у определённого места и одного и того же файла постоянные названия имеются?
Serge Yolkin
Сообщения: 664
Зарегистрирован: Сб июл 25, 2009 11:12

Сообщение Serge Yolkin »

B_comp
Батник подойдет?
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Serge Yolkin
Тут обычно не спрашивают, а пишут. В условии-то задано не было. :wink:
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

Flasher
А если ещё не написали, то не вредно заранее и спросить, чтобы не делать зря работу.
Даже самая богатая фантазия
Не представит себе наши безобразия.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Avada
С таким подходом стоило спросить, какой из скриптовых языков рассматривается и перечислить в довесок с пяток, а то и десяток, другой. Что Tol'k, что Batya, что Loopback (и т.д.) никогда об этом не спросят, если это жёстко не задано в условии. Поэтому не понимаю, к чему эти флеймовские запевы..
Последний раз редактировалось Flasher Пт сен 24, 2010 10:08, всего редактировалось 1 раз.
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

Flasher
И я не понимаю, к чему. Человек задал уточняющий вопрос по приемлемости батника (не скриптов) и ждёт на него ответа. Никакого криминала и повода для чтения нотаций здесь нет. Это моё мнение как модератора. Дискуссия по поводу уместности/неуместности закончена.
Даже самая богатая фантазия
Не представит себе наши безобразия.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Avada писал(а):И я не понимаю, к чему.
А тут и понимать нечего. Концепция поведения на форуме такая. Я лишь довожу до сведения о том, что в будущем в таких ситуациях можно обойтись и без уточняющих вопросов подобного рода. Сообщество не даст соврать. 8)
А для Серёги Ёлкина написать такого рода батник - пару минут. Поэтому о трате времени можно и умолчать.
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

Flasher писал(а):Я лишь довожу до сведения о том, что в будущем в таких ситуациях можно обойтись и без уточняющих вопросов.
А можно и не обойтись. Повторяю ещё раз и больше ни разу — дискуссия закончена.
Даже самая богатая фантазия
Не представит себе наши безобразия.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Avada писал(а):Дискуссия по поводу уместности/неуместности
Avada писал(а):Повторяю ещё раз
Я про уместность уже нигде не писал. :)
Для меня дискуссия не закончена по крайней мере с автором топика.
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

Дискуссия с автором топика, разумеется, продолжается. :wink:
Даже самая богатая фантазия
Не представит себе наши безобразия.
Аватара пользователя
Batya
Сообщения: 2236
Зарегистрирован: Ср дек 15, 2004 09:51
Откуда: Москва, Россия

Сообщение Batya »

Переведём дискуссию в конструктивное русло ;)
vbs-скрипт:

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

'=====================================================================================
' Создание папки с частью имени родительской (по разделитель) и добавлением окончания.
'   Копирование в новую папку определённого файла.

' Параметры:
' {Родительская папка} {Разделитель} {Окончание} {Копируемый файл}

' Пример параметров вызова из TC:
' "%P" "_" "job" "C:\MyFold\MyFile.Ext"
'=====================================================================================
Option Explicit
Dim FSO, ParentFold, Separator, NameFold, NewFold, NewFoldEnd, MyFile, Pos
Set FSO    = CreateObject("Scripting.FileSystemObject")
ParentFold = WScript.Arguments(0)
Separator  = WScript.Arguments(1)
NewFoldEnd = WScript.Arguments(2)
MyFile     = WScript.Arguments(3)

If Right(ParentFold, 1) <> "\" Then ParentFold = ParentFold & "\"
NameFold = FSO.GetFolder(ParentFold).Name
Pos      = Instr(1, NameFold, Separator, 1)
NewFold  = ParentFold & Left(NameFold, Pos) & NewFoldEnd

If Not FSO.FolderExists(NewFold) Then FSO.CreateFolder(NewFold)
If Right(NewFold, 1) <> "\" Then NewFold = NewFold & "\"

FSO.CopyFile MyFile, NewFold & NameFold & "." & FSO.GetExtensionName(MyFile)

Set FSO = Nothing
Wscript.Quit 0
Последний раз редактировалось Batya Пт сен 24, 2010 13:14, всего редактировалось 1 раз.
Нет, я не сплю. Я просто медленно моргаю.
B_comp
Сообщения: 3
Зарегистрирован: Чт сен 23, 2010 16:55

Сообщение B_comp »

Спасибо огромное! Все отлично работает!
А возможно добавить еще переименование скопированного файла (MyFile.Ext) в имя исходной папки (x_y.ext). Именно исходной, а не созданной в процессе?
Заранее благодарен.
Аватара пользователя
Batya
Сообщения: 2236
Зарегистрирован: Ср дек 15, 2004 09:51
Откуда: Москва, Россия

Сообщение Batya »

B_comp писал(а):А возможно добавить еще переименование скопированного файла (MyFile.Ext) в имя исходной папки (x_y.ext). Именно исходной, а не созданной в процессе?
Легко. Скрипт поправил.
Нет, я не сплю. Я просто медленно моргаю.
B_comp
Сообщения: 3
Зарегистрирован: Чт сен 23, 2010 16:55

Сообщение B_comp »

Отлично! Спасибо ещё раз! Очень облегчили мне жизнь в плане скорости и избежания ошибок в именах папок и файлов. На самом деле исходная папка это "Номер заказа_название заказчика". Схема работы (придуманная еще до меня) такая - внутри создается рабочая папка с номером заказа и в ней продолжается работа. В частности, сохраняется job-файл программы Preps c нужным именем. Сам я в написании скриптов - 0.
Ответить