Войти

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


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

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

пример... есть 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
Alexander_88, какую общую задачу Вы пытаетесь решить этой и предыдущей: CMD/BAT - [решено] Уменьшить число в имени файла (http://forum.oszone.net/thread-334088.html) темами? Пока я вижу только одно: любой вменяемый файловый менеджер позволит решить эту задачу ручками проще.

megaloman
07-04-2018, 16:39
@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
Iska, есть скрипт который работает постоянно, ориентируется на имена многих файлов. По 1ой теме.. он запускает эти батники для уменьшения лимита задач (которые он выполняет), как только число будет 0, задача перестанет выполняться.

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

Alexander_88
07-04-2018, 19:36
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
megaloman, тхт прикрепил. Указываю со звездочками в конце, "OK LIKES - *."

megaloman
07-04-2018, 20:35
Фантастика, из одной папки у меня батник работал, а из другой - не хочет. Не стал докапываться, вот исправление 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
Фантастика, из одной папки у меня батник работал, а из другой - не хочет. Не стал докапываться, вот исправление
Код: Выделить весь код
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" »


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




© OSzone.net 2001-2012