ทำแบตช์ไฟล์ค้นหาชื่อไฟล์ที่ซ้ำกันที่มีนามสกุลต่างกันและดำเนินการกับผลลัพธ์


3

สิ่งที่ฉันต้องการทำคือมีโฟลเดอร์การค้นหาไฟล์แบตช์และโฟลเดอร์ย่อยสำหรับการจับคู่ชื่อไฟล์ที่ลงท้ายด้วย.mp3และ.wmaและลบหรือย้าย*.wmaรายการที่ซ้ำ

ด้านล่างคุณจะพบสิ่งที่ฉันคิดขึ้นมาจนถึงตอนนี้ฉันรู้ว่ามันผิดด้วยเหตุผลอย่างน้อยสองประการ ฉันค้นหาทางอินเทอร์เน็ตและลองสิ่งต่าง ๆ แต่ตอนนี้ฉันติดอยู่ มีใครช่วยฉันด้วยได้ไหม

for /r %%f in "(%userprofile%\my music\* - ?.*)" do del "%%f" /s/p

ทำไมไม่ใช้เครื่องมือฟรีจากโปรแกรมค้นหาไฟล์ที่ซ้ำกันของ ashisoft ashisoft.com

1
เพราะราคา $ 30.00 รุ่นฟรีจะไม่ทำงานตามที่ฉันต้องการเว้นแต่ฉันจะซื้อมัน ฉันอยากจะเรียนรู้วิธีการทำมากกว่าโยนเงินลงไป แต่ขอบคุณสำหรับเคล็ดลับ
Bringo

คำตอบ:


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
    }
}

แม้ว่าสิ่งนี้อาจดูซับซ้อนขึ้นเล็กน้อย แต่ IMHO ที่สามารถขยายเพิ่มได้และสามารถนำมาใช้ซ้ำได้


1

ขออภัยที่ทำให้คำถามเก่า ๆ เกิดขึ้น แต่สำหรับใครก็ตามที่สะดุดในอนาคตลองดูนี่ใช้งานได้ในไฟล์แบทช์:

@ECHO OFF
FOR %%A IN (A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z) DO (DIR /B /S /A-D %%A:\>>FILELIST.TXT) 2>NUL

http://www.ehow.com/how_6926969_remove-files-xp-operating-system.html


0

ฉันไม่ใช่กูรูของ windows แต่forfilesตรงไปตรงมา
forfiles /p "%userprofile%\my music\" /s /m *.mp3 /C "cmd /c del @relpath@fname.wma"


ฉันขอขอบคุณคำตอบของคุณ Micke ฉันไม่ใช่กูรูเช่นกัน จริง ๆ แล้วฉันค่อนข้างใหม่ในการเขียนไฟล์แบตช์ ฉันได้เขียนไฟล์แบทช์ง่าย ๆ สองสามไฟล์โดยใช้พื้นฐาน แต่นั่นคือทั้งหมด ฉันได้ลองวิธีแก้ปัญหาของคุณแล้วและฉันคิดว่ามันใกล้เคียงกับสิ่งที่ฉันต้องการมากกว่าที่ฉันมี อย่างไรก็ตามมันใช้งานไม่ได้ ฉันได้รับข้อผิดพลาดดังต่อไปนี้ข้อผิดพลาด: อาร์กิวเมนต์ / ตัวเลือกไม่ถูกต้อง - '@ relpath @ fname.wma' ฉันขอขอบคุณแนวคิดอื่น ๆ ที่คุณอาจมี ขอขอบคุณ.
Bringo

โอเคฉันได้รับมันไปทำงาน ฉันใส่มันเป็น: FORFILES / P "% USERPROFILE% \ MY MUSIC" / S / M * .MP3 / C "CMD / C DEL @ FNAME.WMA" มันไม่ชอบ "\" หลัง "เพลงของฉัน" หรือ " @relpath "กับ" @fname "ด้วยเหตุผลบางประการ มันลบไฟล์ * .wma ที่มีไฟล์ * .mp3 ซ้ำกัน อย่างไรก็ตามมีเพียงโฟลเดอร์เดียวกันเท่านั้นและไม่อยู่ในโฟลเดอร์ด้านข้าง ความคิดใด ๆ ขอบคุณอีกครั้งสำหรับความช่วยเหลือของคุณ
Bringo

ลองเพิ่ม@PATH\ ก่อนแทน@FNAME @RELPATHคุณต้องการให้มันขยายไปยังพา ธ และชื่อไฟล์รวมถึงส่วนขยายของคุณ (.WMA) เพื่อให้ DEL สามารถทำงานได้ ฉันไม่ได้อยู่ที่คอมพิวเตอร์ Windows ตอนนี้โชคไม่ดีที่ฉันไม่สามารถลองด้วยตัวเองได้
micke

ไม่ทำงานหรือฉันพิมพ์ผิด มันทำงานโดยใช้ @fname ด้วยตัวเอง แต่จะลบเฉพาะไฟล์ * .WMA ในไดเรกทอรีปัจจุบันที่พบ * .MP3 และไม่อยู่ในไดเรกทอรีที่เหลือ
Bringo

0

มันใช้งานได้ดีมากสำหรับสิ่งที่ฉันต้องการ

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

สิ่งนี้จะทำให้คุณมีเส้นทางไปยังแต่ละไฟล์สำหรับการแข่งขันใด ๆ ใน dirs ย่อยและทำให้พวกเขารวมกัน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.