Windows 7 - Rechercher tous les fichiers qui sont seuls dans un dossier


10

Je dois trouver un moyen de sélectionner tous les fichiers qui sont seuls dans leurs dossiers, afin de pouvoir les couper et les coller ailleurs. Tous les dossiers respectifs se trouvent dans un dossier racine principal. Y a-t-il une invite de commande ou une astuce de commandant totale pour cela?


Que voulez-vous qu'il se passe dans les sous-répertoires? Marquez-vous un fichier unique dans un répertoire qui contient également un ou plusieurs sous-répertoires? Ou un seul sous-répertoire où il n'y a pas d'autres fichiers dans son parent?
AFH

Réponses:


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

Ce lot examinera les C:\TEST 1sous-dossiers et les fichiers de comptage. une fois qu'il trouve un fichier solitaire, il le déplace C:\TEST 2. il demandera également un remplacement si le nom de fichier existe déjà.

Remplacez C:\TEST 1et C:\TEST 2par vos propres valeurs.

vous pouvez ajouter pauseà la fin du lot pour lire le nombre de fichiers dont il fait écho.


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

Cela devrait fonctionner dans Powershell, remplacer src et target. Si vous avez les mêmes noms de fichiers, ils ne seront pas écrasés. Vous pouvez ajouter de la force à Move-Item pour y arriver.

Cela pourrait probablement être condensé, je suis novice avec PowerShell.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.