10
votes

Comment puis-je modifier des fichiers de renommée en vrac utilisant PowerShell?

J'essaie de renommer récursivement un tas de TFS dossiers à l'aide de TF Rename code>, PowerShell et une expression régulière, mais j'ai des problèmes avec PowerShell comme je n'ont pas passé beaucoup de temps avec ça. C'est ce que j'ai mis ensemble jusqu'à présent pour remplacer un (code> 5 code> avec 2.3.2 code> mais cela ne fonctionne pas: xxx pré>

Résultat réel: p> xxx pré>

mise à jour: p>

J'ai un peu plus proche en procédant comme suit: P>

dir | foreach { $newname = $_.Name -replace "^5", "2.3.2"; tf rename $_ $newname }


1 commentaires

Je ne connais pas la réponse, mais une bonne question. :)


4 Réponses :


1
votes

Essayez ceci:

dir . | foreach { $newname = $_.Name -replace "^5", "2.3.2"; tf rename $_ $newname }


0 commentaires

14
votes

Je filtrerais d'abord par 5 * afin que vous traitiez uniquement les noms qui commencent par 5. Également, dans ce cas, car Tf.exe n'est pas une cmdlet PowerShell, vous ne voulez pas utiliser de script pour déterminer un nouveau nom. . Il suffit d'utiliser une expression de regroupement comme si:

6# dir -filter 5* | foreach { echoargs rename $_ { $_.Name -replace '^5', '2.3.2' } }
Arg 0 is <rename>
Arg 1 is <5foo.txt>
Arg 2 is <-encodedCommand>
Arg 3 is <IAAkAF8ALgBOAGEAbQBlACAALQByAGUAcABsAGEAYwBlACAAJwBeADUAJwAsACAAJwAyAC4AMwAuADIAJwAgAA==>
Arg 4 is <-inputFormat>
Arg 5 is <xml>
Arg 6 is <-outputFormat>
Arg 7 is <text>


0 commentaires

4
votes

Notes:

  • TFS a CMDlets natifs - Pas besoin de TF. EXE Dans la plupart des cas.
  • La complexité temporelle des opérations d'espace de travail dépend du nombre de rénumes en attente déjà dans l'espace de travail. Dans TFS 2005/2008, il est considérablement pire que linéaire. En bout de ligne, vous devriez vraiment envisager de parrainer Renumes dans plusieurs checkins si vous avez un gros nombre d'objets, sinon chaque "Renommer TF" (ou nouvel TFSPendingChanger -rename si vous utilisez les cmdlets) commencera à prendre des minutes.

0 commentaires

0
votes

Exécution des commandes ci-dessus nécessite que le TF.exe ait été aliasé comme «TF» .. ou il a fait sur ma machine au moins.

exécutez cette commande: P>

notepad $PROFILE


0 commentaires