Powershell 2-copie de l'élément qui crée un dossier n'existe pas
$from = "\\something XLS10_04_22\*"
$to = "c:\out XLS10_04_22\"
copy-item $from $to -Recurse
Cela fonctionne si c:\out\1 XLS\2010_04_22\
n'existe pas . Est-il possible avec une seule commande pour créer c:\out\1 XLS\2010_04_22\
si elle n'existe pas?
Vous devez vous connecter pour publier un commentaire.
Oui, ajoutez le
-Force
paramètre.New-Item -Force $to
Copy-Item -Force $from $to
Dans PowerShell 2.0, il n'est toujours pas possible d'obtenir la Copie de l'Élément applet de commande pour créer le dossier de destination, vous aurez besoin d'un code comme ceci:
Si vous utilisez Récursif dans le Copier-Élément, il va créer tous les sous-dossiers de la structure source dans la destination, mais il ne crée pas la destination réelle du dossier, même avec Force.
Dans PowerShell 3 et au-dessus-je utiliser le Copier-Élément avec l'Élément.
Je n'ai pas essayé dans la version 2.
-ToSession
commande si :'(Ma préférée est d'utiliser l' .Net [IO.DirectoryInfo] de la classe, qui prend soin de la logique. En fait je les utiliser pour beaucoup de semblables défis de script. Il a une .Méthode Create() qui crée des répertoires qui n'existent pas, sans erreurs, si elles n'.
Puisque c'est encore un à deux étapes problème, j'utilise le foreach alias garder les choses simples. Pour les fichiers unique:
Autant que de votre multi fichier/répertoire match, je voudrais utiliser RoboCopy plus de xcopy. Supprimer les "*" à partir de votre de et il suffit d'utiliser:
Vous pouvez toujours ajouter le /r (Récursif), /e (Recurse Vides compris), et il y en a 50 autres commutateurs.
Edit: en Regardant en arrière à cela, il est laconique, mais pas très lisible si vous n'êtes pas en utilisant le code souvent. Habituellement, je l'ai divisé en deux, comme suit:
Aussi, DirectoryInfo est le type de la propriété Parent de FileInfo, donc si votre $à est un fichier, vous pouvez les utiliser ensemble:
Voici un exemple qui a fonctionné pour moi. J'avais une liste de près de 500 fichiers spécifiques dans un fichier texte, contenues dans près de 100 différents dossiers, que je devais copier sur un emplacement de sauvegarde dans le cas où ces fichiers sont nécessaires plus tard. Le fichier texte figurant chemin d'accès complet et nom de fichier, un par ligne. Dans mon cas, j'ai voulu enlever la lettre de Lecteur et le premier sous-dossier du nom de chaque nom de fichier. Je voulais copier tous ces fichiers en une même structure de dossier sous une autre racine du dossier de destination que j'ai précisé. J'espère que les autres utilisateurs à trouver cela utile.
Je suis tombé ici deux fois, et cette dernière fois, c'était une situation unique, et même si j'ai fossé à l'aide de
copy-item
je voulais poster la solution que j'ai utilisée.Avait une liste de rien, mais les fichiers avec le chemin d'accès complet et dans la majorité des cas, les fichiers n'ont pas d'extensions. le
-Recurse -Force
option ne permettrait pas de travail pour moi, donc j'ai abandonnécopy-item
fonction et est tombée à quelque chose comme ci-dessous à l'aide de la commande xcopy comme je l'ai toujours voulu le garder en une seule ligne. Au départ, j'ai attaché avec Robocopy, mais c'est apparemment à la recherche d'une extension de fichier et depuis plusieurs de la mine a eu aucune extension, il considère que c'est un répertoire.Espère que cela aide quelqu'un.