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
- 5726 megtekintés
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!
- A hozzászóláshoz be kell jelentkezni
pedig érthető sztem :)
első példát úgy átírni, hogy változóból szedje a cserélendő szöveget (vagy a fájlnévből), általános legyen több fájlra.
ui.: és amint látod, unix alatt megy (még ha favágó is), csak kíváncsi voltam ps mennyire intuitív.
- A hozzászóláshoz be kell jelentkezni
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
- A hozzászóláshoz be kell jelentkezni
Gugli mondja:
Set-Content -path $_ }
Egyébként meg UNIX-ostól egész jó próbálkozás.
;)
- A hozzászóláshoz be kell jelentkezni
nem műx, elkezdte átnevezni a fájlokat, de azért köszi.
;)
- A hozzászóláshoz be kell jelentkezni
-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* }
- A hozzászóláshoz be kell jelentkezni