Ciao. 
Ricordo da precedenti thread che hai già usato la powershell.
Allora, scarica powershell analyzer da qui
http://shelltools.wik.is/Downloads
Scompattala e lancia l'eseguibile PowerShellAnalyzer.exe
Il programma è standalone.
A questo punto nell'editor incolla il codice che ti ho scritto. Devi solo modificare il percorso della variabile $path. All'interno della cartella te ne verrà creata un'altra di nome nuovi con tutti i tuoi file.
Il fine settimana è salvo.
codice:
# Imposto il path della cartella contenente i file originali
$path = "C:\Documents and Settings\Nicola\Desktop\txtfile"
# .. e la raggiungo tramite set-location
set-Location $path
# recupero l'elenco di tali file
$filesorig = Get-ChildItem $path
# all'interno della cartella ne creo una nuova di nome nuovi in cui inserirò i file che creerò
new-Item -type directory -name nuovi
# recupero l'elenco dei file (escludendo la cartella appena creata)
# di ciascuno ricavo la prima riga tramite gc[0], ordino tali righe, ricavo solo quelle uniche
# e creo tanti file quante sono le prime righe univoche dando loro il nome di tale riga e l'estensione .txt
gci | ? {-not $_.psiscontainer} | % { (gc $_)[0] } | Sort-Object | Get-Unique | % {new-Item -path ($path+"\nuovi\") -type file -name ($_+".txt") }
# ricavo l'elenco dei file appena creati
$filesdest = Get-ChildItem ($path+"\nuovi")
# ciclo i file di origine, i file di destinazione vuoti appena creati
# e quando la prima riga del file di origine coincide col nome privo di estensione del file creato gli accodo il contenuto del file di origine
foreach($fileorig in $filesorig) {
foreach($filedest in $filesdest) {
if ( (gc $fileorig)[0] -eq [IO.Path]::GetFileNameWithoutExtension($filedest.name) ) {
foreach($riga in gc $fileorig) {
add-content -path ($path+"\nuovi\"+$filedest.name) -value $riga
}
}
}
}