CMD/BAT - [решено] Помощь с написанием Bat. Переименование файлов в папке с условием.
-
dedylka
CMD/BAT - [решено] Помощь с написанием Bat. Переименование файлов в папке с условием.
Приветствую вас, гуру сообщество)
Прошу помощи в написании пакетного файла, если таковой возможно написать.
условия задачи следующие:
есть две сетевые папки "А" и "B"
в папку "A" кладут n-ое кол-во файлов с расширением .mp3 в папке "B" лежит n-ое кол-во файлов с расширением .mp4
задача:
по запуску пакетного файла смотреть на имена .mp3 файлов в папке "A" и переименовать файлы .mp4 в папке "B" в соответствии с именами в "A", не трогая при этом расширение.
Пример: положили в папку "А" - 3 файла с именами 1.mp3, 2.mp3, 3.mp3.
в папке "B" лежат файлы 10.mp4, 12.mp4, 16.mp4, 20.mp4, 25.mp4
Запускаем пакетный файл и получаем в папке "B" файлы с именами 1.mp4, 2.mp4, 3.mp4, 20.mp4, 25.mp4
Содержимое файлов mp4. абсолютно одинаковое, поэтому не важно в какой последовательности они будут переименованы.
В папку "A" могут положить больше файлов чем есть в папке "B", в таком случае переименование идет пока не закончатся файлы в папке "B".
Прошу помощи в написании пакетного файла, если таковой возможно написать.
условия задачи следующие:
есть две сетевые папки "А" и "B"
в папку "A" кладут n-ое кол-во файлов с расширением .mp3 в папке "B" лежит n-ое кол-во файлов с расширением .mp4
задача:
по запуску пакетного файла смотреть на имена .mp3 файлов в папке "A" и переименовать файлы .mp4 в папке "B" в соответствии с именами в "A", не трогая при этом расширение.
Пример: положили в папку "А" - 3 файла с именами 1.mp3, 2.mp3, 3.mp3.
в папке "B" лежат файлы 10.mp4, 12.mp4, 16.mp4, 20.mp4, 25.mp4
Запускаем пакетный файл и получаем в папке "B" файлы с именами 1.mp4, 2.mp4, 3.mp4, 20.mp4, 25.mp4
Содержимое файлов mp4. абсолютно одинаковое, поэтому не важно в какой последовательности они будут переименованы.
В папку "A" могут положить больше файлов чем есть в папке "B", в таком случае переименование идет пока не закончатся файлы в папке "B".
-
Iska
Re: CMD/BAT - [решено] Помощь с написанием Bat. Переименование файлов в папке с условием.
Цитата dedylka:
Запускаем пакетный файл и получаем в папке "B" файлы с именами 1.mp4, 2.mp4, 3.mp4, 20.mp4, 25.mp4
Содержимое файлов mp4. абсолютно одинаковое, поэтому не важно в какой последовательности они будут переименованы.
И по какому принципу устанавливать соответствие между файлами в A и B?
Запускаем пакетный файл и получаем в папке "B" файлы с именами 1.mp4, 2.mp4, 3.mp4, 20.mp4, 25.mp4
Содержимое файлов mp4. абсолютно одинаковое, поэтому не важно в какой последовательности они будут переименованы.
CMD/BAT - [решено] Помощь с написанием Bat. Переименование файлов в папке с условием.
И по какому принципу устанавливать соответствие между файлами в A и B?
-
megaloman
Re: CMD/BAT - [решено] Помощь с написанием Bat. Переименование файлов в папке с условием.
R.i.m.s.k.y.,
Код:
Нарисуйте свой путь вместо моего Set "In=Z:\Soft_In"
Код:
Код: Выделить всё
@Echo Off
Set "In=Z:\Soft_In"
Set InE=".C.wav" ".L.wav" ".R.wav" ".SL.wav" ".SR.wav"
Set OutE=" C.wav" " L.wav" " R.wav" " Ls.wav" " Rs.wav"
Set /A N=1000
FOR %%f IN (%InE%) DO Set /A N+=1 &Call Set "In@%%N%%=%%~f"
Set /A NN=%N%
Set /A N=1000
FOR %%f IN (%OutE%) DO Set /A N+=1 &Call Set "Out@%%N%%=%%~f"
For /L %%i In (1001,1,%NN%) DO Call :MyRen "%In%" "%%In@%%i%%" "%%Out@%%i%%"
GoTo :Eof
:MyRen
FOR %%f IN ("%~1\*%~2") DO (
Set "Rep=%%~nxf~~"
>nul Call Move /Y "%%f" "%~1\%%Rep:%~2~~=%~3%%"
)
GoTo :EofНарисуйте свой путь вместо моего Set "In=Z:\Soft_In"
-
dedylka
Re: CMD/BAT - [решено] Помощь с написанием Bat. Переименование файлов в папке с условием.
Тогда зачем их там делать несколько штук? Или больше, чем есть mp3-файлов? Пусть один и будет.
На WSH:
Скрытый текст
[spoiler]Код: [/spoiler]
Может, лучше опишете саму задачу?
На WSH:
Скрытый текст
[spoiler]Код: [/spoiler]
Код: Выделить всё
Option Explicit
Dim strSourceFolder
Dim strDestFolder
Dim objFSO
Dim objFile
Dim objFile2
Dim boolFound
strSourceFolder = "C:\Мои проекты\0252\A"
strDestFolder = "C:\Мои проекты\0252\B"
Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
If objFSO.FolderExists(strSourceFolder) Then
If objFSO.FolderExists(strSourceFolder) Then
boolFound = False
For Each objFile2 In objFSO.GetFolder(strDestFolder).Files
If StrComp(objFSO.GetExtensionName(objFile2.Name), "mp4", 0) = 0 Then
boolFound = True
Exit For
End If
Next
If boolFound Then
boolFound = False
For Each objFile In objFSO.GetFolder(strSourceFolder).Files
If StrComp(objFSO.GetExtensionName(objFile.Name), "mp3", 0) = 0 Then
boolFound = True
objFile2.Copy objFSO.BuildPath(objFile2.ParentFolder, objFSO.GetBaseName(objFile.Name) & "." & objFSO.GetExtensionName(objFile2)), True
End If
Next
If boolFound Then
objFile2.Delete True
End If
Else
WScript.Echo "Need at least one mp4 file in destination folder [" & strDestFolder & "]."
WScript.Quit 3
End If
Else
WScript.Echo "Can't find destination folder [" & strDestFolder & "]."
WScript.Quit 2
End If
Else
WScript.Echo "Can't find source folder [" & strSourceFolder & "]."
WScript.Quit 1
End If
Set objFSO = Nothing
WScript.Quit 0Может, лучше опишете саму задачу?
-
dedylka
Re: CMD/BAT - [решено] Помощь с написанием Bat. Переименование файлов в папке с условием.
Цитата Iska:
Может, лучше опишете саму задачу?
Есть система визуализации аудиофайлов. Играет некий плейлист из mp3 файлов, программа при запуске файла смотрит на его имя и сканирует другую папку на наличие файла mp4 с таким же именем, если находит картинка запускается на экран, не находит не запускается. Т.к. некоторая часть mp4 файлов одинаковая, задача облегчить жизнь людям, которые эти файлы переименовывают руками.
Цитата Iska:
На WSH
Простите, я не настоящий сварщик( Чтобы запустить этот скрипт нужно дополнительное ПО?
Может, лучше опишете саму задачу?
CMD/BAT - [решено] Помощь с написанием Bat. Переименование файлов в папке с условием.
Есть система визуализации аудиофайлов. Играет некий плейлист из mp3 файлов, программа при запуске файла смотрит на его имя и сканирует другую папку на наличие файла mp4 с таким же именем, если находит картинка запускается на экран, не находит не запускается. Т.к. некоторая часть mp4 файлов одинаковая, задача облегчить жизнь людям, которые эти файлы переименовывают руками.
Цитата Iska:
На WSH
CMD/BAT - [решено] Помощь с написанием Bat. Переименование файлов в папке с условием.
Простите, я не настоящий сварщик( Чтобы запустить этот скрипт нужно дополнительное ПО?
-
dedylka
Re: CMD/BAT - [решено] Помощь с написанием Bat. Переименование файлов в папке с условием.
Цитата dedylka:
Чтобы запустить этот скрипт нужно дополнительное ПО?
Нет. Сохранить в файл с расширением .vbs и запустить.
dedylka, вопрос по:
Цитата dedylka:
некоторая часть mp4 файлов одинаковая,
А какая? Вообще, по уму, при одинаковости файлов, я бы даже не копии делал, а жёсткие ссылки на оригинал создавал, которые не занимают места на диске. Но тут уже, наверное, PowerShell будет потребен.
Чтобы запустить этот скрипт нужно дополнительное ПО?
CMD/BAT - [решено] Помощь с написанием Bat. Переименование файлов в папке с условием.
Нет. Сохранить в файл с расширением .vbs и запустить.
dedylka, вопрос по:
Цитата dedylka:
некоторая часть mp4 файлов одинаковая,
CMD/BAT - [решено] Помощь с написанием Bat. Переименование файлов в папке с условием.
А какая? Вообще, по уму, при одинаковости файлов, я бы даже не копии делал, а жёсткие ссылки на оригинал создавал, которые не занимают места на диске. Но тут уже, наверное, PowerShell будет потребен.
-
dedylka
Re: CMD/BAT - [решено] Помощь с написанием Bat. Переименование файлов в папке с условием.
Код:
если стр.14 изменить так
Код:
код будет переименовывать файлы в "B" именами файлов из "A" по кругу вот так
Код: Выделить всё
@echo off
set "dirA=A"
set "dirB=B"
setlocal enabledelayedexpansion
for /f "delims=" %%a in ('dir /a-d/b "%dirA%\*"') do set /a "n+=1,nx=n+1,x=0"& set "c!n!=%%~na"
for /f "delims=" %%a in ('dir /a-d/b "%dirB%\*"') do set /a m+=1& set "l!m!=%%a"& call :# "%%l!m!%%" "%%c!m!%%" "%dirA%" "%dirB%"
endlocal
pause& exit
:#
if not "%~2"=="" (set "z=%~2") else (set /a x+=1& if not !x!==%nx% (call set "z=%%c!x!%%") else (set /a x=0& goto #))
pushd "%~4"
if not exist "%z%%~x1" ren "%~1" "%z%%~x1"
popd
exit /bесли стр.14 изменить так
Код:
Код: Выделить всё
if not exist "%~n1_%z%%~x1" ren "%~1" "%~n1_%z%%~x1"код будет переименовывать файлы в "B" именами файлов из "A" по кругу вот так
Файл 156828
-
Iska
Re: CMD/BAT - [решено] Помощь с написанием Bat. Переименование файлов в папке с условием.
Цитата Iska:
А какая?
совсем небольшая, буквально капля в море, но требующая внимания, поэтому хочется этот процесс автоматизировать.
Цитата Iska:
Нет. Сохранить в файл с расширением .vbs и запустить.
спасибо большое, я протестировал скрипт, но он у меня отрабатывает немного некорректно(
он переименовывает первый файл, а дальше видимо копирует его столько раз сколько файлов в папке A и называет нужными именами, при этом остальные файлы в папке B, которые не были переименованы просто оставляет.
Таким образом папка B очень скоро будет завалена файлами(
А какая?
CMD/BAT - [решено] Помощь с написанием Bat. Переименование файлов в папке с условием.
совсем небольшая, буквально капля в море, но требующая внимания, поэтому хочется этот процесс автоматизировать.
Цитата Iska:
Нет. Сохранить в файл с расширением .vbs и запустить.
CMD/BAT - [решено] Помощь с написанием Bat. Переименование файлов в папке с условием.
спасибо большое, я протестировал скрипт, но он у меня отрабатывает немного некорректно(
он переименовывает первый файл, а дальше видимо копирует его столько раз сколько файлов в папке A и называет нужными именами, при этом остальные файлы в папке B, которые не были переименованы просто оставляет.
Таким образом папка B очень скоро будет завалена файлами(
-
alpap
Re: CMD/BAT - [решено] Помощь с написанием Bat. Переименование файлов в папке с условием.
помогите, пожалуйста, с батником для переименования
Суть: нужно перекодировать dts в ас3
из dts вытаскиваем wav программой eac3to, она выдает файлы вида
2eng.C.wav
2eng.L.wav
2eng.LFE.wav
2eng.R.wav
2eng.SL.wav
2eng.SR.wav
а программа кодировщик хочет
2eng C.wav
2eng L.wav
2eng LFE.wav
2eng R.wav
2eng Ls.wav
2eng Rs.wav
т.е. после 2eng вместо точки поставить пробел и два файла переименовать:
2eng.SL.wav -> 2eng Ls.wav
2eng.SR.wav -> 2eng Rs.wav
имена вавок 2eng могут быть произвольными (с точками и пробелами), но концовка всегда .C .L .R .SL .SR
F1!
Суть: нужно перекодировать dts в ас3
из dts вытаскиваем wav программой eac3to, она выдает файлы вида
2eng.C.wav
2eng.L.wav
2eng.LFE.wav
2eng.R.wav
2eng.SL.wav
2eng.SR.wav
а программа кодировщик хочет
2eng C.wav
2eng L.wav
2eng LFE.wav
2eng R.wav
2eng Ls.wav
2eng Rs.wav
т.е. после 2eng вместо точки поставить пробел и два файла переименовать:
2eng.SL.wav -> 2eng Ls.wav
2eng.SR.wav -> 2eng Rs.wav
имена вавок 2eng могут быть произвольными (с точками и пробелами), но концовка всегда .C .L .R .SL .SR
F1!
-
dedylka
Re: CMD/BAT - [решено] Помощь с написанием Bat. Переименование файлов в папке с условием.
dedylka, Попробуйте. Пути пропишИте свои без \ на конце
Код:
Код:
Код: Выделить всё
@Echo Off
Set "FMP3=Z:\Box_In"
Set "EMP3=mp3"
Set "FMP4=Z:\Soft_In"
Set "EMP4=mp4"
Set /A N=1000000
FOR %%f IN ("%FMP4%\*.%EMP4%") DO Ren "%%f" "~%%~nxf"
FOR %%f IN ("%FMP4%\*.%EMP4%") DO Set /A N+=1 &Call Ren "%%f" "MP4@%%N%%.%EMP4%"
Set /A N=1000000
FOR %%f IN ("%FMP3%\*.%EMP3%") DO Set /A N+=1 &>nul 2>&1 Call Ren "%FMP4%\MP4@%%N%%.%EMP4%" "%%~nf.%EMP4%"
GoTo :Eof- Вложения
-
[Расширение png было запрещено, вложение больше недоступно.]
-
[Расширение png было запрещено, вложение больше недоступно.]