Windows 7 - Encontre todos os arquivos que estão sozinhos em uma pasta

10

Preciso encontrar uma maneira de selecionar todos os arquivos que estão sozinhos em suas pastas, para poder recortá-los e colá-los em outro lugar. Todas as respectivas pastas estão dentro de uma pasta raiz principal. Existe um prompt de comando ou um truque total do comandante para isso?

Spaceploit
fonte
O que você deseja que aconteça nos subdiretórios? Você sinaliza um único arquivo em um diretório que também contém um ou mais subdiretórios? Ou um único subdiretório onde não há outros arquivos em seu pai?
AFH 06/02

Respostas:

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

Este lote examinará as C:\TEST 1subpastas e os arquivos de contagem. quando encontrar um arquivo solitário, ele será movido para C:\TEST 2. também solicitará a substituição caso o nome do arquivo já exista.

Substitua C:\TEST 1e C:\TEST 2por seus próprios valores.

você pode adicionar pauseno final do lote para ler a contagem de arquivos repetida por ele.

Maher Fattouh
fonte
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
        }
    }
}

Isso deve funcionar no Powershell, substitua src e target. Se você tiver os mesmos nomes de arquivo, ele não será substituído. Você pode adicionar força ao item de movimentação para que isso aconteça.

Provavelmente isso pode estar condensado, sou iniciante em PowerShell.

Clark
fonte