2014-03-04 18 views
1

我有這段代碼來讀取文本文件。批量編碼文本文件

@ECHO OFF 
SetLocal EnableDelayedExpansion 

for /f "delims=" %%x in ('type text.txt') do ( 
    set "Var=%%x" 
    ECHO !Var! 
) 
pause 

我的問題是,如果我可以提前20個地方的文件中的每個字符如「a」將是「t」。它也可以有數字和符號。 txt文件的長度是400行,每行的字符數在1到120之間。有沒有人知道我該如何做到這一點。

+0

對不起,我不明白你說什麼。你想用「t」代替每一個「a」嗎? – Stephan

+0

是的,每個b都與你等等。 – 09stephenb

回答

1

對不起,這將不處理所有的posibilities,但

@echo off 
    setlocal enableextensions disabledelayedexpansion 

    call :setTables 

    set "inputFile=inputFile.txt" 


    for /f "usebackq delims=*" %%a in ("%inputFile%") do (
     set "data=%%a" 
     call :handleProblems 
     set "out=" 
     setlocal enabledelayedexpansion 
     for /f "delims=" %%b in ('cmd /v:off /q /u /c "echo(!data!"^|more') do (
      if defined "%%b" ( 
       set "out=!out!!"%%b"!" 
      ) else (
       set "out=!out!%%b" 
      ) 
     ) 
     echo(!out! 
     endlocal 
    ) 

    exit /b 

:handleProblems 
    set "data=%data:!=~%" 
    set "data=%data:<=^<%" 
    set "data=%data:>=^>%" 
    set "data=%data:&=^&%" 
    set "data=%data:|=^|%" 
    set "data=%data:)=^)%" 
    exit /b 

:setTables 
    set ""a"=t" 
    set ""b"=u" 
    set ""c"=v" 
    set ""d"=w" 
    set ""e"=x" 
    set ""f"=y" 
    set ""g"=z" 
    set ""h"=a" 
    set ""i"=b" 
    set ""j"=c" 
    set ""k"=d" 
    set ""l"=e" 
    set ""m"=f" 
    set ""n"=g" 
    set ""o"=h" 
    set ""p"=i" 
    set ""q"=j" 
    set ""r"=k" 
    set ""s"=l" 
    set ""t"=m" 
    set ""u"=n" 
    set ""v"=o" 
    set ""w"=p" 
    set ""x"=q" 
    set ""y"=r" 
    set ""z"=s" 
    set ""~"=!" 
    set ""^&"=&" 

    exit /b 
1

使用GnuSed和"y/abc/tuv/"音譯命令,它會與T,其中u和c用v

這句法工作代替A,B - 只是擴展字符集:

sed "y/abc/tuv/" "file.txt" >"newfile.txt" 
+0

我該如何應用此功能。 – 09stephenb

+0

在答案中查看我的編輯。 – foxidrive

+0

我是否需要任何額外的軟件。 – 09stephenb