J'écris un script PowerShell pour créer plusieurs répertoires s'ils n'existent pas.
Le système de fichiers ressemble à ceci
D:\
D:\TopDirec\SubDirec\Project1\Revision1\Reports\
D:\TopDirec\SubDirec\Project2\Revision1\
D:\TopDirec\SubDirec\Project3\Revision1\
- Chaque dossier de projet a plusieurs révisions.
- Chaque dossier de révision a besoin d'un dossier Rapports.
- Certains des dossiers «révisions» contiennent déjà un dossier Rapports; cependant, la plupart n'en ont pas.
J'ai besoin d'écrire un script qui s'exécute quotidiennement pour créer ces dossiers pour chaque répertoire.
Je peux écrire le script pour créer un dossier, mais la création de plusieurs dossiers est problématique.
Réponses:
Essayez le
-Force
paramètre:Vous pouvez utiliser
Test-Path -PathType Container
pour vérifier d'abord.Consultez l' article d' aide MSDN sur les nouveaux éléments pour plus de détails.
la source
Test-Path
vérifie si le chemin existe. Sinon, il créera un nouveau répertoire.la source
test-path
).L'extrait de code suivant vous aide à créer un chemin d'accès complet.
La fonction ci-dessus divise le chemin d'accès que vous avez transmis à la fonction et vérifie si chaque dossier existe ou non. S'il n'existe pas, il créera le dossier respectif jusqu'à la création du dossier cible / final.
Pour appeler la fonction, utilisez l'instruction ci-dessous:
la source
J'ai eu exactement le même problème. Vous pouvez utiliser quelque chose comme ceci:
la source
Lorsque vous spécifiez l'
-Force
indicateur, PowerShell ne se plaindra pas si le dossier existe déjà.Bon mot:
BTW, pour planifier la tâche, veuillez consulter ce lien: Planification des travaux en arrière-plan .
la source
Utilisation:
La première ligne crée une variable nommée
$path
et lui affecte la valeur de chaîne "C: \ temp \"La deuxième ligne est une
If
instruction qui s'appuie sur l' applet de commande Test-Path pour vérifier si la variable$path
n'existe pas . Le non existe est qualifié à l'aide du!
symbole.Troisième ligne: Si le chemin stocké dans la chaîne ci-dessus n'est pas trouvé, le code entre les accolades sera exécuté.
md
est la version courte de la saisie:New-Item -ItemType Directory -Path $path
Remarque: je n'ai pas testé en utilisant le
-Force
paramètre ci-dessous pour voir s'il y a un comportement indésirable si le chemin existe déjà.la source
md "C:\first\second\third
créez-les tous.Il existe trois méthodes que je connais pour créer un répertoire à l'aide de PowerShell:
la source
D'après votre situation, il semble que vous deviez créer un dossier "Révision #" une fois par jour avec un dossier "Rapports". Si tel est le cas, il vous suffit de connaître le numéro de révision suivant. Écrivez une fonction qui obtient le numéro de révision suivant, Get-NextRevisionNumber. Ou vous pouvez faire quelque chose comme ça:
Installation de PowerShell 3.0 .
la source
Je voulais pouvoir laisser facilement les utilisateurs créer un profil par défaut pour PowerShell pour remplacer certains paramètres, et je me suis retrouvé avec la ligne unique suivante (plusieurs déclarations oui, mais peut être collée dans PowerShell et exécutée à la fois, ce qui était l'objectif principal ):
Pour plus de lisibilité, voici comment je le ferais dans un fichier .ps1 à la place:
la source
En voici une simple qui a fonctionné pour moi. Il vérifie si le chemin existe, et si ce n'est pas le cas, il créera non seulement le chemin racine, mais aussi tous les sous-répertoires:
la source