Компьютерный форум 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=331240)

Viktor99 15-11-2017 23:34 2777845

Добавление названия папки к имени файлов.
 
В корневой папке есть подпапка с названием "Worked". Нужно, чтобы батник, находящийся в корневой папке добавлял ко всем файлам в "Worked" название папки перед файлом: Worked_xxxxxx. Помогите. пожалуйста. написать скрипт.

Iska 16-11-2017 07:34 2777878

Код:

for %%i in ("%~dp0\Worked\*.*") do ren "%~dp0\Worked\%%i" "Worked_%%i"

alpap 16-11-2017 16:03 2777995

[можете удалить после корректировки]
Iska,
наверное лучше: for %%i in ("%~dp0Worked\*.*") do ren "%~dp0Worked\%%~nxi" "Worked_%%~nxi"
а то ТС прозреет при запуске с рабочего стола, по условию (В корневой папке есть подпапка с названием "Worked") удовлетворяет хоть и маловероятно

mwz 16-11-2017 16:36 2778001

Viktor99, имя подпапки конкретно "Worked" — или может быть в общем случае любым?

Viktor99 16-11-2017 16:58 2778006

Название конкретно такое. А можно как-то реализовать скрипт, чтобы он изменял имя файла по маске "имя папки_имя файла" в любой папке, куда его забросить?

alpap 16-11-2017 17:35 2778013

Цитата:

Цитата Viktor99
_имя файла »

а если такой уже есть? И в любом случае надо что-то: _имя файла_1(2, 3, ...) или типа того, если файл не один

Viktor99 16-11-2017 17:39 2778015

Цитата:

Цитата alpap
а если такой уже есть? И в любом случае надо что-то: _имя файла_1(2, 3, ...) или типа того, если файл не один »

В данном случае файлы всегда с разными именами (одинаковых никогда не будет).

megaloman 16-11-2017 17:56 2778018

Viktor99,
Код:

@Echo Off
Set "NameFolder=Box*"
Set "NameFile=*.mp3"

FOR /F "usebackq delims=" %%d IN (`Dir "%NameFolder%" /b /A:D 2^>nul`) DO (
        FOR /F "usebackq delims=" %%f IN (`Dir "%%d\%NameFile%" /b /A:-D 2^>nul`) DO (
                Call :RenFile "%%d" "%%f"
        )
)
GoTo :Eof

:RenFile
        Set "InDir=%~1
        Set "InFile=%~2"
        Call Set "InFile=%%Infile:%InDir%_=%%"
        If "%InFile%"==%2 Ren "%~1\%~2" "%~1_%~2"
GoTo :Eof

Переименовываем по маскам, имя папки и имя файла может задаваться маской:
Папка\Файл -> Папка\Папка_Файл
Повторный запуск батника не приведёт к еще одному переименованию. То есть, имена
Папка\Папка_Файл -> не будут переименованы в Папка\Папка_Папка_Файл


Время: 14:40.

Время: 14:40.
© OSzone.net 2001-