Windows 7 - ค้นหาไฟล์ทั้งหมดที่อยู่คนเดียวในโฟลเดอร์


10

ฉันต้องการค้นหาวิธีการเลือกไฟล์ทั้งหมดที่อยู่คนเดียวในโฟลเดอร์ของพวกเขาดังนั้นฉันจึงสามารถตัดและวางไฟล์เหล่านั้นที่อื่นได้ โฟลเดอร์ทั้งหมดนั้นอยู่ในโฟลเดอร์รูทหลักหนึ่งโฟลเดอร์ มีพรอมต์คำสั่งหรือผู้บัญชาการทั้งหมดหลอกลวงหรือไม่


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

คำตอบ:


5
@echo off
Setlocal EnableDelayedExpansion

SET ROOT_FOLDER=C:\TEST 1
SET TARGET_FOLDER=C:\TEST 2

FOR /D %%G IN ("%ROOT_FOLDER%"\*) do (
CD %%G
    FOR /f %%A in ('dir ^| find "File(s)"') do (
        set cnt=%%A
        Echo %%G  : !cnt!
        IF !cnt! == 1 (
            move /-y "*.*" "%TARGET_FOLDER%"
        )
    )
)

ชุดนี้จะดูภายในC:\TEST 1โฟลเดอร์ย่อยไฟล์นับ C:\TEST 2เมื่อพบไฟล์เหงามันจะย้ายไปยัง มันจะขอเขียนทับในกรณีที่ชื่อไฟล์มีอยู่แล้ว

แทนที่C:\TEST 1และC:\TEST 2มีค่าของคุณเอง

คุณสามารถเพิ่มpauseที่ส่วนท้ายของแบทช์เพื่ออ่านไฟล์ที่นับด้วย echo'ed


6
$src = "G:\temp"
$target = "G:\notalone"

if (Test-Path $src)
{
    $folders = Get-ChildItem $src -Recurse | ?{ $_.PSIsContainer }
    foreach($folder in $folders)
    {
        $fc = Get-ChildItem $folder.FullName | ?{!$_.PSIsContainer} | Measure-Object | Select-Object -Expand Count
        if ($fc -eq 1)
        {
            $file = Get-ChildItem $folder.FullName | ?{!$_.PSIsContainer} | Select-Object
            Write-Host "Moving " $file.FullName " to " $target
            Move-Item $file.FullName $target
        }
    }
}

สิ่งนี้ควรทำงานใน Powershell แทนที่ src และเป้าหมาย หากคุณมีชื่อไฟล์เดียวกันมันจะไม่เขียนทับ คุณสามารถเพิ่มแรงให้กับรายการย้ายเพื่อให้เกิดขึ้น

นี่อาจจะเป็นแบบย่อฉันเป็นสามเณรกับ powershell

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