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

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

f1rstonlyone@vk 20-12-2017 14:02 2785779

Переименование файлов
 
Здравствуйте.
Кратко. Есть папка с файлами типа :

Код:

p_name.mdl
p_name.mdl
p_name.mdl
v_name.mdl
v_name.mdl
v_name.mdl
w_name.mdl
w_name.mdl
w_name.mdl
w_name.mdl

Нужно внести дополнительный текст с сохранением существующих имён а именно

Код:

p_new text_name.mdl
v_new text_name.mdl
w_new text_name.mdl


Iska 20-12-2017 14:05 2785781

Цитата:

Цитата f1rstonlyone@vk
Кратко. Есть папка с файлами типа : »

Не может быть каталога со всеми перечисленными файлами единовременно — у многих из них одинаковые имена.


Цитата:

Цитата f1rstonlyone@vk
Нужно внести дополнительный текст с сохранением в существующих имён а именно »

По какому принципу? Заменить единственный символ «_» в имени на «_мойтекст_»?

f1rstonlyone@vk 20-12-2017 14:08 2785783

нужно между символами _ _ вставить текст, не более.
Мне не надо менять все название в каждом файле, мне просто надо внести доп. текст между символами что указаны

Iska 20-12-2017 14:13 2785787

f1rstonlyone@vk, О каких «вставить между» Вы пишете? В примере имён существующих файлов ровно по одному символу _, и я не представляю, как можно вставить между.

Ещё раз: что заменяем? Единственный символ «_» в имени? И на что меняем. Проще говоря — опишите принцип замены. Или вставки.

f1rstonlyone@vk 20-12-2017 14:16 2785790

Извиняюсь, не выделил символ "_"
проще говоря

p_name.mdl
v_name.mdl
w_name.mdl

в

p_new text_name.mdl
v_new text_name.mdl
w_new text_name.mdl

Iska 20-12-2017 15:02 2785800

Фууух… Ладно, воспользуемся методом научного тыка.
Код:

@echo off
setlocal enableextensions enabledelayedexpansion

for /f "usebackq delims=" %%i in (`2^>nul dir /a:-d /b "*_name.mdl"`) do (
        set sName=%%~i
        ren "%%~i" "!sName:_=_Мама мыла раму_!"
)

endlocal
exit /b 0


megaloman 20-12-2017 16:20 2785826

Вот еще один тык. Отличие от предыдущего - повторный запуск скрипта не приведёт к еще одной вставке указанного текста
Код:

@Echo Off
Set "BoxIn=Z:\Box_In"
Set "Mask=*_*.mdl"
Set "Text=У попа была собака"

If Not Exist "%BoxIn%" (Echo Inbox %BoxIn% not found &Pause &Exit /B 1)

Pushd "%BoxIn%"
FOR /F "usebackq tokens=1,2* delims=_" %%i IN (`2^>nul Dir %Mask% /b /A:-D`) DO (
        If /I Not "%%j"=="%Text%" (
                If "%%k"=="" (
                        Ren "%%i_%%j" "%%i_%Text%_%%j"
                ) Else (
                        Ren "%%i_%%j_%%k" "%%i_%Text%_%%j_%%k"
                )
        )
)
Popd
Exit /B 0

Маску можно указать и конкретнее. f1rstonlyone@vk, Я не понял, что в имени файла постоянно: p,v,w или name? Если изменяемое name, то можно написать, например:
Код:

Set "Mask=p_*.mdl v_*.mdl w_*.mdl"
Если name постоянно, то
Код:

Set "Mask=*_name.mdl"
Укажите в скрипте папку с файлами BoxIn. Если скрипт предполагается помещать в папку с файлами, то указывать
Код:

Set "BoxIn=%~dp0"


Время: 23:21.

Время: 23:21.
© OSzone.net 2001-