Windows 7 - Encuentra todos los archivos que están solos en una carpeta

10

Necesito encontrar una manera de seleccionar todos los archivos que están solos en sus carpetas, para poder cortarlos y pegarlos en otro lugar. Todas las carpetas respectivas están dentro de una carpeta raíz principal. ¿Hay un indicador de comando, o truco de comandante total para esto?

Spaceploit
fuente
¿Qué quieres que pase en los subdirectorios? ¿Marca un único archivo en un directorio que también contiene uno o más subdirectorios? ¿O un solo subdirectorio donde no hay otros archivos en su padre?
AFH

Respuestas:

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 se verá en el interior. C:\TEST 1 subcarpetas y archivos de conteo. una vez que encuentre un archivo solitario lo moverá a C:\TEST 2. también solicitará sobrescribir en caso de que el nombre del archivo ya exista.

Reemplazar C:\TEST 1 y C:\TEST 2 Con tus propios valores.

puedes añadir pause al final del lote para leer el recuento de archivos repetidos por él.

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

Esto debería funcionar en Powershell, reemplazar src y target. Si tiene los mismos nombres de archivo, no se sobrescribirá. Puedes agregar fuerza a Move-Item para que eso suceda.

Esto probablemente podría ser condensado, soy un principiante con powershell.

clarkn
fuente