2017-09-22 1 views
0

Supposons que nous ayons un fichier texte contenant un chemin complet de fichiers. Et un deuxième fichier texte contenant juste les mêmes noms de fichiers mais ils peuvent être précédés d'autres caractères. Ce que je voudrais faire est de remplacer les noms de fichiers dans le deuxième fichier avec les chemins complets d'entre eux qui sont dans le premier fichier texte. Comment cela peut-il être fait?Comparer deux fichiers texte et remplacer les lignes contenant des mots communs dans PowerShell

Par exemple;

Dans textFile1.txt vous avez: enter image description here

En textFile2.txt vous avez: enter image description here

je besoin d'un 3e textFile3.txt comme celui-ci (juste fait manuellement pour deux des fichiers, mais je dois que pour tous les fichiers dans l'arborescence) enter image description here

+0

Pouvez-vous s'il vous plaît mettre à jour votre question avec quelques exemples? –

Répondre

1

en supposant que les noms de fichiers sont uniques et les chemins ne contiennent aucune des noms de fichiers:

# Read files 
$File1 = Get-Content <file1> 
$File2 = Get-Content <file2> 

# Process each line 
Foreach ($Line in $File1) { 
    # Get only the filename for current line 
    $FileName = $Line.Split("\")[-1] 
    # Replace filename in file2 with the entire line of file1 
    $File2 = $File2 -replace $Filename,$Line 
} 
# Write new content to file2 
Set-Content -Path <file2> -Value $File2 

Note: Ceci est untestet, peut contenir des bugs;)