Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 批量编码文本文件_Windows_Batch File - Fatal编程技术网

Windows 批量编码文本文件

Windows 批量编码文本文件,windows,batch-file,Windows,Batch File,我有这个代码来读取文本文件 @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个字符。有人知道我是怎么做到的吗。使用GnuSed和的“y/abc/

我有这个代码来读取文本文件

@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个字符。有人知道我是怎么做到的吗。

使用GnuSed和
的“y/abc/tuv/”
音译命令,将a替换为t,b替换为u,c替换为v

此语法有效-只需扩展字符集:

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

抱歉,这不会处理所有的可能性,但是

@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
@echo关闭
setlocal enableextensions disabledelayedexpansion
调用:可设置
设置“inputFile=inputFile.txt”
对于(“%inputFile%”中的/f“usebackq delims=*”%%a,请执行以下操作(
设置“数据=%%a”
呼叫:处理问题
设置“出发=”
延迟扩展
对于/f“delims=“%%b in('cmd/v:off/q/u/c“echo(!data!”^ more))执行以下操作(
如果定义了“%%b”(
设置“out=!out!!”%%b!”
)否则(
设置“输出=!输出!%%b”
)
)
回声(!出去!
端部
)
退出/b
:处理问题
设置“数据=%data:!=~%”
设置“数据=%data:%”
设置“数据=%data:&=^&%”
设置“数据=%data:|=^ |%”
设置“数据=%data:)=^)%”
退出/b
:可设置
设置“a”=t
设置“b”=u
设置“c”=v
设置“d”=w
设置“e”=x
设置“f”=y
设置“g”=z
设置“h”=a
设置“i”=b
设置“j”=c
设置“k”=d
设置“l”=e
设置“m”=f
设置“n”=g
设置“o”=h
设置“p”=i
设置“q”=j
设置“r”=k
设置“s”=l
设置“t”=m
设置“u”=n
设置“v”=o
设置“w”=p
设置“x”=q
设置“y”=r
设置“z”=s
设置“~”=!”
设置“^&=&”
退出/b

对不起,我不明白你说什么。你想用“t”替换每个“a”吗?是的,每个b都用u等等。我需要额外的软件吗。