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

Viktor99 22-05-2019 21:11 2872733

Удаление символов в конце имени файлов в папке
 
Добрый вечер. В папке C:\Working находятся картинки с разными именами. Скрипт должен удалить 12 символов в конце перед расширением. Помогите, пожалуйста, с батником.

Knaps 22-05-2019 22:30 2872740

1. Total Commander - Multi rename tool.

2.
set VARIABLE=%VARIABLE:~10,5% вернет из переменной %VARIABLE% 5 символов, начиная с 11-го (индексация с 0).
set VARIABLE=%VARIABLE:~-5% вернет из переменной %VARIABLE% последние 5 символов.
set VARIABLE=%VARIABLE:~0,-5% вернет из переменной %VARIABLE% все символы, кроме последних 5.

for /? покажет справку, где есть информация про модификаторы, которые позволяют вытащить имя без расширения.

Viktor99 23-05-2019 00:00 2872745

Нашел подходящий скрипт на форуме, но его нужно доработать. Он удаляет указанное количество символов из начала имени. Помогите, пожалуйста, модифицировать, чтобы удалял с конца. Спасибо за помощь.
Код:

@echo off

setlocal

set "folder=C:\ftp\rpo"
set "number=7"

pushd "%folder%"
for /f "delims=" %%i in ('2^>nul dir/a-d/b') do (
 set name=%%~ni
 2>nul cmd/v/c ren "%%i" "!name:~%number%!%%~xi"
)
popd

endlocal


megaloman 23-05-2019 05:34 2872751

Код:

@Echo Off
        Set "Files=Z:\Box_In\*.*"
        Set /A N=12

        For %%f In ("%Files%") Do Set "Name=%%~nf" &Call Ren "%%f" "%%Name:~0,-%N%%%%%~xf"
Exit /B

Неплохо бы указать более определённую маску файлов Ваших картинок, например:
Set "Files=Z:\Box_In\*.jpg"
Скрипт никак не контролирует исходные длины имён файлов, нет никакой защиты от его случайного повторного применения. Если предоставите дополнительную инфу, можно будет думать.

alpap 23-05-2019 15:51 2872798

Цитата:

Цитата megaloman
нет никакой защиты »

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

Knaps 25-05-2019 19:57 2872997

Viktor99, см. первый ответ в теме.

alpap 26-05-2019 00:12 2873024

Knaps,
в папке лежит три файла:
abc111111111111.txt
abc222222222222.txt
abc333333333333.txt
ну давайте возьмем в переменную имя файла удалим вашим способом в каждом 12 последних символов перед расширением файла как просит ТС и попробуем потом переименовать каждый приведенный выше файл в abc.txt, как думаете, получится?

Knaps 26-05-2019 20:29 2873113

alpap,

1. Не очень понимаю, что вы пытаетесь показать. Что есть случаи, когда задача ТС не решается? Ну да, они есть. И что?
2. С чего вы вообще взяли, что я что-то говорил о том, что переименование всегда получится?

alpap 27-05-2019 16:38 2873229

Цитата:

Цитата Knaps
что-то говорил »

ну может и не говорил, но намекал, иначе как назвать посыл п6 обратить внимание на ваше даже не решение (в отличие п4, после которого оно зачем-то присутствует), а просто намек на использование справки и не более. Не, я бы ничего не имел против если бы ваше направление могло решить проблему, но когда megaloman акцентировал внимание на одних возможных проблемах, а я добавил что подводных камней может быть и больше, вы своим выпадом вроде как пытались показать, все выше ерунда, мой пост решает все проблемы.

Knaps 02-06-2019 23:27 2874146

alpap, класс, мне понравилось. Приписать собеседнику какие-то намеки, начать их опровергать. Пожалуй, отвечу классикой: https://www.youtube.com/watch?v=OGsHshpYkiU.


Время: 21:04.

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