Windows 7 - Znajdź wszystkie pliki, które są same w folderze


10

Muszę znaleźć sposób na zaznaczenie wszystkich plików, które są same w swoich folderach, aby móc je wycinać i wklejać w innym miejscu. Wszystkie odpowiednie foldery znajdują się w jednym głównym folderze głównym. Czy istnieje w tym celu wiersz polecenia lub sztuczka komandora?


Co chcesz zrobić w podkatalogach? Czy oflagujesz jedyny plik w katalogu, który zawiera także jeden lub więcej podkatalogów? Lub pojedynczy podkatalog, w którym nie ma innych plików w jego rodzicu?
AFH,

Odpowiedzi:


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%"
        )
    )
)

Ta partia zajrzy do C:\TEST 1podfolderów i zliczy pliki. gdy znajdzie samotny plik, przeniesie go do C:\TEST 2. poprosi również o zastąpienie, jeśli nazwa pliku już istnieje.

Zastąp C:\TEST 1i C:\TEST 2własnymi wartościami.

możesz dodać pausena końcu partii, aby odczytać liczbę plików wyświetlaną przez echo.


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

Powinno to działać w programie Powershell, zastępować src i target. Jeśli masz takie same nazwy plików, nie zostaną one zastąpione. Możesz dodać siłę do Move-Item, aby tak się stało.

To może być prawdopodobnie skondensowane, jestem nowicjuszem w PowerShell.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.