2010-12-07 17 views
0

Ok, donc tout fonctionne avec mon programme stringparsing.bat, je peux créer, encoder et afficher les fichiers texte avec succès. Cependant maintenant le problème se pose qu'il ne décodera pas le fichier texte après l'avoir encodé. Dites si le fichier texte codé contient:deuxième partie de stringparsing.bat problèmes

20 18 1 9 14 19

Quand je décode à l'aide de ce script:

@echo off 
cls 
echo. 
echo. 
echo. 
echo. 
echo. 
echo  Decoding Your Language File... Please Wait... 
echo. 
echo. 
echo. 

for /f "delims=" %%i in (!name1!.txt) do ( 
set var1=%%i 
set var1=!var1:1 =a ! 
set var1=!var1:2 =b ! 
set var1=!var1:3 =c ! 
set var1=!var1:4 =d ! 
set var1=!var1:5 =e ! 
set var1=!var1:6 =f ! 
set var1=!var1:7 =g ! 
set var1=!var1:8 =h ! 
set var1=!var1:9 =i ! 
set var1=!var1:10 =j ! 
set var1=!var1:11 =k ! 
set var1=!var1:12 =l ! 
set var1=!var1:13 =m ! 
set var1=!var1:14 =n ! 
set var1=!var1:15 =o ! 
set var1=!var1:16 =p ! 
set var1=!var1:17 =q ! 
set var1=!var1:18 =r ! 
set var1=!var1:19 =s ! 
set var1=!var1:20 =t ! 
set var1=!var1:21 =u ! 
set var1=!var1:22 =v ! 
set var1=!var1:23 =w ! 
set var1=!var1:24 =x ! 
set var1=!var1:25 =y ! 
set var1=!var:26 =z ! 
set var1=!var1:27 =. ! 
set var1=!var1:28 =, ! 
echo  Verifying Content... 

) 

echo %var1% > %name1%.txt 
echo Decoding Complete! 

TIMEOUT /t 1 /nobreak > nul 

Je reçois:

t 1h a i 1d 1i 

Parce que lorsque le programme décode la lettre r (qui est 18) il confond le 8 en 18 pour la lettre h et met donc 1h ... alors y a-t-il un moyen de faire une recherche spécifique et de la remplacer? (semblable à si vous tapez un chemin d'accès à un fichier avec des espaces dedans, vous mettriez des guillemets autour du chemin et du nom de fichier) Si oui, quel serait le format?

EDIT Heres le script en cours pour le programme stringparsing.bat:

@echo off 
setlocal enabledelayedexpansion 
title BETA 
cls 
cd /d F:\script\st 
echo. 
echo. 
echo. 
echo  Setting Variables... 
echo  Loading Language Database... 

set beepset=true 

:: ################################################################################### 
:: CALLING VARIABLE DATABASE CALLING VARIABLE DATABASE CALLING VARIABLE DATABASE 
:: ################################################################################### 




TIMEOUT /t 5 /nobreak > nul 

goto MAIN 

:MAIN 
cls 
IF %beepset%==true echo 
echo ================================================================================= 
echo. 
echo   Please type a name for your new language file: 

echo ================================================================================= 
set /p name= 
cls 
echo. 
echo. 
echo. 
echo  ============================================================== 
echo  ############################################################## 
echo  #============================================================# 
echo  #               # 
echo  # - Create the file you would like to encode.    # 
echo  #               # 
echo  ############################################################## 
echo  #               # 
echo  # - How many lines of text will your file have?    # 
echo  #               # 
echo  #============================================================# 
echo  ############################################################## 
echo  ============================================================== 




set /p linecount= 
cls 
set foo=0 
set linenumber=0 

:lineset 
set /a linenumber=linenumber+=1 
set /p line1=%linenumber% 
echo. >> %name%.txt 
echo %line1% >> %name%.txt 
set /a foo=foo+1 
IF %foo%==%linecount% goto MAIN123 
goto lineset 


:ENCODE 
title Step 2 
cls 
echo. 
echo. 
echo. 
echo.  ================================================================================= 
echo. 
echo   Please type a name of the File you want to Encode: 
echo. 
echo.   ================================================================================= 
set /p name2= 

echo. 
echo. 
echo. 
echo. 
echo. 
echo  Encoding Your Language File... Please Wait... 
echo. 
echo. 
echo. 

for /f "delims=" %%i in (!name2!.txt) do ( 
set var=%%i 
set var=!var:a=1 ! 
set var=!var:b=2 ! 
set var=!var:c=3 ! 
set var=!var:d=4 ! 
set var=!var:e=5 ! 
set var=!var:f=6 ! 
set var=!var:g=7 ! 
set var=!var:h=8 ! 
set var=!var:i=9 ! 
set var=!var:j=10 ! 
set var=!var:k=11 ! 
set var=!var:l=12 ! 
set var=!var:m=13 ! 
set var=!var:n=14 ! 
set var=!var:o=15 ! 
set var=!var:p=16 ! 
set var=!var:q=17 ! 
set var=!var:r=18 ! 
set var=!var:s=19 ! 
set var=!var:t=20 ! 
set var=!var:u=21 ! 
set var=!var:v=22 ! 
set var=!var:w=23 ! 
set var=!var:x=24 ! 
set var=!var:y=25 ! 
set var=!var:z=26 ! 
set var=!var:.=27 ! 
echo  Verifying Content... 

) 

echo %var% > %name2%.txt 
echo Encoding Complete! 

TIMEOUT /t 1 /nobreak > nul 

goto MAIN123 

:DECODE 
title Decode... 
echo. 
echo. 
echo. 
echo   ================================================================================= 
echo. 
echo   Please type a name of the File you want to decode: 
echo. 
echo   ================================================================================= 
set /p name1= 

:decoderscript 
cls 
echo. 
echo. 
echo. 
echo. 
echo. 
echo  Decoding Your Language File... Please Wait... 
echo. 
echo. 
echo. 

for /f "delims=" %%i in (!name1!.txt) do ( 
set var1=%%i 
set var1=!var1:1 =a ! 
set var1=!var1:2 =b ! 
set var1=!var1:3 =c ! 
set var1=!var1:4 =d ! 
set var1=!var1:5 =e ! 
set var1=!var1:6 =f ! 
set var1=!var1:7 =g ! 
set var1=!var1:8 =h ! 
set var1=!var1:9 =i ! 
set var1=!var1:10 =j ! 
set var1=!var1:11 =k ! 
set var1=!var1:12 =l ! 
set var1=!var1:13 =m ! 
set var1=!var1:14 =n ! 
set var1=!var1:15 =o ! 
set var1=!var1:16 =p ! 
set var1=!var1:17 =q ! 
set var1=!var1:18 =r ! 
set var1=!var1:19 =s ! 
set var1=!var1:20 =t ! 
set var1=!var1:21 =u ! 
set var1=!var1:22 =v ! 
set var1=!var1:23 =w ! 
set var1=!var1:24 =x ! 
set var1=!var1:25 =y ! 
set var1=!var:26 =z ! 
set var1=!var1:27 =. ! 
set var1=!var1:28 =, ! 
echo  Verifying Content... 

) 

echo %var1% > %name1%.txt 
echo Decoding Complete! 

TIMEOUT /t 1 /nobreak > nul 

goto MAIN123 


:DISPLAY 
cls 
echo. 
echo. 
echo. 
echo  Please type the name of the file you want to display: 
set /p displayfile= 
type %displayfile%.txt 
echo. 
echo hit enter to go to Main Menu... 
pause > nul 
goto MAIN123 

:END 
cls 
title SHUTTING DOWN... 
echo. 
echo. 
echo. 
echo   Terminating service stream... 
echo. 
echo. 
echo. 
echo. 
echo   Done! Thank you for using this program! 
TIMEOUT /t 2 /nobreak > nul 





::(%xx%) -1 I/O Stream= "SHELL.dll" 
:: IF EXIST [&1[Parser_2009]] exit 

Exit 
+1

Vous perdez trop de temps à poser des questions et vous postez le mauvais script, c'est l'encodeur. Un simple ** echo! Var! ** dans votre boucle de décodage explique tout. – jeb

+0

je suis désolé mais je ne comprends pas ce que vous entendez par "un simple écho! Var! Dans votre boucle de décodage exaplains tous" et que voulez-vous dire par im perdre du temps à poser des questions? vous voulez dire dans le script ou dans mon poste – daniel11

+0

dans le script, je pose des questions qui sont importantes, je l'ai fait pour poser des questions, de sorte que son utilisation conviviale non seulement, faire le travail et fermer ... – daniel11

Répondre

0

Je reçois:

t 1h ai 1d 1i

Parce que quand les décodages du programme le lettre r (qui est 18) il confond le 8 en 18 pour le lett h er et donc met 1h ... donc y at-il un moyen de faire une recherche spécifique et remplacer? (semblable à si vous tapez un chemin d'accès à un fichier avec des espaces dedans, vous mettriez entre le chemin et le nom de fichier) Si oui, quel serait le format?

Aha, vous avez le problème. Et vous voyez la cause. Le 18 est remplacé par la ligne

set var1=!var1:8 =h ! 

avant la ligne correcte peut remplacer

set var1=!var1:18 =r ! 

Si vous ne pouvez pas résoudre le problème, alors il n'y a pas de place pour l'espoir. :-)

+0

bien c'est assez évident que je ne peux pas résoudre le problème (ou je ne serais pas poser la question ...), c'est pourquoi vous les gars répondent à cette réponse, de donner des commentaires et/ou des opinions sur ce que je devrais faire ... – daniel11

+0

ce dont j'ai besoin, c'est la réponse – daniel11

+1

Vous avez la réponse!Si cela échoue lorsque "définir X" est AVANT de "définir Y", que pouvez-vous faire? – jeb