【发布时间】:2016-10-10 13:46:43
【问题描述】:
我正在尝试制作一个读取 txt 文件“ayylmao.txt”并找到特定单词“hello”并将其替换为“xello”的批处理文件。
问题是“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
您可以看到“hello”现在是“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 中有办法做到这一点,我会很高兴听到它。
【问题讨论】:
标签: windows powershell batch-file