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:
-
Ouvrir un éditeur de texte
- Ouvrez le Bloc-notes ou tout autre éditeur de texte de votre choix.
-
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"
}
-
Enregistrer le script
- Enregistrez le fichier avec une extension
.ps1
, par exempletrier_dossiers.ps1
.
- Enregistrez le fichier avec une extension
-
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
.
- 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.
- Après l'exécution du script, un fichier nommé
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"
}
No comments to display
No comments to display