Страница 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
Тут обычно не спрашивают, а пишут. В условии-то задано не было.

Добавлено: Пт сен 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 писал(а):И я не понимаю, к чему.
А тут и понимать нечего. Концепция поведения на форуме такая. Я лишь довожу до сведения о том, что в будущем в таких ситуациях можно обойтись и без уточняющих вопросов подобного рода. Сообщество не даст соврать.

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

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

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