Показать полную графическую версию : удалить первые 7 символов в имени файла
ВиталийВ
01-04-2015, 15:12
Вообще не могу сообразить.
надо:
в папке C:\ftp\rpo
во всех именах файлов удалить первые 7 символов.
Помогите? ФОрум глядел сообразить не могу, префикс дописывать научился, сейчас его убрать надо, а не получается.
@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
ВиталийВ
02-04-2015, 11:45
Супер!!!!!!!!
Именно так, как хотелось!
ВиталийВ
02-04-2015, 14:38
а если все это нужно сделать почти так же,
НО
удалить первые символы в имени файла ДО "разделителя"
пример
614000-ks3218955.zip -> ks3218955.zip
@echo off
setlocal enableextensions enabledelayedexpansion
set sSourceFolder=C:\ftp\rpo
2>nul pushd "%sSourceFolder%" && (
for /f "usebackq delims=" %%i in (
`2^>nul dir /b /a:-d`
) do (
set sVar=%%~i
ren "%%~i" "!sVar:*-=!"
)
popd
) || (
echo Can't find source folder [%sSourceFolder%]
exit /b 1
)
endlocal
exit /b 0
ВиталийВ
02-04-2015, 17:31
А в этом варианте скрипта разделитель "-" тоже удалится? Его бы тоже ненадо оставлять.
Гуллипут
02-04-2015, 21:52
Iska, как всё-таки полезно общаться с мастерами ! Сколько раз использовал set с подстановкой, но как-то не зафиксировалось в голове, что можно в качестве str1 указать шаблон, начинающийся со звёздочки ! Очень полезный нюанс, при случае воспользуюсь.
Сколько раз использовал set с подстановкой, но как-то не зафиксировалось в голове, что можно в качестве str1 указать шаблон, начинающийся со звёздочки ! »
Я почерпнул это у коллеги gora (http://forum.oszone.net/member.php?userid=8802) вот здесь (http://forum.oszone.net/post-1942491.html#post1942491).
еще с ftp такая проблема бывает, как русские имена файлов с пробелами. Девочки выкладывают документики в папку, которая "расшарена по ftp" для клиентов.
Ничего более умного не нашел, как написать утилиту, которая просматривает папку и ренеймит документы, с нехорошими именами.
Но может быть есть более красивое решение скриптом?
eerrrtt32
30-07-2024, 12:00
Всем доброго дня!
Немного переработал скрипт под себя:
@echo off
:: Добавил строку кодаровки, чтобы работало с русскими именами и путями
chcp 1251
setlocal enableextensions enabledelayedexpansion
:: Убрал строку
:: set sSourceFolder=C:\ftp\rpo
:: Изменил строку
:: 2>nul pushd "%sSourceFolder%" && (
2>nul pushd && (
:: чтобы работало в конкретной папке
for /f "usebackq delims=" %%i in (
`2^>nul dir /b /a:-d`
) do (
set sVar=%%~i
:: Удалить все до символа "_"
ren "%%~i" "!sVar:*_=!"
)
popd
) || (
exit /b 1
)
endlocal
exit /b 0
Возник вопрос:
- Как сделать так, чтобы когда обнаруживаются одинаковые имена, скрипт автоматом добавлял в конец имени скажем "(2)" т.е. если файл 123.db уже есть, то следующий будет назван 123(2).db, 123(3).db и т.д. по счетчику? А не просто пропущен
megaloman
31-07-2024, 23:28
@Echo Off &Cls
>nul Chcp 1251
Set "BoxIn=Z:\Box_In"
rem Set "BoxIn=%~dp0"
Pushd "%BoxIn%"||(Echo Folder "%BoxIn%\" not found &Pause &Exit /B 2)
For /F "usebackq tokens=1* delims=_" %%f In (`2^>nul Dir /B /A:-D /O:D *_*.*`) Do Call :MyRen "%%f" "%%g"
Popd
Pause
Exit /B
:MyRen
Set /A i=1
Set "Suff="
:Begin
If Not Exist "%~n2%Suff%%~x2" (Ren "%~1_%~2" "%~n2%Suff%%~x2" &Exit /B)
Set /A i+=1
Set "Suff=(%i%)"
GoTo :Begin
Exit /B
eerrrtt32
01-08-2024, 17:03
megaloman,
Системе не удается найти указанный диск.
Folder "Z:\Box_In\" not found
Для продолжения нажмите любую клавишу . . .
И конец истории. При этом в рабочей папке ничего не происходит
megaloman
01-08-2024, 22:22
eerrrtt32, Вы вроде бы беретесь перерабатывать скрипты под себя, то есть должны понимать смысл написанного.
Итак, в переменной BoxIn содержится путь к Вашей папке. Батник при этом может быть где Вам удобно. Естественно, моя папка с тестовыми файлами к Вам не имеет никакого отношения. И аварийное сообщение Вам на это прямо указывает. Укажите свою.
Как альтернатива (закомментированная строка ) если батник и файлы в одной папке. Если нужно так - уберите rem
Не считаю хорошей идеей размещать батник и обрабатываемые файлы вместе
eerrrtt32
02-08-2024, 01:29
megaloman, больше спасибо! разобрался
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.