0

これはfile.txtです

hello
hai

それで、このファイルを読み取るプログラムを作成したいと思います。次に、すべての ALPHABET を後続の ALPHABET に置き換えます。すべての数字とその他の記号をそのまま保持します。

したがって、file.txtは次のようになります

ifmmp
ibj

現在、すべての \n を読み取ってから、行内のすべての文字を読み取ろうとしましたが、それらをエコーすると、異なる行になります。

for /f "delims=" %%i in ('^<%path% findstr /n "^"') do (
set "line=%%i"
setlocal enabledelayedexpansion
set "line=!line:*:=!"
set "num=-1"
:loop
set /a num=num+1
call set "name2=%%line:~%num%,1%%"
if defined name2 (
rem set /a name2+=1 this statement wont work
    echo %name2%
goto :loop )

)

しかし、私が得る出力は

echo is off
e
l
l
o

何か案は?

4

2 に答える 2

0

Here is a ROT13 batch file - what you are describing is a ROT1 translation. Maybe this will work for you as it is, or give you ideas and you can modify it.

@echo off
:: by aacini
:: program works as a filter, that is, it read lines from keyboard (stdin) and send output to screen (stdout). "type filetext.txt|rot13.bat" or "rot13.bat < filetext.txt"
:: with d benham update

@echo off
:: simple rot-13 conversion filter program
setlocal disableDelayedExpansion
set lower=abcdefghijklmnopqrstuvwxyz
set upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ
for /l %%a in (0,1,25) do (
  set /a "rot13=(%%a+13)%%26"
  setlocal enableDelayedExpansion
  for %%b in (!rot13!) do for /f "tokens=1-4" %%A in (
    "!lower:~%%a,1! !lower:~%%b,1! !upper:~%%a,1! !upper:~%%b,1!"
  ) do (
    endlocal
    set "lower%%A=%%B"
    set "upper%%C=%%D"
  )
)
for /f "delims=" %%a in ('findstr /n "^"') do (
  set "line=%%a"
  setlocal enableDelayedExpansion
  set "line=!line:*:=!"
  set output=
  if defined line (
    set /a len=0
    for /l %%b in (12,-1,0) do (
      set /a "len|=1<<%%b"
      for %%c in (!len!) do if "!line:~%%c,1!" equ "" set /a "len&=~1<<%%b"
    )
    for /l %%b in (0,1,!len!) do (
      set "char=!line:~%%b,1!"
      if defined lower!char! for /f delims^=^ eol^= %%c in ("!char!") do (
        if "!lower:%%c=%%c!" neq "!lower!" (
          set "char=!upper%%c!"
        ) else set "char=!lower%%c!"
      )
      set "output=!output!!char!"
    )
  )
  echo(!output!
  endlocal
)
于 2013-05-23T08:39:49.237 に答える