我想要製作一個批處理文件,它讀取一個txt文件「ayylmao.txt」並找到一個特定的單詞「hello」並將其替換爲「 xello」。批處理文件讀取特殊字符的txt並替換它中的一個字
事情是,「ayylmao.txt」包含特定的字符。
Ayylmao.txt看起來是這樣的:
‹‹R‹Ę‹/M‹;Ču‹č˙˙˙‹‹@‰‹‹@CëC;Đu‹čq˙˙˙‹‹@C‹D$‰;7u®‹Ó‹Ćčúţ˙˙„Ŕu3Ŕ‰YZ]_^[ĂŤ@ SVWUÄđ‰$‹ô‹‰D$‹
‹‹@;Č‚† ‹Ř‹>_‹ůz;ßrv;Ču!‹B‹A‹B‹)B‹x uV‹čđţ˙˙ëM‹Ř‹>_‹ůz;ßu
‹B‹)Bë3‹Z‰\$‹>‹‹.}+ű‰|$+Č‹‰HŤT$‹čMţ˙˙„Ŕu3 hello Ŕë°ë‹‹ ‰‹;D$…Y˙˙˙3ŔÄ]_^[ĂSVW‹Ú‹đţ }ľ ëĆ˙˙ ć ˙˙‰sjh Vj
你可以看到在最後一行的 「你好」 兩個字。我想批去的過程中,給我一個ayylmao1.txt,看起來像這樣:
‹‹R‹Ę‹/M‹;Ču‹č˙˙˙‹‹@‰‹‹@CëC;Đu‹čq˙˙˙‹‹@C‹D$‰;7u®‹Ó‹Ćčúţ˙˙„Ŕu3Ŕ‰YZ]_^[ĂŤ@ SVWUÄđ‰$‹ô‹‰D$‹
‹‹@;Č‚† ‹Ř‹>_‹ůz;ßrv;Ču!‹B‹A‹B‹)B‹x uV‹čđţ˙˙ëM‹Ř‹>_‹ůz;ßu
‹B‹)Bë3‹Z‰\$‹>‹‹.}+ű‰|$+Č‹‰HŤT$‹čMţ˙˙„Ŕu3 xello Ŕë°ë‹‹ ‰‹;D$…Y˙˙˙3ŔÄ]_^[ĂSVW‹Ú‹đţ }ľ ëĆ˙˙ ć ˙˙‰sjh Vj
你可以看到「你好」現在是「xello」。
,我發現這個批處理文件從一個文本文件替換一個字:
@echo off
REM -- Prepare the Command Processor --
SETLOCAL ENABLEEXTENSIONS
SETLOCAL DISABLEDELAYEDEXPANSION
if "%~1"=="" findstr "^::" "%~f0"&GOTO:EOF
for /f "tokens=1,* delims=]" %%A in ('"type %3|find /n /v """') do (
set "line=%%B"
if defined line (
call set "line=echo.%%line:%~1=%~2%%"
for /f "delims=" %%X in ('"echo."%%line%%""') do %%~X
) ELSE echo.
)
此代碼適用於不具有特定的字符,如果很好地利用它像這樣的文件:
code.bat "hello" "xello" "ayylmao.txt">"ayylmao1.txt"
此代碼僅在ayylmao1.txt中鍵入幾個特殊字符,但會替換hello。我想要在那裏輸入所有特殊字符。
我做了這樣的:
chcp 1252
code.bat "hello" "xello" "ayylmao.txt">"ayylmao1.txt"
但沒有奏效。它像第一個代碼一樣工作。
如果在PowerShell中有這樣做的話,我很樂意聽到它。
這不適用於OP顯然具有的二進制文件。 –
@AnsgarWiechers你是對的。我將編碼類型修改爲Byte而不是UTF8。 – paul543
將編碼設置爲Byte,您將得到一個沒有方法Replace()的字節數組。 –