1.

Solve : Environment Variable Substitution.?

Answer»

Win XP SP.2

Will someone please run the following and explain why the output is so weird.  I've read and re-read the explanation of substitution but can't understand why ka is not substituted for A.

Edit: Forget the request, my brain finally kicked in and I worked it out. but STILL don't know how it ever comes to an end....  Worked that out too, it's been a long day...

Thanks

Code: [Select]echo off
set /p name=Enter name:
set name=%name:A=ka%
set name=%name:B=tu% 
set name=%name:C=mi% 
set name=%name:D=te% 
set name=%name:E=ku% 
set name=%name:F=lu% 
set name=%name:G=ji% 
set name=%name:H=ri% 
set name=%name:I=ki% 
set name=%name:J=zu%
set name=%name:K=me% 
set name=%name:L=ta% 
set name=%name:M=rin% 
set name=%name:N=to% 
set name=%name:O=mo% 
set name=%name:P=no% 
set name=%name:Q=ke% 
set name=%name:R=shi% 
set name=%name:S=ari% 
set name=%name:T=chi% 
set name=%name:U=do% 
set name=%name:V=ru% 
set name=%name:W=me% 
set name=%name:X=na% 
set name=%name:Y=fu% 
set name=%name:Z=zi%
cls
echo %name%
pause >nul
Come on, enlighten us!
lol,  thats my code, i was working on name translator to Japan language.
BTW i've made that in Just Basic, tryied for a moment in batch
post code mate Commenting out the echo off LINE reveals all!

Code: [Select]S:\Test\Batch\transub>rem echo off

S:\Test\Batch\transub>set /p name=Enter name:
Enter name:A

S:\Test\Batch\transub>set name=ka

S:\Test\Batch\transub>set name=ka

S:\Test\Batch\transub>set name=ka

S:\Test\Batch\transub>set name=ka

S:\Test\Batch\transub>set name=ka

S:\Test\Batch\transub>set name=ka

S:\Test\Batch\transub>set name=ka

S:\Test\Batch\transub>set name=ka

S:\Test\Batch\transub>set name=ka

S:\Test\Batch\transub>set name=ka

S:\Test\Batch\transub>set name=mea

S:\Test\Batch\transub>set name=mea

S:\Test\Batch\transub>set name=rinea

S:\Test\Batch\transub>set name=ritoea

S:\Test\Batch\transub>set name=ritmoea

S:\Test\Batch\transub>set name=ritmoea

S:\Test\Batch\transub>set name=ritmoea

S:\Test\Batch\transub>set name=shiitmoea

S:\Test\Batch\transub>set name=arihiitmoea

S:\Test\Batch\transub>set name=arihiichimoea

S:\Test\Batch\transub>set name=arihiichimoea

S:\Test\Batch\transub>set name=arihiichimoea

S:\Test\Batch\transub>set name=arihiichimoea

S:\Test\Batch\transub>set name=arihiichimoea

S:\Test\Batch\transub>set name=arihiichimoea

S:\Test\Batch\transub>set name=arihiichimoea

S:\Test\Batch\transub>echo arihiichimoea
arihiichimoea

S:\Test\Batch\transub>pause  1>nul
Quote from: devcom on August 04, 2008, 07:57:38 AM

lol,  thats my code, i was working on name translator to Japan language.
BTW i've made that in Just Basic, tryied for a moment in batch
post code mate

Typical of me, unravelled the mystery about ten seconds after posting my query and knowing how deleting ones own posts is frowned upon decided to let it run. 

Can't remember why I would have saved your file but thank you for your code Devcom and if you've had experience in auto translating Katakana Morse code to display in Roman FONT in any version of Basic I'd like a few pointers.

To solve my query I amended the script to give the output below:
Quote
Name entered = A
 
A ka
B ka
C ka
D ka
E ka
F ka
G ka
H ka
I ka
J ka
K mea
L mea
M rinea
N ritoea
O ritmoea
P ritmoea
Q ritmoea
R shiitmoea
S arihiitmoea
T arihiichimoea
U arihiichimoea
V arihiichimoea
W arihiichimoea
X arihiichimoea
Y arihiichimoea
Z arihiichimoea
 
 
Final name expansion = 
 "arihiichimoea"


V..    Code: [Select]echo off
:MAIN
set spa=0
set num=0
set /p fullname=Enter name:

:LOOP
call set tmpa=%%fullname:~%num%,1%%
set name=%tmpa%
if '%name%' equ '' goto FIN
:SET
if '%name%' equ 'a' set name=ka& goto END
if '%name%' equ 'b' set name=tu& goto END
if '%name%' equ 'c' set name=mi& goto END
if '%name%' equ 'd' set name=te& goto END
if '%name%' equ 'e' set name=ku& goto END
if '%name%' equ 'f' set name=lu& goto END
if '%name%' equ 'g' set name=ji& goto END
if '%name%' equ 'h' set name=ri& goto END
if '%name%' equ 'i' set name=ki& goto END
if '%name%' equ 'j' set name=zu& goto END
if '%name%' equ 'k' set name=me& goto END
if '%name%' equ 'l' set name=ta& goto END
if '%name%' equ 'm' set name=rin& goto END
if '%name%' equ 'n' set name=to& goto END
if '%name%' equ 'o' set name=mo& goto END
if '%name%' equ 'p' set name=no& goto END
if '%name%' equ 'q' set name=ke& goto END
if '%name%' equ 'r' set name=shi& goto END
if '%name%' equ 's' set name=ari& goto END
if '%name%' equ 't' set name=chi& goto END
if '%name%' equ 'u' set name=do& goto END
if '%name%' equ 'v' set name=ru& goto END
if '%name%' equ 'w' set name=me& goto END
if '%name%' equ 'x' set name=na& goto END
if '%name%' equ 'y' set name=fu& goto END
if '%name%' equ 'z' set name=zi& goto END
:END
set /a num+=1
set exname=%exname%%name%
goto LOOP
:FIN
echo Translated name: %exname%
set exname=
pause >nul
cls
goto MAINthis is how ive done this
ofc it could be better coz i WROTE it in 10 min Took me 5 min 

1.

replace.txt

(store in same folder as batch, or else use full path and filename in batch)

Code: [Select]a,ka
b,tu
c,mi
d,te
e,ku
f,lu
g,ji
h,ri
i,ki
j,zu
k,me
l,ta
m,rin
n,to
o,mo
p,no
q,ke
r,shi
s,ari
t,chi
u,do
v,ru
w,me
x,na
y,fu
z,zi
2.

Translate.bat

Code: [Select]echo off
set /p fullname=Enter name:
for /f "tokens=1,2 delims=," %%A in (replace.txt) do if /I "%%A"=="%fullname%" set name=%%B
echo %name%
nah, i think i will never do this in this way

you are the master
peace!


Discussion

No Comment Found