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

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

Добавлено: Чт сен 23, 2010 17:39
B_comp
После долгих мучений, понял что сам не справлюсь:)
Задача: Есть папка с именем x_y. Нужно создать внутри нее папку с именем x_job, т.е все что после подчеркивания (y = любой набор символов) заменить на "job".
Затем скопировать в полученную папку файл из определенного места (всегда один и тот же файл из одного и того же места), переименовать его оставив родное расширение в x_y (название исходной папки) и запустить.
Хотелось бы находясь в нужной исходной папке, нажав на педаль, получить описанный выше результат. Возможно ли это?

Добавлено: Чт сен 23, 2010 22:02
Flasher
1) x - это тоже любой набор символов, или "x_" - константа?
2) у определённого места и одного и того же файла постоянные названия имеются?

Добавлено: Пт сен 24, 2010 00:35
Serge Yolkin
B_comp
Батник подойдет?

Добавлено: Пт сен 24, 2010 01:29
Flasher
Serge Yolkin
Тут обычно не спрашивают, а пишут. В условии-то задано не было. :wink:

Добавлено: Пт сен 24, 2010 09:19
Avada
Flasher
А если ещё не написали, то не вредно заранее и спросить, чтобы не делать зря работу.

Добавлено: Пт сен 24, 2010 09:25
Flasher
Avada
С таким подходом стоило спросить, какой из скриптовых языков рассматривается и перечислить в довесок с пяток, а то и десяток, другой. Что Tol'k, что Batya, что Loopback (и т.д.) никогда об этом не спросят, если это жёстко не задано в условии. Поэтому не понимаю, к чему эти флеймовские запевы..

Добавлено: Пт сен 24, 2010 09:44
Avada
Flasher
И я не понимаю, к чему. Человек задал уточняющий вопрос по приемлемости батника (не скриптов) и ждёт на него ответа. Никакого криминала и повода для чтения нотаций здесь нет. Это моё мнение как модератора. Дискуссия по поводу уместности/неуместности закончена.

Добавлено: Пт сен 24, 2010 09:51
Flasher
Avada писал(а):И я не понимаю, к чему.
А тут и понимать нечего. Концепция поведения на форуме такая. Я лишь довожу до сведения о том, что в будущем в таких ситуациях можно обойтись и без уточняющих вопросов подобного рода. Сообщество не даст соврать. 8)
А для Серёги Ёлкина написать такого рода батник - пару минут. Поэтому о трате времени можно и умолчать.

Добавлено: Пт сен 24, 2010 10:00
Avada
Flasher писал(а):Я лишь довожу до сведения о том, что в будущем в таких ситуациях можно обойтись и без уточняющих вопросов.
А можно и не обойтись. Повторяю ещё раз и больше ни разу — дискуссия закончена.

Добавлено: Пт сен 24, 2010 10:04
Flasher
Avada писал(а):Дискуссия по поводу уместности/неуместности
Avada писал(а):Повторяю ещё раз
Я про уместность уже нигде не писал. :)
Для меня дискуссия не закончена по крайней мере с автором топика.

Добавлено: Пт сен 24, 2010 10:14
Avada
Дискуссия с автором топика, разумеется, продолжается. :wink:

Добавлено: Пт сен 24, 2010 11:24
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

Добавлено: Пт сен 24, 2010 12:44
B_comp
Спасибо огромное! Все отлично работает!
А возможно добавить еще переименование скопированного файла (MyFile.Ext) в имя исходной папки (x_y.ext). Именно исходной, а не созданной в процессе?
Заранее благодарен.

Добавлено: Пт сен 24, 2010 13:14
Batya
B_comp писал(а):А возможно добавить еще переименование скопированного файла (MyFile.Ext) в имя исходной папки (x_y.ext). Именно исходной, а не созданной в процессе?
Легко. Скрипт поправил.

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