Êîìïüþòåðíûé ôîðóì OSzone.net  

Êîìïüþòåðíûé ôîðóì OSzone.net (http://forum.oszone.net/index.php)
-   Ñêðèïòîâûå ÿçûêè àäìèíèñòðèðîâàíèÿ Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [ðåøåíî] Ðåäàêòèðîâàíèå ôàéëà ñ ñèìâîëàìè (http://forum.oszone.net/showthread.php?t=351115)

ryok 28-04-2022 22:18 2983992

Ðåäàêòèðîâàíèå ôàéëà ñ ñèìâîëàìè
 
Åñòü ðåäàêòèðóåìûé ôàéë, âíóòðè íåãî ïîäîáíîå:

Êîä:

»˜¢8 bgatvvwfbcmk4joye403s2970Ií²åˆ        ¸2ßú ¶ötÌ“Ö!9ÿ1<?xml version='1.0' encoding='utf-8'?><products><product>
ß ðàáîòàþ ñ ÷èòàåìûì òåêñòîì, íî â íåì åñòü òàêæå íå÷èòàåìûå ñèìâîëû/èåðîãëèôû.

Åñëè ïîïûòàòüñÿ ñäåëàòü ïðîñòåéøóþ çàìåíó â ýòîì ôàéëå, íàïðèìåð:

Êîä:

$FILE = Get-Content test.bnk
$NEWFILE = $FILE -replace "123", ""
$NEWFILE | Set-Content test.bnk

Çàìåíà ïðîéäåò óñïåøíî, íî òå ñèìâîëû è èåðîãëèôû áóäóò ïåðåïèñàíû íåâåðíî, à ýòî äëÿ èñïîëíÿåìîé ïðîãðàììû êðèòè÷íî, îòñþäà è âîïðîñ êàê ðåäàêòèðîâàòü ôàéë íå çàòðàãèâàÿ ýòè ñèìâîëû ?
Ïðîáîâàë ìåíÿòü êîäèðîâêè íà âõîäå è íà âûõîäå, íå ïîìîãëî.
Òàêæå ïðîáîâàë èñïîëüçîâàòü ìåòîä System.IO.Stream è òàì ñèòóàöèÿ òî÷íî òàêàÿ æå.

Serguei Kouzmine 29-04-2022 04:20 2983995

ðàññêàæèòå ïîïîäðîáíåå ïðî ýòó âàøó ïðîñòåéøóþ çàìåíó

Fors1k 29-04-2022 11:31 2984016

ryok, äàéòå îáðàçåö ôàéëà.

ryok 29-04-2022 13:12 2984030

Öèòàòà:

Öèòàòà Serguei Kouzmine
ðàññêàæèòå ïîïîäðîáíåå ïðî ýòó âàøó ïðîñòåéøóþ çàìåíó »

Çàìåíà âûøå ýòî ïðîñòî ïðèìåð, âàæíî ÷òî ïðîèñõîäèò ïîñëå ýòîãî, ÿ òàê ïîíèìàþ PowerShell ïåðåïèñûâàåò âåñü ôàéë ïîëíîñòüþ, à íå òî÷å÷íî êàê ìîæåò ïîêàçàòüñÿ, ïî âñåé âèäèìîñòè îòñþäà è ïðîáëåìà èäåò, ñèìâîëû è èåðîãëèôû îí íå ìîæåò ïåðåçàïèñàòü â òîì ñîñòîÿíèè â êîòîðîì îíè íàõîäèëèñü èçíà÷àëüíî.
Ìíå æå íóæíî ñäåëàòü òî÷åíûå èçìåíåíèÿ â ôàéëå, áåç ïåðåçàïèñè âñåãî ôàéëà öåëèêîì.

Öèòàòà:

Öèòàòà Fors1k
äàéòå îáðàçåö ôàéëà. »

Ê ñîæàëåíèþ, ÿ íå ìîãó ýòî ñäåëàòü, â ôàéëå ìíîãî êîíôèäåíöèàëüíûõ äàííûõ, ÷òî-òî êîíêðåòíîå õîòèòå ñäåëàòü ñ ôàéëîì ?

Sham 29-04-2022 13:19 2984031

÷òî-òî òèïà ýòîãî íàâåðíîå. Ñòðîêà íå îäíîáàéòíàÿ â .net.

Fors1k 29-04-2022 13:21 2984032

Öèòàòà:

Öèòàòà ryok
â ôàéëå ìíîãî êîíôèäåíöèàëüíûõ äàííûõ »

Óáåðèòå èõ/çàìåíèòå íà "¸ëî÷êà", "ðîìàøêà", èëè îñòàâüòå òîëüêî ïåðâûå ïàðó ñòðîê â êîòîðûõ ïðîèñõîäèò óêàçàííàÿ ïðîáëåìà.

ryok 29-04-2022 16:31 2984052

Sham,
Êîä èíòåðåñíûé, áóäó â íåì ðàçáèðàòüñÿ, ñïàñèáî.

Fors1k,
òåñòîâûé ôàéë ïðèêðåïèë, âîò õî÷ó â íåì ñäåëàòü çàìåíó :
Êîä:

$FILE = Get-Content C:\Users\Ps-2\Desktop\123\test.bnk
$NEWFILE = $FILE -replace '<app-developer>0<\/app-developer>', '<app-developer>2</app-developer>'
$NEWFILE | Set-Content C:\Users\Ps-2\Desktop\123\test.bnk

Îòðàáàòûâàåò íîðìàëüíî, íî ïðîãðàììà óæå îòêàçûâàåòñÿ ðàáîòàòü ñ òàêèì ôàéëîì, à åñëè ÿ ñàì çàéäó â ôàéë ÷åðåç Notepad++ è ïîìåíÿþ ýòó ñòðîêó <app-developer>0</app-developer> íà ýòó <app-developer>2</app-developer> òî âñå îê.

Fors1k 29-04-2022 17:13 2984059

Êàê ÿ ïîíèìàþ, êîäèðîâêà èñõîäíîãî ôàéëà - ANSI.
Ïîïðîáóåì óêàçàòü å¸ ñòðîãî âðó÷íóþ.
Êîä:

cls
$pathIn = "C:\Users\Ps-2\Desktop\123\test.bnk"
$pathOut = "C:\Users\Ps-2\Desktop\123\test_new.bnk"

$ANSI = [Text.Encoding]::GetEncoding(1251)
$old = [IO.File]::ReadAllText($pathIn, $ANSI)
$new = $old.Replace('<app-developer>0', '<app-developer>2')
[IO.File]::WriteAllText($pathOut, $new, $ANSI)

# Ïðîâåðêà

Start notepad $pathOut

$oldFile = Get-Content $pathIn -TotalCount 1 -Delimiter "<?xml"
$newFile = Get-Content $pathOut -TotalCount 1 -Delimiter "<?xml"

Write-Host "Äî  : $oldFile"
Write-Host "Ïîñëå: $newFile"

Write-Host -NoNewline "Ñèìâîëû â íà÷àëå ôàéëà èäåíòè÷íû? "
$oldFile -eq $newFile

 èòîãå ïîñëå çàìåíû â ôàéëå, êîòîðûé âû ïðåäîñòàâèëè, îøèáîê â íà÷àëüíûõ ñèìâîëàõ íåò. Ðåçóëüòàò â êîíñîëè:
Êîä:

Äî  :  Ìͺ8p7iy6w38emu91ikg56wrvb5axIº ‹        ¶`òÓëKÒÐ8Ï—;Ñ´¢9½1<?xml
Ïîñëå:  Ìͺ8p7iy6w38emu91ikg56wrvb5axIº ‹        ¶`òÓëKÒÐ8Ï—;Ñ´¢9½1<?xml
Ñèìâîëû â íà÷àëå ôàéëà èäåíòè÷íû? True


Sham 29-04-2022 17:38 2984062

get-content -raw / set-content -nonewline òîæå ìîãóò ðàáîòàòü. Íî áèíàðíûå äàííûå ýòî ìàññèâ áàéòîâ, à íå òåêñò.

Fors1k 29-04-2022 18:22 2984069

Öèòàòà:

Öèòàòà Sham
Íî áèíàðíûå äàííûå ýòî ìàññèâ áàéòîâ, à íå òåêñò. »

À ãäå çäåñü áèíàðíûå äàííûå åñòü?

Sham 29-04-2022 19:06 2984071

òå áàéòû/îêòåòû, êîòîðûå ïî ôîðìàòó ôàéëà íå äîëæíû èíòåðïðåòèðîâàòüñÿ êàê êîäû ñèìâîëîâ êîäèðîâêè. Åñëè âñå áàéòû ïðèíóäèòåëüíî ÷èòàòü êàê òåêñò, òî ìîãóò áûòü ïðîáëåìû, îñîáåííî ñ êîäàìè óïðàâëÿþùèõ ñèìâîëîâ 00-1f è äð. (îíè íå òåêñòîâûå ñèìâîëû â 1-áàéòíîé êîäèðîâêå òèïà 1251).

Fors1k 29-04-2022 20:28 2984078

Ñòðîêà ìîæåò õðàíèòü â ñåáå è óïðàâëÿþùèå ñèìâîëû, ê ïðèìåðó òîò æå äåñÿòûé è ïðî÷èå áàéòû óïðàâëÿþùèõ ñèìâîëîâ, íàëè÷èå êîòîðûõ ìû ìîæåì âèäåòü â ñòðîêå.
Óêàçàííóþ ïðîáëåìó ñ ñèìâîëàìè 00-1f âîñïðîèçâåñòè íå óäàåòñÿ:
Êîä:

cls
[Byte[]]$bytesSrc = 0x00..0x0F+65+0x10..0x1F

$text = [Text.Encoding]::UTF8.GetString($bytesSrc)
$text = $text.Replace("A", "B")

$bytesNew = [Text.Encoding]::UTF8.GetBytes($text)

Compare-Object $bytesSrc $bytesNew

Ìîæåòå ïðèâåñòè ïðèìåð?

ryok 29-04-2022 22:00 2984092

Fors1k,
Âàø âàðèàíò ñðàáîòàë, áëàãîäàðþ, ñòðàííî ÷òî ÿ òîæå ïðîáîâàë ðàçíûå êîäèðîâêè, íî íå çíàë ÷òî ANSI èìåííî òàê îáîçíà÷àåòñÿ, ÿ ïî÷åìó-òî ïðîáîâàë òàê [System.Text.Encoding]::ASCII :laugh:

Êñòàòè ïîïóòíî åùå îäèí âîïðîñ ïîÿâèëñÿ, â íà÷àëå 6 ñòðîêè òåñòîâîãî ôàéëà åñòü âîò òàêîå:

Êîä:

app-developer        0x
ìíå íóæíî çàìåíèòü òàì ãäå 0x íà , íî îí ðàñïîëîæåí ïðÿì â ýòèõ ñèìâîëàõ, êàê ýòî ïî ðåãóëÿðêå ìîæíî íàéòè è çàìåíèòü îïÿòü æå íå ïîâðåäèâ ýòè ñèìâîëû âîêðóã ?

Fors1k 30-04-2022 03:26 2984107

Çàìåíèòü â îáîèõ ìåñòàõ:
Êîä:

cls
$pathIn = "C:\Users\Ps-2\Desktop\123\test.bnk"
$pathOut = "C:\Users\Ps-2\Desktop\123\test_new.bnk"

$ANSI = [Text.Encoding]::GetEncoding(1251)
$old = [IO.File]::ReadAllText($pathIn, $ANSI)
$new = $old -replace "(?<=app-developer.+?)0", '2'
[IO.File]::WriteAllText($pathOut, $new, $ANSI)


Sham 30-04-2022 12:40 2984117

Get-Content áåç -raw îòäà¸ò ìàññèâ ñòðîê, êîòîðûé ïðè êîýðñèè â ñòðîêó ïðîñòî êîíêàòåíèðóåòñÿ áåç çíàêîâ ïåðåíîñà. Èç-çà ýòîãî ó ÒÑ íåêîððåêòíî ïèñàëñÿ ôàéë ñ ïîòåðåé ñèìâîëîâ ïåðåíîñà ñòðîêè.

Ïðîáëåì ïðè èíòåðïðåòàöèè áèíàðíûõ äàííûõ îäíîáàéòîâîé òåêñòîâîé êîäèðîâêîé âîçíèêàòü íå äîëæíî. Âîò ïðè ìíîãîáàéòîâûõ þíèêîäàõ ìîãóò áûòü íåêîððåêòíûå ïîñëåäîâàòåëüíîñòè áàéòîâ. Âîò òàêèå ñëó÷àè âñå ïðîòåñòèðîâàòü ìîæíî, êîíå÷íî, ïðè áîëüøîì æåëàíèè. Ãëþê ìîæåò âûëåçòè â ëþáîé ìîìåíò.

ryok 30-04-2022 15:58 2984123

Fors1k,
òàê êàê çàìåíà ïðîèñõîäèëà åùå è â äðóãèõ ìåñòàõ, è ïîðòèëà ôàéë, íåìíîãî ïîäïðàâèë ðåãóëÿðíîå âûðàæåíèå íà ýòî
Êîä:

(?<=app-developer..|app-developer>)0
åùå ðàç ñïàñèáî âàì çà ïîìîùü.

Sham,
íàñ÷åò -raw ñåé÷àñ ïðîâåðèòü íå ìîãó, ÿ åãî êàê òî â îäíîì èç òåñòîâ òîæå èñïîëüçîâàë è îí ìíå íå ïîìîã.


Âðåìÿ: 02:04.

Âðåìÿ: 02:04.
© OSzone.net 2001-