CMD/BAT - получить список папок, имеющих внутри файлы определенного типа

Ответить
Аватара пользователя
tempik

CMD/BAT - получить список папок, имеющих внутри файлы определенного типа

Сообщение tempik »

Добрый день!

Прошу помощи в решении такой задачи:



Есть некоторое количество папок, содержаших в себе файлы разных типов, предположим вот такие файлы:



D:\one\track1.mp3

D:\one\track2.mp3

D:\one\track2.flac



D:\two\track2.flac



D:\three\track3.mp3



d:\four\track4.flac



Мне нужно получить список папок в которых есть файлы с расширением .mp3, то есть на выходе должен получится такой список:



d:\one

d:\three



Как мне это реализовать? Заранее спасибо Изображение
Аватара пользователя
zion87

Re: CMD/BAT - получить список папок, имеющих внутри файлы определенного типа

Сообщение zion87 »

Если в именах папок есть кириллица - сохраняем 866





Код:

Код: Выделить всё

@Echo Off
Set R="0"
Set Spisok=d:\List.txt
For /f "Delims=" %%a In ('Dir /s /b /a-d "d:\*.mp3"') Do Call :1 "%%~dpa"
Goto:Eof
:1
If %R% NEQ %1 (
	Set R=%1
	If %R% NEQ "0" Echo %R:~1,-2% >>%Spisok%
)

Список будет представлен d:\List.txt
Аватара пользователя
tempik

Re: CMD/BAT - получить список папок, имеющих внутри файлы определенного типа

Сообщение tempik »

Благодарю.

Посмотрев на Ваше решение пришел к такому скрипту:



Код:

Код: Выделить всё

@ECHO OFF
SET R="0"
FOR /R %%A IN ("*.mp3" "*.flac") DO (
	call :1 "%%~dpA"
)
goto :eof
:1 
SET R=%1
move /Y "%R:~1,-2%" "E:\Music"

Перемещает все папки в текущем каталоге, содержащие музыку, в E:\Music

Вроде работает, за исключением одного момента - если встречаются одинаковые названия папок по месту назначения и откуда забираем - move выдает access denied и перемещение не происходит.
Аватара пользователя
gora

Re: CMD/BAT - получить список папок, имеющих внутри файлы определенного типа

Сообщение gora »

Цитата zion87:



Если в именах папок есть кириллица - сохраняем 866
CMD/BAT - получить список папок, имеющих внутри файлы определенного типа




zion87, не критики ради, а пользы для. Объясните мне, в чем будет разница в этом конкретном файле при сохранении его в кодировках 1251 и 866? Ибо, скрипт не содержит кириллицы и каких либо других символов, которые различаются в этих кодировках.

Проверил, скрипты после сохранения идентичны при побайтовом сравнении.
Аватара пользователя
Iska

Re: CMD/BAT - получить список папок, имеющих внутри файлы определенного типа

Сообщение Iska »

gora, я тоже хотел было сказать про конкретный случай, но промолчал Изображение.
Аватара пользователя
Iska

Re: CMD/BAT - получить список папок, имеющих внутри файлы определенного типа

Сообщение Iska »

gora, просто у меня при 1251 русские символы записывались в блокнот кракозаброй, но если и без этого работает тогда я рад )))) Спасибо за правильную критику!!!
Ответить

Вернуться в «Скриптовые языки администрирования Windows»