Войти

Показать полную графическую версию : [решено] Нужна помощь в создании bat-ника для распаковки и переименования файлов/папок


Nun-Nun
09-05-2009, 20:34
Не пинайте, если что не так! Я ещё не волшебник, я только учусь! :-)

Проблема в следующем: есть постоянно увеличивающийся набор самораспаковывающихся exe-шников со схожими именами типа Fileconstant1XXXXXXFileconstant2.exe , причём, в именах всех этих файлов, те куски, что обозначены Fileconstant1 и Fileconstant2 , всегда одинаковы для всех файлов, а куски, обозначенные символами XXXXXX , у разных файлов разные. Необходимо распаковать exe-файлы, а из получившейся кучи выбрать файлы .msp и каждый переименовать в соответствии с названием XXXXXX-часи того exe-шника, из которого .msp-файл извлечён. Проблема осложняется тем, что, во-первых, exe-шники должны распаковываться с ключами /Q /C /T:C:\Temp , а во-вторых, файлы .msp внутри разных exe-шников могут иметь одинаковые имена, поэтому, при простом извлечении содержимого всех exe-шников в общую кучу часть .msp файлов затирается.
Пытаюсь смастерить для этого дела bat-ник, но нормального результата так и не добился, никак не удаётся создать маску для имени exe-шников и вычленить из них эту XXXXXX.

SET Namepath=%C:\Temp
SET Namefile0="Fileconstant1??????Fileconstant2.exe"
SET Namefile1=%Fileconstant1??????Fileconstant2.exe:~0,13%
SET Namefile2=%Fileconstant1??????Fileconstant2.exe:~13,6%
SET Namefile3=%Fileconstant1??????Fileconstant2.exe:~-17%
SET Namefile4=%Namefile2%
@START "%Namefile0% /Q /C /T:C:\Temp" - не работает
REM FOR %%s IN (*.exe) DO %%s "/Q /C /T:C:\Temp" - затирает файлы .msp
REM FOR %%h IN (%Namepath%\*.msp) DO REN "%Namepath%\%%~nx1" "%Namefile4%.msp" - не работает

P.S. Разумеется, в названиях exe-шников XXXXXX заменены на ?????? для маски.

Maza Faka
10-05-2009, 09:08
Nun-Nun
Пример:

@Echo Off

Set NamePath=C:\Temp

Del /F /Q %NamePath%\*.msp

For %%A In (*.exe) Do (
%%A /Q /C /T:%NamePath%
For %%B In (%NamePath%\*.msp) Do Ren %%B %%~nA.msp
)

Не тестировал!

Nun-Nun
11-05-2009, 12:38
Maza Faka, большое спасибо за помощь! Попробовал Ваш вариант, вот что получилось: файл .msp, извлечённый из первого exe-шника, нормально извлекается и переименовывается в имя exe-шника, остальные файлы .msp (т.е. извлечённые из других exe-шников) остаются не переименованными и при этом всё равно появляется сообщение о перезаписи одноимённых файлов.

P.S. А что означают ключи /F /Q в команде DEL? Просто почему-то у меня DEL /? ничего не выдаёт, поэтому никак не могу до них добраться.

gaz0n
11-05-2009, 18:29
А что означают ключи /F /Q в команде DEL? »
/F Принудительное удаление файлов, доступных только для чтения.
/Q Отключение запроса на подтверждение при удалении файлов.

Nun-Nun
12-05-2009, 19:10
Сделал вот такое "изобретение", но всё равно переименовывается только перый файл .msp и ещё выдаётся сообщение о том, что "Файл с таким именем уже существует или не найден":

Set NamePathTemp=C:\Temp\1
Set NamePath=C:\Temp

Del /F /Q %NamePathTemp%\*.msp

For %%A In (*.exe) Do (
%%A /Q /C /T:%NamePathTemp%
For %%B In (%NamePathTemp%\*.msp) Do (Move %%B %NamePath%
For %%C In (%NamePathTemp%\*.*) Do (Del /F /Q %%C
For %%D In (%NamePath%\*.msp) Do (Ren %%D %%~nA.msp)
)
)
)

В общем, пока тупик.

Nun-Nun
13-05-2009, 13:41
Решение - в теме Нужна помощь в создании bat-ника для распаковки и переименования файлов/папок http://forum.oszone.net/thread-139964.html

Nun-Nun
14-05-2009, 15:45
Тему можно закрыть! Большое всем спасибо за помощь!




© OSzone.net 2001-2012