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

10

Eu preciso encontrar uma maneira de selecionar todos os arquivos que estão sozinhos em suas pastas, para que eu possa 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 o truque do comandante total para isso?

    
por Spaceploit 06.02.2016 / 18:20

2 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 procurará dentro de C:\TEST 1 subpastas um arquivo de contagem. Assim que encontrar um arquivo solitário, ele será movido para C:\TEST 2 . ele também pedirá sobrescrever caso o nome do arquivo já exista.

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

você pode adicionar pause no final do lote para ler a contagem de arquivos ecoada por ele.

    
por 06.02.2016 / 19:41
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, substituir src e target. Se você tiver os mesmos nomes de arquivos, eles não serão sobrescritos. Você pode adicionar força ao Move-Item para que isso aconteça.

Isso provavelmente poderia ser condensado, eu sou novato com powershell.

    
por 06.02.2016 / 19:52