2017-07-18 87 views
0

私はこれを行う方法がよく分かりませんが、数値を文字の対応に戻して戻すバッチファイルを作成しています。バッチ - 数字を文字の対応に戻して

私はオンラインで検索、私はstackoverflowのからこれを見つけた:

@echo off 
setlocal enableDelayedExpansion 
set "text=This is a test" 
set "code=!text!" 
set "chars=0abcdefghijklmnopqrstuvwxyz" 
for /l %%N in (1 1 26) do for /f %%C in ("!chars:~%%N,1!") do set "code=!code:%%C=%%N !" 
echo !text! 
echo !code! 
pause 

それは数字に文字を変更するために動作しますが、私は戻って自分の手紙特派に番号を変更しようとしています。 (空白は数字の二重スペースです)

set /a Num+=1 のように数字を追加することができ、文字を追加することができないため、これは難しいようです。私が達成しようとしているものの

例:

1 2 3 4 - ABCD

19 20 1 3 11 15 22 5 18 6 12 15 23 - stackoverflowの

誰でも方法を知っていますこれをする?

答えて

3
@echo off 
setlocal enableDelayedExpansion 
set "text=This is a test" 
set "code=%text%" 
set "chars=0abcdefghijklmnopqrstuvwxyz" 
for /l %%N in (1 1 26) do for /f %%C in ("!chars:~%%N,1!") do set "code=!code:%%C=%%N !" 
echo %text% 
echo %code% 
ECHO ---------------------------------- 
SET "decode=%code%" 
for /l %%N in (26 -1 1) do for /f %%C in ("!chars:~%%N,1!") do set "decode=!decode:%%N =%%C!" 
echo %text% 
echo %code% 
ECHO %decode% 
GOTO :EOF 

各文字は、その後、数値のスペースに置き換えられているので、あなたは1aを意味することを認識する必要がある、11k21uを意味意味、あなたは最初に、最も高い数字を交換する必要があります。数字+スペースは、データをエンコードするのに使用されたものと同じ文字列のN番目の文字になります。

%var%!var!はループ外で同じではありませんか。ループの外側にある!var!フォームを使用すると、コーダが元の値と変更された値の差を認識できるようになるため、混乱する可能性があります。

+0

お返事ありがとうございました!それは動作しますが、 '1 2 3 4 3 2 1'と入力すると' a b c d c b 1'が出力されますか? – djmrminer

+1

はい、スペースに続けて*しないので、エンコード方式は文字を[数値文字列+スペース]で置き換えることです。 – Magoo

0

これは、batchコマンドpowershell.exeを使用して実行する方法です。最も困難な問題は、スペース文字を扱うことでした。

PS C:\src\t> Get-Content .\cn.ps1 
$text = 'This is a test' 
$text 

$nums = ((($text.ToLower() -replace " ","``").ToCharArray() | 
    ForEach-Object { [int]$_ - [int][char]"``" }) -join ' ') -replace ' 0 ',' ' 
$nums 

$letters = ((($nums.Trim()).Split() | 
    ForEach-Object { [char]([int]$_ + [int][char]"``") }) -join '') -replace "``"," " 
$letters 

PS C:\src\t> .\cn.ps1 
This is a test 
20 8 9 19 9 19 1 20 5 19 20 
this is a test 

バッチスクリプトに書き込むことができます。

C:\src\t>powershell -NoProfile -File cn.ps1 
This is a test 
20 8 9 19 9 19 1 20 5 19 20 
this is a test 
関連する問題