Skip to main content

Liste des sous dossiers d'un dossier en .txt sous windows

Ce tutoriel vous guide à travers la création d'un script PowerShell pour lister les dossiers d'un répertoire donné, triés par ordre naturel.

Prérequis

  • Un ordinateur avec Windows.
  • PowerShell installé (généralement inclus par défaut sur les systèmes Windows modernes).

Étapes

Une fois dans le dossier contenant les sous-dossiers à lister:

  1. Ouvrir un éditeur de texte

    • Ouvrez le Bloc-notes ou tout autre éditeur de texte de votre choix.
  2. Copier le script PowerShell

    • Copiez le script suivant dans l'éditeur de texte :
# Chemin du dossier source
$sourcePath = "D:\Chemin\vers\le\dossier"

# Vérifier si le chemin existe
if (Test-Path -Path $sourcePath) {
    # Récupérer la liste des dossiers
    $folders = Get-ChildItem -Path $sourcePath -Directory | Select-Object -ExpandProperty Name

    # Fonction de tri naturel simplifiée
    $sortedFolders = $folders | Sort-Object {
        $numPattern = '\d+'
        $numMatches = [regex]::Matches($_, $numPattern)
        $numValue = 0
        if ($numMatches.Count -gt 0) {
            $numValue = [int]$numMatches[0].Value
        }
        $numValue
    }

    # Chemin du fichier de sortie
    $outputFile = Join-Path -Path $sourcePath -ChildPath "liste_dossiers.txt"

    # Écrire les noms des dossiers triés dans le fichier
    $sortedFolders | Out-File -FilePath $outputFile

    Write-Host "La liste des dossiers a été enregistrée dans $outputFile"
} else {
    Write-Host "Le chemin spécifié n'existe pas : $sourcePath"
}
  1. Enregistrer le script

    • Enregistrez le fichier avec une extension .ps1, par exemple trier_dossiers.ps1.
  2. Exécuter le script

Clic droit puis executer avec Powershell

Ou:

  • Ouvrez PowerShell en tant qu'administrateur.
  • Naviguez jusqu'au répertoire où vous avez enregistré le script en utilisant la commande cd.
  • Exécutez le script en tapant .\trier_dossiers.ps1.
  1. Vérifier le résultat
    • Après l'exécution du script, un fichier nommé liste_dossiers.txt sera créé dans le répertoire spécifié, contenant la liste des dossiers triés par ordre naturel.

Remarques

  • Assurez-vous que l'exécution des scripts PowerShell est autorisée sur votre système. Si ce n'est pas le cas, vous pouvez autoriser l'exécution des scripts en utilisant la commande suivante dans PowerShell en tant qu'administrateur :
Set-ExecutionPolicy RemoteSigned
  • Ce script suppose que les noms de dossiers contiennent des numéros pour le tri naturel. Ajustez le chemin $sourcePath selon votre besoin.

En suivant ces étapes, vous devriez être en mesure de trier et lister les dossiers de manière naturelle avec PowerShell.


Le même mais sans rien devant le nom des dossiers:

# Chemin du dossier source
$sourcePath = "D:\Chemin\vers\le\dossier"

# Vérifier si le chemin existe
if (Test-Path -Path $sourcePath) {
    # Récupérer la liste des dossiers
    $folders = Get-ChildItem -Path $sourcePath -Directory | Select-Object -ExpandProperty Name

    # Fonction de tri naturel simplifiée (par le premier nombre trouvé)
    $sortedFolders = $folders | Sort-Object {
        $numPattern = '\d+'
        $numMatches = [regex]::Matches($_, $numPattern)
        $numValue = 0
        if ($numMatches.Count -gt 0) {
            $numValue = [int]$numMatches[0].Value
        }
        $numValue
    }

    # Supprimer le numéro + tiret en début de nom
    $cleanedFolderNames = $sortedFolders | ForEach-Object {
        $_ -replace '^\d+\s*-\s*', ''
    }

    # Chemin du fichier de sortie
    $outputFile = Join-Path -Path $sourcePath -ChildPath "liste_dossiers.txt"

    # Écrire les noms des dossiers nettoyés dans le fichier
    $cleanedFolderNames | Out-File -FilePath $outputFile -Encoding UTF8

    Write-Host "La liste des dossiers a été enregistrée dans $outputFile"
} else {
    Write-Host "Le chemin spécifié n'existe pas : $sourcePath"
}