2016-02-11 1 views
0

J'ai un programme (un compilateur IDL) qui crée un tas de fichiers d'en-tête. Ces fichiers d'en-tête ont un garde d'en-tête avec une partie aléatoire à la fin, comme ceci:Supprimer une partie aléatoire d'une garde d'en-tête de nombreux fichiers d'en-tête

#ifndef AUTOMATEDGENERATEDCODEIMPL_H_U1CBCG 
#define AUTOMATEDGENERATEDCODEIMPL_H_U1CBCG 

// My code here 

#endif /* AUTOMATEDGENERATEDCODEIMPL_H_U1CBCG */ 

Ces fichiers sont créés chaque fois que je construis ma solution et la partie de lecture aléatoire, même si le reste du code est inchangé. Donc, dans chaque commit que je fais dans git je commet ces fichiers qui causent beaucoup de conflits inutiles (je construis le code, un autre construit le même code en obtenant d'autres en-têtes et ensuite rebasculer/fusionner). Je veux donc créer un script PowerShell qui s'exécute dans l'événement post-build dans Visual Studio, qui supprime la partie aléatoire de tous les gardes d'en-tête dans tous les fichiers d'en-tête de ce projet. Comment remplacer dans PowerShell la chaîne *IMPL_H_(random part) avec *IMPL_H_ dans tous les fichiers .h?

Répondre

2

Utilisez un remplacement d'expression régulière:

Get-ChildItem -Recurse -Filter *.h | ForEach-Object { 
    $file = $_.FullName 
    (Get-Content $file) -creplace '(_IMPL_H_)[A-Z0-9]*', '$1' | Set-Content $file 
}