Boucle Powershell à travers des dossiers, Créer un fichier dans chaque dossier

j'essaie de boucler de façon récursive tous les dossiers d'un répertoire, puis de faire quelque chose dans chaque répertoire. Créer un fichier texte, par exemple.

je peux obtenir tous les sous-dossier dans une variable, comme ceci:

$folders = Get-ChildItem -Recurse | ?{ $_.PSIsContainer }

cependant, je n'arrive pas à créer un fichier dans chaque sous - répertoire-les fichiers sont créés dans le répertoire supérieur. Cela ne fonctionne pas:

$folders | ForEach-Object { New-Item -ItemType file -Name "$_.txt" -path $_}

Qui renvoie un message d'erreur que le répertoire n'est pas trouvé ou que le chemin est trop long.

Comment faire quelque chose dans chaque sous-répertoire de dossiers imbriqués?

9
demandé sur Adeimantus 2015-11-05 14:09:28

1 réponses

essaye ceci:

Get-ChildItem -Recurse -Directory | ForEach-Object {New-Item -ItemType file -Path "$($_.FullName)" -Name "$($_.Name).txt" }

en gros, le Get-ChildItem la commande renvoie une séquence de DirectoryInfo objets. FullName la propriété contient le chemin complet, alors que Name contient juste le nom du répertoire de feuilles.

17
répondu Sean 2015-11-05 11:49:18