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

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

Ответить
Настройки темы
CMD/BAT - [решено] Переименование файлов с заменой символов по маске

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


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

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


Здравствуйте!
Нужно очень сделать батничек, который переименовывает файлы PDF, а конкретнее заменяет в названиях существующих файлов символы " ", "_","+","=","&" на "-".
Я сделал что так что бы заменял только один символ, а вот как подставит регулярное выражение не пойму.

renamer.bat:
Код: Выделить весь код
for %%g in (*.pdf) do call :s_subroutine "%%~nxg" "%%g"
:s_subroutine
set _sss=%1
set _ddd=%_sss:_=-%
ren %2 %_ddd%
goto :eof
set _ddd=%_sss:_=-% вот эта строка заменяет все символы "_" на символ "-", а вот как здесь пристроить регулярное выражение мне не понятно.

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

Отправлено: 13:43, 25-01-2010

 

Ветеран


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

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


WSH:
читать дальше »
Код: Выделить весь код
Option Explicit

Dim strSourceFolder

Dim objFSO
Dim objFile

Dim strFormatCurrDate


strSourceFolder = "E:\Песочница\0399"

Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")

If objFSO.FolderExists(strSourceFolder) Then
	strFormatCurrDate = Right("00" & CStr(Month(Date())), 2) & Right("00" & CStr(Day(Date())), 2)
	
	With WScript.CreateObject("VBScript.RegExp")
		.IgnoreCase = True
		.Pattern    = "(.*#)(.*)(#.*\.txt)"
		
		For Each objFile In objFSO.GetFolder(strSourceFolder).Files
			If .Test(objFile.Name) Then
				objFile.Name = Replace(.Replace(objFile.Name, "$1" & ":" & "$3"), ":", strFormatCurrDate)
			End If
		Next
	End With
Else
	WScript.Echo "Can't find source folder [" & strSourceFolder & "]."
	WScript.Quit 1
End If

Set objFSO = Nothing

WScript.Quit 0

PoSH:
читать дальше »
Код: Выделить весь код
$sSourceFolder = "E:\Песочница\0399"
$sMask         = "(.*#)(.*)(#.*\.txt)"

if(Test-Path -Path $sSourceFolder -PathType Container) {
    $sFormatCurrDate = Get-Date -Format "MMdd"
    
    Get-ChildItem -Path $sSourceFolder |`
        ForEach-Object -Process {
            if(!$_.PSIsContainer) {
                if($_.Name -match $sMask) {
                    Rename-Item -Path $_.FullName -NewName ($_.Name -replace $sMask, '$1:$3').replace(":", $sFormatCurrDate)
                }
            }
        }
} else {
    Write-Host "Can't find source folder [$sSourceFolder]." -ForegroundColor Red
}

CMD:
читать дальше »
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

set sSourceFolder=E:\Песочница\0399

if exist "%sSourceFolder%\." (
	call :GetFormatDateTime
	
	pushd "%sSourceFolder%"
	
	for /f "usebackq delims=" %%i in (
		`2^>nul dir /b /a:-d "%sSourceFolder%\*.*" ^| findstr.exe ".*#.*#.*\.txt"`
	) do (
		set sOldName=%%~i
		call :GetNewName "!sOldName:#=" "!"
		ren "%%~i" "!NewName!"
	)
	
	popd
) else (
	echo Can't find source folder [%sSourceFolder%].
	exit /b 1
)

endlocal
exit /b 0
rem ==========================================================================

rem ==========================================================================
:GetNewName
	setlocal enableextensions enabledelayedexpansion
	
	set sProcName=%~0
	
	endlocal & set %sProcName:~4%=%~1#%FormatDateTime%#%~3
	exit /b 0
rem ==========================================================================

rem ==========================================================================
rem Функция GetFormatDateTime()
rem
rem Серый форум (http://forum.script-coding.com)
rem ==========================================================================
:GetFormatDateTime
	setlocal enableextensions enabledelayedexpansion
	
	set sProcName=%~0
	for /f "delims=." %%i in ('wmic.exe OS get LocalDateTime ^| find "."') do set sDateTime=%%i
	
	endlocal & set %sProcName:~4%=%sDateTime:~4,4%
	exit /b 0
rem ==========================================================================

Отправлено: 05:15, 30-09-2014 | #41



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

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


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


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

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


доброй ночи..
мне тоже надо по маске символы переименовать но выходит как то криво.
вот:

имеються 2 или больше файла
appliedenergistics2-rv3-beta-5.jar
appliedenergistics2-rv2-stable-10.jar
я их переименовываю так
rename "%BINDIR%appliedenergistics2-rv3-*.jar" "2_6_appliedenergistics2-rv3-*.jar"
rename "%BINDIR%appliedenergistics2-rv2-*.jar" "2_6_appliedenergistics2-rv2-*.jar"
а получаеться это
2_6_appliedenergistics2-rv2-le-10.jar
2_6_appliedenergistics2-rv3--5.jar
куда то теряются 4 символа полсе знака -
должно быть так
2_6_appliedenergistics2-rv2-stable-10.jar
2_6_appliedenergistics2-rv3-beta-5.jar
%BINDIR% путь к паке где лежит батник и файлы
в идеале мне надо что бы bat находил фйал по шаблону "appliedenergistics2*.jar" или такому "GTTweaker-1*.jar и
добавлял в начале имени например 2_6_ и любое другое по моему выбору а имя целеком не трогал
но заметил что символы между - . и первой точкой в имени исчезают
например как тут 1_0_galacticgreg-0.7.jar
rename "%BINDIR%galacticgreg-0*.jar" "1_0_galacticgreg-0*.jar"
0 теряется по этому я его дописал выше -0
сечас батник такова вида
@echo on
SET BINDIR=%~dp0
CD /D "%BINDIR%"
set poi1=jar*
set poi2=zip*
set poi3=litemod*
set Rnam=INFO_
rename "%BINDIR%CraftGuide-1*.jar" "%Rnam%GUI_S_CraftGuide-1*.jar"
rename "%BINDIR%LLOverlayReloaded-1*.jar" "%Rnam%GUI_LLOverlayReloaded-1*.jar"
rename "%BINDIR%IC2.Nei.Plugin.Version*.jar" "%Rnam%GUI_3_S_IC2.Nei.Plugin.Version*.jar"

смог сам найти решение
Код: Выделить весь код
@echo on
SET BINDIR=%~dp0
CD /D "%BINDIR%"
set poi1=jar*
set poi2=zip*
set poi3=litemod*
rem RM
for /f "tokens=*" %%a in ('dir /b "%BINDIR%ElectriCraft 1*.jar"') do ren "%BINDIR%%%a" "%Rnam%2_RM_%%a"
for /f "tokens=*" %%a in ('dir /b "%BINDIR%ReactorCraft 1*.jar"') do ren "%BINDIR%%%a" "%Rnam%2_RM_%%a"
for /f "tokens=*" %%a in ('dir /b "%BINDIR%RotaryCraft 1*.jar"') do ren "%BINDIR%%%a" "%Rnam%2_RM_%%a"
for /f "tokens=*" %%a in ('dir /b "%BINDIR%ChromatiCraft 1*.jar"') do ren "%BINDIR%%%a" "%Rnam%3_RM_%%a"
for /f "tokens=*" %%a in ('dir /b "%BINDIR%ExpandedRedstone 1*.jar"') do ren "%BINDIR%%%a" "%Rnam%8_RM_%%a"
for /f "tokens=*" %%a in ('dir /b "%BINDIR%UsefulTNT 1*.jar"') do ren "%BINDIR%%%a" "%Rnam%8_RM_%%a"
for /f "tokens=*" %%a in ('dir /b "%BINDIR%DragonAPI 1*.jar"') do ren "%BINDIR%%%a" "%Rnam%0EXT_LIB_RM_%%a"
for /f "tokens=*" %%a in ('dir /b "%BINDIR%LegacyCraft 1*.jar"') do ren "%BINDIR%%%a" "%Rnam%0_RM_%%a"
for /f "tokens=*" %%a in ('dir /b "%BINDIR%CaveControl 1*.jar"') do ren "%BINDIR%%%a" "%Rnam%GEN_RM_%%a"
for /f "tokens=*" %%a in ('dir /b "%BINDIR%GeoStrata 1*.jar"') do ren "%BINDIR%%%a" "%Rnam%GEN_RM_%%a"
for /f "tokens=*" %%a in ('dir /b "%BINDIR%TerritoryZone 1*.jar"') do ren "%BINDIR%%%a" "%Rnam%GUI_S_RM_%%a"
for /f "tokens=*" %%a in ('dir /b "%BINDIR%CritterPet 1*.jar"') do ren "%BINDIR%%%a" "%Rnam%MOB_RM_%%a"
for /f "tokens=*" %%a in ('dir /b "%BINDIR%VoidMonster 1*.jar"') do ren "%BINDIR%%%a" "%Rnam%MOB_RM_%%a"
for /f "tokens=*" %%a in ('dir /b "%BINDIR%CondensedOres 1*.jar"') do ren "%BINDIR%%%a" "%Rnam%RM_%%a"
for /f "tokens=*" %%a in ('dir /b "%BINDIR%MeteorCraft 1*.jar"') do ren "%BINDIR%%%a" "%Rnam%RM_%%a"
set Rnam=INFO_
for /f "tokens=*" %%a in ('dir /b "%BINDIR%CraftGuide-1*.jar"') do ren "%BINDIR%%%a" "%Rnam%GUI_S_%%a"
for /f "tokens=*" %%a in ('dir /b "%BINDIR%LLOverlayReloaded-1*.jar"') do ren "%BINDIR%%%a" "%Rnam%GUI_%%a"

Последний раз редактировалось DonQuixote, 29-03-2016 в 18:18. Причина: решено


Отправлено: 03:40, 29-03-2016 | #42



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Система - [addon] Internet Explorer 8 Rus (с заменой файлов IE6) версия 14.5.3 jameszero Наборы обновлений для Windows XP/2003/Windows 7 955 22-01-2021 22:59
Система - [addon] Internet Explorer 7 Rus (с заменой файлов IE6) версия 14.5.3 jameszero Наборы обновлений для Windows XP/2003/Windows 7 1277 06-02-2015 16:30
CMD/BAT - [решено] Перемещение и удаление файлов по условию и маске VitHAK Скриптовые языки администрирования Windows 14 23-12-2013 08:57
Установка - Помогите с заменой файлов в дистрибутиве AlexThePeacemaker Microsoft Windows 2000/XP 0 12-12-2009 11:42
Разрешение записи файлов по маске Green_Fox Microsoft Windows 2000/XP 5 11-08-2006 12:35




 
Переход