Показать полную графическую версию : [решено] Скрипт по переименованию файлов
Patroklos
02-12-2017, 06:19
Здравствуйте, хочу переименовать файлы оставив только часть имени. Накидал скрипт но он не фунциклирует. И главное с 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!
)
Есть ли в именах файлов «пробельные» символы, что будет, если имена заключить в кавычки:
ren "%SourceFolder%\%%~nxa" "!ShortName!"
? Покажите код с echo, и что он Вам пишет.
Patroklos
02-12-2017, 08:22
Блин, старею :(
Забыл про скобки. Спасибо.
Переименовало все файлы как надо, кроме тех
у которых в имени есть восклицательный знак.
Что то можно поделать?
megaloman
02-12-2017, 09:04
@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
Что то можно поделать? »
Убрать «enabledelayedexpansion», делать двойное раскрытие переменных окружения внутри скобок по «call». Готовый пример — в предыдущем сообщении.
на мой взгляд второй раз писать 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
на мой взгляд второй раз писать call лишнее, можно одним обойтись: »
А я недоглядел даже :).
Patroklos
02-12-2017, 15:08
Всем огромное спасибо! Я пока проверил способ от megaloman и он работает отлично. Способ от alpap проверю позже но очевидно что он тоже работает :)
Вы крутые!
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.