2

わかりました基本的に、このような方法でX文字をY文字に変更する単純なバッチプログラムが必要です

a-b
b-c
c-d
d-e
e-f
etc etc etc

ive は文字列やその他の変数のトリックを調べますが、うまくいきません。こちらが私が試したもので、別の方法を試した「codeb」で確認できます

set /p code=[paste your code here]
set code=%codea:~1%
set /a %code:~2% %codeb%

これは基本的に、すべての入力文字を個別の変数に分割しようとする私の方法でした。

もしあなたの気持ちが....退屈なら、以下は翻訳の正確な変換です

a='
b=v
c=x
d=s
e=w
f=d
g=f
h=g
i=u
j=h
k=j
l=k
m=n
n=b
o=i
p=o
q=\
r=e
s=a
t=r
u=y
v=c
w=q
x=z
y=t
z=/

基本的に、この「v'rxg」をバッチに「貼り付け」てEnterキーを押すと、「バッチ」が表示されるはずです

4

2 に答える 2

1

Andriy のコードを、FIND テキスト ファイルの代わりにバッチ変数を使用する高速バージョンに変更しました。ここにあります:

@echo off
setlocal EnableDelayedExpansion
for /f "delims=" %%a in (codechart.txt) do set %%a
:loop
set /P encoded=[paste your code here]
if "%encoded%" == "" goto :eof
set decoded=
call :decode
echo Result:
echo\%decoded%
goto loop

:decode
if "%encoded%" == "" goto :eof
set ec=%encoded:~0,1%
set encoded=%encoded:~1%
set dc=?
if defined %ec% set dc=!%ec%!
set decoded=%decoded%%dc%
goto decode

ただし、特殊文字 (無効な変数名) がエンコードされている場合、私のバージョンは機能しません。

EDIT私のコードと Andriy のコードの唯一の違いは次のとおりです。

  • setlocal EnableDelayedExpansion: このコマンドは!var!、%var% 以外の展開を使用するために必要であり、同じコマンドで両方の展開を使用できます。
  • for /f "delims=" %%a in (codechart.txt) do set %%a: このコマンドは変換の行を取得しset、それぞれの行でコマンドを実行します。つまり、set a=' set b=vなどです。このようにして、変換は元の文字の名前と新しい文字の値と共にバッチ変数に格納されます。
  • if defined %ec% set dc=!%ec%!: この行は、ec変数内の文字を直接置換によって変換します。たとえば、ec が "b" の場合: if defined b set dc=!b!; b 変数が存在し、「v」が含まれているため、 を実行しset dc=vます。
于 2011-11-04T00:58:02.247 に答える
0

さて、これはあなたが遊ぶことができる実用的なスクリプトです。テキストファイルの形式でチャートを使用します(codechart.txtセットアップで名前を付けました):

@ECHO OFF
:loop
SET /P encoded=[paste your code here]
IF [%encoded%]==[] GOTO :EOF
SET decoded=
CALL :decode
ECHO Result:
ECHO(%decoded%
GOTO loop

:decode
IF [%encoded%]==[] GOTO :EOF
SET ec=%encoded:~0,1%
SET encoded=%encoded:~1%
SET dc=?
FOR /F "delims==" %%C IN ('FIND "=%ec%" ^<codechart.txt') DO SET dc=%%C
SET decoded=%decoded%%dc%
GOTO decode

空でない文字列を入力すると、結果が生成されます。Enter実際に何も入力せずにヒットすると、バッチが終了します。チャートで文字が見つからない場合、?出力では として表されます。

于 2011-11-03T23:58:55.897 に答える