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

Alexander_88 07-04-2018 11:36 2807544

Переименовать конечные символы файлов на заданные по ходу скрипта
 
Здравствуйте. Можно ли как-то переименовать конечные символы заданных файлов (заранее пути к файлам пропишем в бате), на заданные символы по ходу скрипта. По ходу скрипта - это значит что мы будем задавать символы (на которые мы будем заменять конечные) в момент работы скрипта. (т.е. запускается бат, и пишет.. введите символы.. мы вводим, нажимаем ентер и далее происходит переименование).

В файлы без расширения. Как узнать, какие конечные символы нужно переименовать?.. в батнике мы будем прописывать пути к файлам.. но имя файла будем прописывать не полностью, а маской (мы не будем дописывать конечные символы, которые нужно заменять).

пример... есть 3 файла:

1 - "C:\hello world - 15"
2 - "C:\windows 3 - 12"
3 - "C:\guten tag 2 - OFF"

В батнике мы пропишем такие пути:
1 - "C:\hello world - "
2 - "C:\windows 3 - "
3 - "C:\guten tag 2 - "

Запускаем батник.......
он нам говорит, "Введите символы..."
мы пишем "ON"
нажимаем ентер
батник переименовывает файлы, и их имена становятся такими:

1 - "C:\hello world - ON"
2 - "C:\windows 3 - ON"
3 - "C:\guten tag 2 - ON"

:)

Iska 07-04-2018 15:00 2807578

Alexander_88, какую общую задачу Вы пытаетесь решить этой и предыдущей: CMD/BAT - [решено] Уменьшить число в имени файла темами? Пока я вижу только одно: любой вменяемый файловый менеджер позволит решить эту задачу ручками проще.

megaloman 07-04-2018 16:39 2807597

Если очень хочется, то извольте:
Код:

@Echo Off

Set "BoxIn=Z:\Box_In"
Set Mask="guten tag 2 - *." "guten tag kuku 2 - *.exe" "hello world - *." "hello world - *.txt" "windows 3 - *." "windows kuku 3 - *.uuu" 

:Begin
        Set "NewEnd="
        SET /P NewEnd=Input new ending simbols :
        If "%NewEnd%"=="" GoTo :Eof
        Call :FileRen "%NewEnd%" "%BoxIn%" %Mask%
        rem GoTo :Begin
GoTo :Eof

:FileRen
        :BeginRen
        If "%~3"=="" GoTo :Eof
        FOR /F "usebackq tokens=1 delims=*" %%f IN ('%~n3') DO Set "OldName=%%f"
        FOR /F "usebackq tokens=1 delims=*" %%f IN ('%~3') DO Set "OldName=%%f"
        FOR %%f IN ("%~2\%~3") DO Ren "%%f" "%OldName%%~1%%~xf"
        Shift /3
        GoTo :BeginRen
GoTo :Eof

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

Alexander_88 07-04-2018 19:15 2807620

Iska, есть скрипт который работает постоянно, ориентируется на имена многих файлов. По 1ой теме.. он запускает эти батники для уменьшения лимита задач (которые он выполняет), как только число будет 0, задача перестанет выполняться.

Вторая тема - это батники (их много будет), которые будут назначать или вообще отключать эти лимиты для одной задачи, или для целой группы.. Я сделаю форму с кнопками (через Делфи). Каждая кнопка, будет относится к одной или группе задач. На каждую кнопку назначу батник из этой темы. Нажму на кнопку определенной задачи.. запустится батник, спросит лимит, я написал и нажал энтер. Это гораздо быстрее (щёлкнуть по кнопке, написать лимит и нажать энтер) чем через файловый менеджер. Тем более это нужно делать часто. Одноразовое групповое переименование, даже для очень многих файлов (одноразовое) я делаю в файловый менеджер Total Commander.

Alexander_88 07-04-2018 19:36 2807628

Вложений: 1
megaloman, Благодарю вас. Я попробовал, у меня получается, что батник не переименовывает конечные символы на заданные., а добавляет заданные символы в конец имени.
были файлы:
"OK LIKES - 0"
"ok yandex 2 - 0"
"start google - 0"

Input new ending simbols: 2

файлы получились:
"OK LIKES - 02"
"ok yandex 2 - 02"
"start google - 02"

еще раз запустил..

Input new ending simbols: off

файлы получились:
"OK LIKES - 02off"
"ok yandex 2 - 02off"
"start google - 02off"

Alexander_88 07-04-2018 19:45 2807632

megaloman, тхт прикрепил. Указываю со звездочками в конце, "OK LIKES - *."

megaloman 07-04-2018 20:35 2807648

Фантастика, из одной папки у меня батник работал, а из другой - не хочет. Не стал докапываться, вот исправление
Код:

        FOR /F "usebackq tokens=1 delims=*" %%f IN ('%~n3') DO Set "OldName=%%f"
        FOR /F "usebackq tokens=1 delims=*" %%f IN ('%~3') DO Set "OldName=%%f"


Alexander_88 07-04-2018 20:42 2807650

Цитата:

Цитата megaloman
Фантастика, из одной папки у меня батник работал, а из другой - не хочет. Не стал докапываться, вот исправление
Код: Выделить весь код
FOR /F "usebackq tokens=1 delims=*" %%f IN ('%~n3') DO Set "OldName=%%f"
FOR /F "usebackq tokens=1 delims=*" %%f IN ('%~3') DO Set "OldName=%%f" »


Благодарю вас, теперь у меня все работает (у меня все файлы на рабочем столе)


Время: 00:04.

Время: 00:04.
© OSzone.net 2001-