Войти

Показать полную графическую версию : создание бат для архивирования файла с переименованием архива и файла в архиве


deathspirit
12-11-2021, 14:14
Ребята помогите!!! есть файлы :*.sigs, *.zip.sigm, *.zip. Мне нужно файл с расширением*.zip.sigm переименовать (для примера s52006m520087_21102_445136_00.zip.sigm в M520087S52006_21102_445136_00.zip.sigm то есть сменить последовательность символов с s52006m520087-на M520087S52006 из примера понятно что берутся символы m520087 и s52006 и переставляются местами )
Вот код он работает

Echo off
::chcp 1251
setlocal enabledelayedexpansion

rem этот блок переименовывает файл sigm

for %%i in ("C:\Users\%USERNAME%\Desktop\reestry\*.zip.sigm") do (set c=%%~ni
ren "C:\Users\%USERNAME%\Desktop\reestry\%%~ni.sigm" "!c:~6,7!!c:~0,6!!c:~13,100!.sigm")

pause;

затем упаковать все файлы и сам архив переименовать по такому же принципу
вот код он работает


Echo off
::chcp 1251
setlocal enabledelayedexpansion

for %%i in ("C:\Users\%USERNAME%\Desktop\reestry\*.sigs") do (
set b=%%i
"C:\Program Files\7-zip\7z.exe" a -tzip "!b:~0,-8!oms" "%%i"

)
for %%i in ("C:\Users\%USERNAME%\Desktop\reestry\*.sigm") do (
set b=%%i
"C:\Program Files\7-zip\7z.exe" a -tzip "!b:~0,-8!oms" "%%i"
)


for %%i in ("C:\Users\%USERNAME%\Desktop\reestry\*.zip") do ("C:\Program Files\7-zip\7z.exe" a -tzip "C:\Users\%USERNAME%\Desktop\reestry\%%~ni.oms" "%%i")


del "C:\Users\%USERNAME%\Desktop\reestry\*.zip"
del "C:\Users\%USERNAME%\Desktop\reestry\*.sigs"
del "C:\Users\%USERNAME%\Desktop\reestry\*.sigm"


for %%i in ("C:\Users\%USERNAME%\Desktop\reestry\*.oms") do (
set c=%%~ni
ren "C:\Users\%USERNAME%\Desktop\reestry\%%~ni.oms" "!c:~6,7!!c:~0,6!!c:~13,100!.oms"
)

pause;
ОН РАБОТАЕТ но если я не переименовываю файл s52006m520087_21102_445136_00.zip.sigm в M520087S52006_21102_445136_00.zip.sigm то создаются два архива. P/S первоначально файлы в названии все одинаковы и все работает .. пробовал и по маске и так не получается помогите что я не так делаю или переработал башка не варит.... За ранее спасибо!

alpap
12-11-2021, 15:17
вот переименование распакованных файлов
PowerShell

$files = gci *.sigm -af
$files|% {
$_.BaseName -Match '(\D\d+)(\D\d+)(.*)'|Out-Null
$newName = '{1}{0}{2}{3}' -f $Matches[1], $Matches[2], $Matches[3], $_.Extension
rni $_.FullName $newName
}

megaloman
12-11-2021, 15:27
Если только переименование, то:@Echo Off
cls
Set "BoxIn=Z:\Box_In"
Set "Mask=^s[0-9][0-9][0-9][0-9][0-9]m[0-9][0-9][0-9][0-9][0-9][0-9]_.*\.zip\.sigm$"
Set "L0=13"
Set "L1=0,6"
Set "L2=6,7"

For /F "usebackq delims=" %%f In (`2^>nul Dir "%BoxIn%\*.*" /B /A:-D ^|FindStr /R /I /C:"%Mask%"`) Do (
Set "Name=%%f"
Call Ren "%BoxIn%\%%f" %%Name:~%L2%%%%%Name:~%L1%%%%%Name:~%L0%%%"
)
pause
Exit /B

deathspirit
12-11-2021, 15:45
нет... мне нужно упаковать файлы в один архив с разными расширениями и именами. второй скрипт работает если имена файлов совпадают... а если имена файлов разные то файлы упаковываются в разные архивы.. что мне нужно изменить в батнике, что бы он упаковал в архив разные файлы . если прочитать внимательнее. то я написал . что первоначально нужно: сначала переименовать один файл и потом упаковать файлы с разными именами в один архив и обозвать архив так же как и этот переименованный файл. вот более понятно надеюсь написал. Спасибо!

просто не пойму что не так делаю... второй скрипт работает как надо . если все файлы с именем одинаковы. как только переименовываю файл в M520087S52006_21102_445136_00.zip.sigm он упаковывается в другой архив .

deathspirit
12-11-2021, 16:00
сама задача выглядит так: поменять местами символы файла: s52006m520087_21102_445136_00.zip.sigm в M520087S52006_21102_445136_00.zip.sigm, упаковать файлы в один архив: s52006m520087_21102_445136_00.zip.sigs, M520087S52006_21102_445136_00.zip.sigm, S52006M520087_21102_445136_00.zip. И сам архив zip cохранить с именем как у M520087S52006_21102_445136_00.zip.sigm то есть, должен получится архив M520087S52006_21102_445136_00.zip а в нем M520087S52006_21102_445136_00.zip.sigm,S52006M520087_21102_445136_00.zip,s52006m520087_21102_445136_ 00.zip.sigs)

megaloman
12-11-2021, 20:18
deathspirit, поменять местами символы файла:
s52006m520087_21102_445136_00.zip.sigm
M520087S52006_21102_445136_00.zip.sigm, упаковать файлы в один архив:
s52006m520087_21102_445136_00.zip.sigm
M520087S52006_21102_445136_00.zip.sigm,
S52006M520087_21102_445136_00.zip. И сам архив zip cохранить с именем как у
M520087S52006_21102_445136_00.zip.sigm то есть, должен получится архив

M520087S52006_21102_445136_00.zip а в нем

M520087S52006_21102_445136_00.zip.sigm,
S52006M520087_21102_445136_00.zip,
s52006m520087_21102_445136_ 00.zip.sigs

Не догоняю:
Какие исходные файлы:
s52006m520087_21102_445136_00.zip.sigm
s52006m520087_21102_445136_00.zip.sigs -???????????
S52006M520087_21102_445136_00.zip
В том числе и .zip?

В создаваемом архиве M520087S52006_21102_445136_00.zip 3 файла:
M520087S52006_21102_445136_00.zip.sigm,
S52006M520087_21102_445136_00.zip,
s52006m520087_21102_445136_ 00.zip.sigs
В том числе и .zip?

И, главное, набор этих 3 файлов единственный, или в папке есть аналогичные файлы немного с другими именами, что меняется в именах? B в ответе должно получиться много файлов типа M520087S52006_21102_445136_00.zip с нужным набором имен? Что при этом надо делать с исходными файлами?Вариант:@Echo Off
cls
Set "BoxIn=Z:\Box_In"
Set "Mask=^s[0-9][0-9][0-9][0-9][0-9]m[0-9][0-9][0-9][0-9][0-9][0-9]_"
Set "L0=13,-9"
Set "L1=0,6"
Set "L2=6,7"

Set "Ext1=zip.sigm"
Set "Ext2=zip.sigs"
Set "Ext3=zip"

Set Arc="C:\Program Files\7-Zip\7z.exe" a -tzip -sdel

Set "MExt=%Ext1:.=\.%"
Pushd %BoxIn% || (Echo Folder "%BoxIn%" Not found. &Pause &Exit /B 2)
For /F "usebackq delims=" %%f In (`2^>nul Dir "*.*" /B /A:-D ^|FindStr /R /I /C:"%Mask%.*\.%MExt%$"`) Do (
Set "Name=%%f"
Call :MyArc "%%f" "%%Name:~%L1%%%" "%%Name:~%L2%%%" "%%Name:~%L0%%%"
)
Popd
pause
Exit /B

:MyArc
Ren "%~1" "%~3%~2%~4.%Ext1%"
%Arc% "%~3%~2%~4" "%~3%~2%~4.%Ext1%" "%~2%~3%~4.%Ext2%" "%~2%~3%~4.%Ext3%"
Exit /B

rem 0 6 13
rem | 6 || 7 || | -9 |
rem s52006m520087_21102_445136_00.zip.sigm
rem | 13 |




© OSzone.net 2001-2012