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

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

Ответить
Настройки темы
Любой язык - [решено] Редактирование текста названия

Аватара для shao

Ветеран


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

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


Есть ли возможность с помощью скрипта реализовать такую задачу :

Есть группа файлов, много.Файлов много, руками долго и нудно...
Необходимо редактирование названия фалов, путём удаления части текста из названия.
Эта часть текста у всех файлов одинаковая.
Например:

Код: Выделить весь код
luna_msstyles_BLUE_USERTILEBACKGROUND_BMP.bmp

luna_msstyles_BLUE_TREEEXPANDCOLLAPSE_BMP.bmp
Нужно удалить у группы файлов выделенную часть текста. выделенное курсивом - оставить.
И так во всех файлах.
Подскажите пожалуйста как сделать.

З.Ы. Если возможно - желательно пакетным файлом (bat/cmd)

Отправлено: 09:45, 01-07-2010

 

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


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

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


Самый простой способ
*для случаев когда первая часть имени разная, но содержит одинаковое число символов, например 45fad7da5dfr7eyr4tr7gfr. name.*

Код: Выделить весь код
Echo off&Chcp 866&SetLocal EnableDelayedExpansion

set $DSF=F:\dr_0014\*.bmp & rem папка с твоими файлами и тип файла
for /f %%a in ('Dir /b %$DSF%') do (set $SFN=%%a & ren !$SFN! !$SFN:~19! )
rem "~19" число первых символов в имени под обрезку
pause
endlocal & goto :eof
Второй способ:
*с указанием заменяемого текста в имени файлов

Код: Выделить весь код
Echo off&Chcp 866&SetLocal EnableDelayedExpansion

set $DSF=F:\dr_0014\*.bmp
set del=luna_msstyles_BLUE_
for /f %%a in ('Dir /b %$DSF%') do (set $SFN=%%a & ren !$SFN! !$SFN:%del%=! )
pause
endlocal & goto :eof

Последний раз редактировалось deepred, 01-07-2010 в 11:08.

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

Отправлено: 10:28, 01-07-2010 | #2



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

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


Аватара для El Sanchez

Ветеран


Contributor


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

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


shao,

Код: Выделить весь код
@Echo Off
Set Source=C:\Source\*.bmp

For %%A In ("%Source%") Do (
	For /F "Tokens=4 Delims=_" %%B In ("%%A") Do (
		Ren "%%A" %%B.bmp
	)
)
Это сообщение посчитали полезным следующие участники:

Отправлено: 11:34, 01-07-2010 | #3


Аватара для shao

Ветеран


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

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


deepred, El Sanchez, спасибо буду пробовать. Потом отпишусь.
Единственное ,El Sanchez, не понятно в Вашем скрипте , где часть текста , которая удаляется !

Эта , выделенная ? :

Код: Выделить весь код
@Echo Off
Set Source=C:\Source\*.bmp

For %%A In ("%Source%") Do (
	For /F "Tokens=4 Delims=_" %%B In ("%%A") Do (
		Ren "%%A" %%B.bmp
	)
)
Как я понял, вместо C:\Source указываю свой путь , а что ещё ?

deepred, попробовал Ваш второй скрипт.

Вот...


Видимо я что-то не так делаю.

Отправлено: 17:46, 02-07-2010 | #4


Аватара для El Sanchez

Ветеран


Contributor


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

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


Цитата shao:
Как я понял, вместо C:\Source указываю свой путь , а что ещё ? »
Больше нигде, только путь поменять.

Цитата shao:
Единственное ,El Sanchez, не понятно в Вашем скрипте , где часть текста , которая удаляется ! »
Первый цикл For %%A In ("%Source%") Do выдаст поочередно в переменную %%A полный путь и имя файла bmp, цикл в цикле For /F "Tokens=4 Delims=_" %%B In ("%%A") Do разобъет %%A на подстроки, разделенные символом _ (как видно из luna_msstyles_BLUE_USERTILEBACKGROUND_BMP.bmp, имя файла можно разбить на подстроки, разделенные _, и в данном случае нас интересует 4-я подстрока, ее же и фильтруем, указывая for-у - "Tokens=4"(берем только 4-й токен) и Delims=_ (указываем разделитель подстрок)) и присвоит переменной %%B нужный 4-й токен. В итоге имеем полный путь к файлу и нужное новое имя, команда же Ren "%%A" %%B.bmp переименует файл.
Это сообщение посчитали полезным следующие участники:

Отправлено: 20:55, 02-07-2010 | #5


Аватара для shao

Ветеран


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

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


El Sanchez, Отлично ! Спасибо за скрипт и за подробное разъяснение !


А как будет выглядеть скрипт , если отсутствует разделительный знак "_" ?
Например:

Shell32.backup USERTILEBACKGROUND.bmp

Отправлено: 00:04, 03-07-2010 | #6


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


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

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


такая же тема, но *****.vbs
Код: Выделить весь код
 Option Explicit 
Dim objFSO, objFile
Dim strPath2SourceFolder, strSourceName
Dim intPrefix, strobjFileName, strobjFileExtension
Dim intErrLevel
   
strPath2SourceFolder   = "F:\2\part_name\dir_0014"
strSourceName="luna_msstyles_BLUE_"
intPrefix   = Len(strSourceName)   
intErrLevel = 0

Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")      
If objFSO.FolderExists(strPath2SourceFolder) Then        
For Each objFile In objFSO.GetFolder(strPath2SourceFolder).Files
If UCase(Left(objFile.Name, intPrefix)) = UCase(strSourceName) Then
strobjFileName = Replace(objFSO.GetBaseName(objfile.Name), strSourceName, "",1)
strobjFileExtension = Mid(objFSO.GetExtensionName(objFile.Name),1)

objFile.COPY strPath2SourceFolder & "\" & strobjFileName & "." & strobjFileExtension
objFile.Delete         
End If          
Next
Else
WScript.Echo "Source folder [" & strPath2SourceFolder & "] is not exists."     
intErrLevel = 1
End If 
Set objFSO = Nothing 
WScript.Quit intErrLevel
и последний *.bat

Код: Выделить весь код
Echo on&Chcp 866&SetLocal EnableDelayedExpansion&cls

set $DSF=F:\2\part_name\dir_0014\*.bmp
set del1=luna_msstyles_BLUE_
set del2=_BMP

for %%a in ("%$DSF%") do call :action "%%a" "%%~nxa" 
pause & goto :eof

:action
set $SFN=%~1 && set $SFNn=%~2 && set $SFNn=!$SFNn:%del1%=! && set $SFNn=!$SFNn:%del2%=!
ren %$SFN% %$SFNn%
endlocal & goto :eof

Последний раз редактировалось deepred, 03-07-2010 в 02:52.

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

Отправлено: 02:13, 03-07-2010 | #7


Аватара для shao

Ветеран


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

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


Цитата deepred:
такая же тема, но *****.vbs »
Цитата deepred:
и последний *.bat »
Спасибо ! Работает. Этот скрипт более универсальней, но в нем удаляется только часть названия

Код: Выделить весь код
luna_msstyles_BLUE_
, а
Код: Выделить весь код
 _BMP
остаётся...

Удаляемая часть названия не есть сплошная, а разделена , собственно самим названием , которое нужно оставить....

Отправлено: 02:40, 03-07-2010 | #8


Аватара для shao

Ветеран


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

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


Цитата deepred:
и последний *.bat »
Спасибо! Всё работает!
Вопрос решён.

Отправлено: 09:18, 03-07-2010 | #9


Аватара для El Sanchez

Ветеран


Contributor


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

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


Цитата shao:
А как будет выглядеть скрипт , если отсутствует разделительный знак "_" ?
Например:
Shell32.backup USERTILEBACKGROUND.bmp »
Здесь уже разделителем является пробел, который делит строку на 2 подстроки, нужный токен - 2 (Tokens=2). Delims в for-e можно явно и не указывать, т.к. пробел - это разделитель по-умолчанию и других символов-разделителей в данном случае не используется, по-этому:

Код: Выделить весь код
@Echo Off
Set Source=C:\Source\*.bmp

For %%A In ("%Source%") Do (
	For /F "Tokens=2" %%B In ("%%A") Do (
		Ren "%%A" %%B.bmp
	)
)
Это сообщение посчитали полезным следующие участники:

Отправлено: 10:44, 03-07-2010 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Почта - Редактирование простого текста Сергей_на_зоне Программное обеспечение Windows 6 08-04-2010 12:58
Названия инструментов, ПО.. M1sha Хочу все знать 2 25-08-2009 21:43
[решено] Редактирование статического текста во Flash Spartaker Вебмастеру 2 10-09-2008 03:32
Муз. файлы и их названия united Хочу все знать 1 14-04-2007 13:52
Сохранение названия CD в Windows garober Microsoft Windows 95/98/Me (архив) 4 11-01-2005 10:14




 
Переход