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

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

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

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


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

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


Вообще не могу сообразить.
надо:
в папке C:\ftp\rpo
во всех именах файлов удалить первые 7 символов.

Помогите? ФОрум глядел сообразить не могу, префикс дописывать научился, сейчас его убрать надо, а не получается.

Отправлено: 15:12, 01-04-2015

 

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


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

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


Всем доброго дня!
Немного переработал скрипт под себя:

Код: Выделить весь код
@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 и т.д. по счетчику? А не просто пропущен

Отправлено: 12:00, 30-07-2024 | #11



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

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


Ветеран


Contributor


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

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


Код: Выделить весь код
@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

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

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

Отправлено: 23:28, 31-07-2024 | #12


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


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

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


megaloman,
Код: Выделить весь код
Системе не удается найти указанный диск.
Folder "Z:\Box_In\" not found
Для продолжения нажмите любую клавишу . . .
И конец истории. При этом в рабочей папке ничего не происходит

Отправлено: 17:03, 01-08-2024 | #13


Ветеран


Contributor


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

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


eerrrtt32, Вы вроде бы беретесь перерабатывать скрипты под себя, то есть должны понимать смысл написанного.
Итак, в переменной BoxIn содержится путь к Вашей папке. Батник при этом может быть где Вам удобно. Естественно, моя папка с тестовыми файлами к Вам не имеет никакого отношения. И аварийное сообщение Вам на это прямо указывает. Укажите свою.
Как альтернатива (закомментированная строка ) если батник и файлы в одной папке. Если нужно так - уберите rem
Не считаю хорошей идеей размещать батник и обрабатываемые файлы вместе

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

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

Отправлено: 22:22, 01-08-2024 | #14


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


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

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


megaloman, больше спасибо! разобрался

Отправлено: 01:29, 02-08-2024 | #15



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - копирование выбранного файла в определенное место и добавление к имени файла даты x800 Скриптовые языки администрирования Windows 0 19-02-2014 20:39
Любой язык - [решено] Как открыть/удалить несколько файлов одного расширения без указания имени файла 9119 Скриптовые языки администрирования Windows 1 14-12-2012 15:42
CMD/BAT - [решено] Как из имени файла убрать 11 символов cdp75 Скриптовые языки администрирования Windows 3 26-04-2012 06:07
CMD/BAT - [решено] Созд.*.txt по имени файла, с перемещением *.txt и файла в папку с именем файла. OSArev Скриптовые языки администрирования Windows 2 30-01-2011 11:58
Длина имени входа пользователя более 20 символов L_Leorik Microsoft Windows NT/2000/2003 2 21-12-2009 13:49




 
Переход