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

Patroklos 02-12-2017 06:19 2781623

Скрипт по переименованию файлов
 
Здравствуйте, хочу переименовать файлы оставив только часть имени. Накидал скрипт но он не фунциклирует. И главное с 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!
)


Iska 02-12-2017 07:58 2781627

Есть ли в именах файлов «пробельные» символы, что будет, если имена заключить в кавычки:
Код:

ren "%SourceFolder%\%%~nxa" "!ShortName!"
? Покажите код с echo, и что он Вам пишет.

Patroklos 02-12-2017 08:22 2781630

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

megaloman 02-12-2017 09:04 2781633

Код:

@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


Iska 02-12-2017 10:14 2781641

Цитата:

Цитата Patroklos
Что то можно поделать? »

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

alpap 02-12-2017 14:23 2781699

на мой взгляд второй раз писать 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


Iska 02-12-2017 14:38 2781702

Цитата:

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

А я недоглядел даже :).

Patroklos 02-12-2017 15:08 2781703

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


Время: 00:04.

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