Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Нужна помощь в создании bat-ника для распаковки и переименования файлов/папок (http://forum.oszone.net/showthread.php?t=139721)

Nun-Nun 09-05-2009 20:34 1114529

Нужна помощь в создании bat-ника для распаковки и переименования файлов/папок
 
Не пинайте, если что не так! Я ещё не волшебник, я только учусь! :-)

Проблема в следующем: есть постоянно увеличивающийся набор самораспаковывающихся 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 1114768

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 1115381

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

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

gaz0n 11-05-2009 18:29 1115595

Цитата:

Цитата Nun-Nun
А что означают ключи /F /Q в команде DEL? »

/F Принудительное удаление файлов, доступных только для чтения.
/Q Отключение запроса на подтверждение при удалении файлов.

Nun-Nun 12-05-2009 19:10 1116636

Сделал вот такое "изобретение", но всё равно переименовывается только перый файл .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 1117312

Решение - в теме Нужна помощь в создании bat-ника для распаковки и переименования файлов/папок
HTML код:

http://forum.oszone.net/thread-139964.html

Nun-Nun 14-05-2009 15:45 1118355

Тему можно закрыть! Большое всем спасибо за помощь!


Время: 11:36.

Время: 11:36.
© OSzone.net 2001-