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

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

Ответить
Настройки темы
CMD/BAT - [решено] Скрипт по переименованию файлов

Пользователь


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

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


Здравствуйте, хочу переименовать файлы оставив только часть имени. Накидал скрипт но он не фунциклирует. И главное с echo пишет мне нужные названия файлов а с ren не работает. Подскажите пожалуйста где я портачу.
Код: Выделить весь код
set SourceFolder=E:\20171130
setlocal enableextensions enabledelayedexpansion
for %%a in (%SourceFolder%\*.*) do (
set OrigName=%%~na
set ShortName=!OrigName:~-12,11!%%~xa
ren %SourceFolder%\%%~nxa !ShortName!
)

Отправлено: 06:19, 02-12-2017

 

Ветеран


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

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


Есть ли в именах файлов «пробельные» символы, что будет, если имена заключить в кавычки:
Код: Выделить весь код
ren "%SourceFolder%\%%~nxa" "!ShortName!"
? Покажите код с echo, и что он Вам пишет.
Это сообщение посчитали полезным следующие участники:

Отправлено: 07:58, 02-12-2017 | #2



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

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


Пользователь


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

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


Блин, старею
Забыл про скобки. Спасибо.
Переименовало все файлы как надо, кроме тех
у которых в имени есть восклицательный знак.
Что то можно поделать?

Отправлено: 08:22, 02-12-2017 | #3


Ветеран


Contributor


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

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


Код: Выделить весь код
@Echo Off
set "SourceFolder=E:\20171130"

for %%a in (%SourceFolder%\*.*) do Call :RenFiles "%%a" -12 11
GoTo :Eof

:RenFiles
	Set "OrigName=%~n1"
	Call Set "ShortName=%%OrigName:~%2,%3%%%~x1"
	ren %1 "%ShortName%"
GoTo :Eof

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


Последний раз редактировалось megaloman, 02-12-2017 в 10:22.

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

Отправлено: 09:04, 02-12-2017 | #4


Ветеран


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

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


Цитата Patroklos:
Что то можно поделать? »
Убрать «enabledelayedexpansion», делать двойное раскрытие переменных окружения внутри скобок по «call». Готовый пример — в предыдущем сообщении.

Отправлено: 10:14, 02-12-2017 | #5


Ветеран


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

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


на мой взгляд второй раз писать call лишнее, можно одним обойтись:
Код: Выделить весь код
@echo off
set "SourceFolder=E:\20171130"

pushd "%SourceFolder%"
 for %%a in (*) do set "name=%%~na"& call :_rn "%%a" "%%name:~-12,11%%%%~xa"
popd
pause& exit

:_rn
 ren "%~1" "%~2"
exit /b
Это сообщение посчитали полезным следующие участники:

Отправлено: 14:23, 02-12-2017 | #6


Ветеран


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

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


Цитата alpap:
на мой взгляд второй раз писать call лишнее, можно одним обойтись: »
А я недоглядел даже .

Отправлено: 14:38, 02-12-2017 | #7


Пользователь


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

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


Всем огромное спасибо! Я пока проверил способ от megaloman и он работает отлично. Способ от alpap проверю позже но очевидно что он тоже работает
Вы крутые!

Отправлено: 15:08, 02-12-2017 | #8



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Любой язык - скрипт по копирвоанию и последующего удаления файлов по маске названия файла santey007 Скриптовые языки администрирования Windows 19 22-12-2015 10:43
Любой язык - Скрипт для распределения файлов по папкам кучками по n-ому размеру DmitryAnatolich Скриптовые языки администрирования Windows 9 06-05-2013 15:20
VBS/WSH/JS - Скрипт поиска файлов по расширению Rusya89 Скриптовые языки администрирования Windows 7 17-08-2012 21:02
CMD/BAT - Не работает скрипт сортировки файлов по папкам dark-------13 Скриптовые языки администрирования Windows 0 27-01-2012 23:11
CMD/BAT - [решено] Скрипт сортировки и копирования файлов по маске Daemonstar Скриптовые языки администрирования Windows 2 25-09-2010 15:47




 
Переход