Перейти к содержимому

Заставить пакетный файл находить дубликаты имен файлов с разными расширениями и воздействовать на результаты

3

То, что я хочу сделать, - это иметь папки поиска файлов и подпапки, для сопоставления имен файлов, которые заканчиваются на .mp3и .wmaи удалять или перемещать *.wmaдубликаты.

Ниже вы найдете то, что я придумал до сих пор, я знаю, что это неправильно по крайней мере по двум причинам. Я искал в Интернете, и попробовал несколько вещей, но теперь я застрял. Может кто-нибудь, пожалуйста, помогите мне с этим?

for /r %%f in "(%userprofile%\my music\* - ?.*)" do del "%%f" /s/p 
9 362 просмотра
Bringo спросил 14 лет назад
B 21

4 ответа

1

Могу я порекомендовать powershell?

cd C:\users\Administrator\Desktop\test\   $Afiles = ls *.text $Bfiles = ls *.txt  $Alist = @() $Blist = @()  foreach( $A in $Afiles) { $Alist += $A.BaseName }  foreach( $B in $Bfiles) { $Blist += $B.BaseName }  foreach($A in $Alist) { if($Blist -contains $a)  { rm ("$A.text") -WhatIf } } 

хотя это может показаться немного более сложным, это гораздо более расширяемое и многократно используемое ИМХО.

Chad Carisch ответил 13 лет назад
C 111
0

Я не гуру Windows, но forfiles довольно прост.
forfiles /p "%userprofile%\my music\" /s /m *.mp3 /C "cmd /c del @relpath@fname.wma"

Я ценю ваш ответ, Микке. Я тоже не гуру. На самом деле я довольно новичок в написании командных файлов. Я написал несколько простых пакетных файлов, используя основы, но это все. Я попробовал ваше решение и думаю, что оно гораздо ближе к тому, что мне нужно, чем к тому, что у меня было. Однако это не сработало. Я получаю сообщение об ошибке: ОШИБКА: Неверный аргумент / опция - '@ relpath @ fname.wma'. Буду признателен за любые другие ваши идеи. Спасибо.

Bringo · 14 лет назад · 0

Хорошо, я получил это на вид работы. Я вводил его как: FORFILES / P "% USERPROFILE% \ MY MUSIC" / S / M * .MP3 / C "CMD / C DEL @ FNAME.WMA" Это не понравилось "" за "моей музыкой" или " @relpath "с" @fname "по некоторым причинам. Он действительно удаляет файлы * .wma, которые имеют дубликат файла * .mp3. Однако только в одной папке, а не в боковых папках. Есть идеи? Еще раз спасибо за вашу помощь.

Bringo · 14 лет назад · 0

Попробуйте добавить @PATH \ перед @ FNAME вместо @ RELPATH. Вы хотите, чтобы он расширился до пути и имени файла плюс ваше расширение (.WMA), чтобы DEL мог работать. Сейчас я не за компьютером с Windows, поэтому, к сожалению, я не могу попробовать это сам.

micke · 14 лет назад · 0

Это не сработало, или я набрал его неправильно. Он работает с использованием @fname, но удаляет только файлы * .WMA в текущем каталоге, где был найден * .MP3, а не в остальных каталогах.

Bringo · 14 лет назад · 0
micke ответил 14 лет назад
M 2 796
0

this worked really great for what i needed

forfiles /P C:\Projects\QualityPush\ /S /M first.txt /C "cmd /c echo @path" forfiles /P C:\Projects\QualityPush\ /S /M second.txt /C "cmd /c echo @path" 

This will give you the path to each file for any matches in sub dirs and keeps them collated together

poncho ответил 11 лет назад
P 1