[megoldva] powershell - szövegcsere több fájlban

van több fájlom amiket egyről másoltam és egy olyan szöveget szeretnék lecserélni benne, ami a fájlnévben benne van.

ilyen fájlnevek vannak: text1 KOD text2.txt

egy fájlon a csere megy, de nem tudom set-contentnek hogyan adjam meg helyesen a több fájlnevet:

(get-content 'text1 KOD text2.txt') | foreach-object { $_ -replace "old", "KOD" } | set-content 'text1 KOD text2.txt'

így hoztam létre őket, KODlist.txt tartalmazza azt a szöveget amire cserélni szeretném "old"-ot a fájlokban:

for /f %i in (KODlist.txt) do copy "text1 old text2.txt" "text1 %i text2.txt"

ilyenekkel próbálkoztam:

$KODlist=get-content KODlist.txt ; foreach ($i in $KODlist) { (get-content '.\text1'$i'.toLower() text2.txt') | foreach-object { $_ -replace "old", $i } | set-content '.\text1 $_ text2.txt'}

ez befelé még jó, de kifele már nem:

$KODlist=get-content KODlist.txt ; foreach ($i in $KODlist) { get-content *$i* | foreach-object { $_ -replace "old", $i.toLower() | set-content *$i* } }

végül felnyomtam unixra, ott meg ezt hegesztettem:

for i in `ls -1 | cut -c 7-9` ; do a=`echo $i | tr [A-z] [a-z]` ; find . -type f -name "*$i*" -exec sed -i s/old/$a/g {} \; ; done

szerk.:
eredeti fájl neve "text1 old text2.txt", tartalma:
old
1. másolat fájl neve "text1 AAA text2.txt", tartalma:
old
2. másolat fájl neve "text1 BBB text2.txt", tartalma:
old

de elvárt tartalmuk old helyett a megfelelő KOD, pl.:
"text1 AAA text2.txt":
AAA
"text1 AAA text2.txt":
BBB

KOD származik KODlist.txt-ből:
AAA
BBB
CCC

Hozzászólások

Ha közel 90 olvasás után még senki nem szólt hozzá, akkor lehet, hogy az első benyomásom nem üvöltő tévedés: a leírásból a forráskódok érthetőbbek, mint a magyar szöveg, de ha nem jól működik, akkor valószínűleg nem éri meg visszafejteni, hogy mit szeretnél csinálni, mert a kód úgyse azt teszi.

Szóval (nó offensz) próbáld meg úgy elolvasni az elejétől, mintha nem tudnád még, hogy miről akar szólni, és ha nem tudod mindenhol követni, akkor aszerint korrigálni!

Lehet, hogy C#-ban már végeztél volna a feladattal :-)
Ahol powershell van, ott .NET is van.
Ha akarod, megírom neked (amennyiben időm engedi, és nem sürgős neked).

Fuszenecker_Róbert

Gugli mondja:
Set-Content -path $_ }
Egyébként meg UNIX-ostól egész jó próbálkozás.
;)

-path hiányzott, fene vigye el, így megcsinálta:

$KODlist=get-content KODlist.txt ; foreach ($i in $KODlist) { (get-content *$i*) | foreach-object { $_ -replace "old", $i } | set-content -path *$i* }