Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Удаление символов в конце имени файлов в папке

Ответить
Настройки темы
CMD/BAT - Удаление символов в конце имени файлов в папке

Новый участник


Сообщения: 15
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

Отправлено: 21:11, 22-05-2019

 

Новый участник


Сообщения: 36
Благодарности: 3

Профиль | Отправить PM | Цитировать


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 /? покажет справку, где есть информация про модификаторы, которые позволяют вытащить имя без расширения.

Отправлено: 22:30, 22-05-2019 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Новый участник


Сообщения: 15
Благодарности: 0

Профиль | Отправить PM | Цитировать


Нашел подходящий скрипт на форуме, но его нужно доработать. Он удаляет указанное количество символов из начала имени. Помогите, пожалуйста, модифицировать, чтобы удалял с конца. Спасибо за помощь.
Код: Выделить весь код
@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

Отправлено: 00:00, 23-05-2019 | #3


Ветеран


Contributor


Сообщения: 1596
Благодарности: 941

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
@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"
Скрипт никак не контролирует исходные длины имён файлов, нет никакой защиты от его случайного повторного применения. Если предоставите дополнительную инфу, можно будет думать.

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 23-05-2019 в 06:18.

Это сообщение посчитали полезным следующие участники:

Отправлено: 05:34, 23-05-2019 | #4


Ветеран


Сообщения: 866
Благодарности: 318

Профиль | Отправить PM | Цитировать


Цитата megaloman:
нет никакой защиты »
да еще при таком серьезном обрезании немалая вероятность совпадения имен после обрезки, файл в таком случае не переименуется, а кто-то будет чесать репу почему не работает код.
Это сообщение посчитали полезным следующие участники:

Отправлено: 15:51, 23-05-2019 | #5


Новый участник


Сообщения: 36
Благодарности: 3

Профиль | Отправить PM | Цитировать


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

Отправлено: 19:57, 25-05-2019 | #6


Ветеран


Сообщения: 866
Благодарности: 318

Профиль | Отправить PM | Цитировать


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

Отправлено: 00:12, 26-05-2019 | #7


Новый участник


Сообщения: 36
Благодарности: 3

Профиль | Отправить PM | Цитировать


alpap,

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

Отправлено: 20:29, 26-05-2019 | #8


Ветеран


Сообщения: 866
Благодарности: 318

Профиль | Отправить PM | Цитировать


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

Отправлено: 16:38, 27-05-2019 | #9


Новый участник


Сообщения: 36
Благодарности: 3

Профиль | Отправить PM | Цитировать


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

Отправлено: 23:27, 02-06-2019 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Удаление символов в конце имени файлов в папке

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] Удаление файлов и папок более 255 символов diagnoz_ Windows Server 2012/2012 R2 20 09-05-2019 16:25
VBS/WSH/JS - VBS удаление файлов в папке по определенному имени и дате старше n Vooodi4356 Скриптовые языки администрирования Windows 5 25-03-2018 14:02
CMD/BAT - Удаление файлов старше N дней в подпаках, кроме файлов в самой папке Negtm Скриптовые языки администрирования Windows 4 03-02-2017 15:30
CMD/BAT - Переименование файлов в папке по имени папки_счётчик Sergo_zloy Скриптовые языки администрирования Windows 13 17-01-2014 16:58
CMD/BAT - Удаление старых файлов по имени файлов Bиктор Скриптовые языки администрирования Windows 1 19-04-2010 03:37




 
Переход