Now into the subject. With the help of some other posts, I am trying to make a .bat file to encrypt and decrypt a text file with a progress bar (ignore the progress bar).
I made 2 loops.
If the decrypted name.txt file exists then "encrypt" the file to name.encr and delete the other file
If the encrypted name.encr file exists then "decrypt" the file to name.txt and delete the other file
Each line of the file is taken, proccesed and written into the other file.
However I face 2 problems where each line is added to the start of the next one and I do not know if it is possible to make it encrypt and decrypt uppercase, lowercase and sympols like "@#$". Example:
Input:
"123
abc
DEF
@#$"
Encrypted and then decrypted.
Output:
"123
123123ABC
123123ABC123ABCDEF
123123ABC123ABCDEF123ABCDEF"
TL;DR: If encrypted file exists, then decrypt it. If decrypted file exists, then encrypt it. Plus support case sensitive and symbols if possible.
Thanx in advance for the help.
Code: Select all
@ECHO OFF
::Setting the progress bar
IF EXIST "mytextx.txt" (
set set_file=mytextx.txt
) ELSE IF EXIST "mytextx.encr" (
set set_file=mytextx.encr
)
set tags=
SETLOCAL EnableDelayedExpansion
for /f "Tokens=* Delims=" %%x in (%set_file%) do set Build=!Build!%%x
ECHO %Build%>x&FOR %%? IN (x) DO SET /A strlength=%%~z? - 2&del x
set /a cnt=0
for /f %%a in ('type "%set_file%"^|find "" /v /c') do set /a cnt=%%a
set /a full = 100
for /l %%a in (1,1,%full%) do (
CALL:ADDSPACE)
set /a denom=%full%/%cnt%
set /a current_progress=0
::Setting the progress bar end
::Encryption Table
(set CHAR_ENCRYPT[A]=UDFMHD45) & (set CHAR_ENCRYPT[B]=H121FDGF) & (set CHAR_ENCRYPT[C]=FDGHJ56D) & (set CHAR_ENCRYPT[D]=FGSG54D6) & (set CHAR_ENCRYPT[E]=JUK456JH)
(set CHAR_ENCRYPT[F]=ERE4G54S) & (set CHAR_ENCRYPT[G]=T5H64FDD) & (set CHAR_ENCRYPT[H]=RG56F41G) & (set CHAR_ENCRYPT[I]=RG45FG4D) & (set CHAR_ENCRYPT[J]=RT8564F6)
(set CHAR_ENCRYPT[K]=VCBV5C3B) & (set CHAR_ENCRYPT[L]=FD8G9G2F) & (set CHAR_ENCRYPT[M]=FDG4CVJS) & (set CHAR_ENCRYPT[N]=FG4213FG) & (set CHAR_ENCRYPT[O]=FD456GC2)
(set CHAR_ENCRYPT[P]=TH56GDF5) & (set CHAR_ENCRYPT[Q]=CV54F6GR) & (set CHAR_ENCRYPT[R]=XDF64FTS) & (set CHAR_ENCRYPT[S]=X78DG9RT) & (set CHAR_ENCRYPT[T]=TGH74SDJ)
(set CHAR_ENCRYPT[U]=BCX856DF) & (set CHAR_ENCRYPT[V]=FGH654SD) & (set CHAR_ENCRYPT[W]=45KLD45D) & (set CHAR_ENCRYPT[X]=GF2H3FG2) & (set CHAR_ENCRYPT[Y]=GFH564GF)
(set CHAR_ENCRYPT[Z]=45TG21FG) & (set CHAR_ENCRYPT[1]=D45G213D) & (set CHAR_ENCRYPT[2]=GB456DFG) & (set CHAR_ENCRYPT[3]=SDF456GF) & (set CHAR_ENCRYPT[4]=PF6F1G32)
(set CHAR_ENCRYPT[5]=FD6DFGG1) & (set CHAR_ENCRYPT[6]=56DFG54G) & (set CHAR_ENCRYPT[7]=UISG4FDG) & (set CHAR_ENCRYPT[8]=FKJH6FDG) & (set CHAR_ENCRYPT[9]=IFDGJHK6)
::Decryption Table
(set CHAR_DECRYPT[UDFMHD45]=A) & (set CHAR_DECRYPT[H121FDGF]=B) & (set CHAR_DECRYPT[FDGHJ56D]=C) & (set CHAR_DECRYPT[FGSG54D6]=D) & (set CHAR_DECRYPT[JUK456JH]=E)
(set CHAR_DECRYPT[ERE4G54S]=F) & (set CHAR_DECRYPT[T5H64FDD]=G) & (set CHAR_DECRYPT[RG56F41G]=H) & (set CHAR_DECRYPT[RG45FG4D]=I) & (set CHAR_DECRYPT[RT8564F6]=J)
(set CHAR_DECRYPT[VCBV5C3B]=K) & (set CHAR_DECRYPT[FD8G9G2F]=L) & (set CHAR_DECRYPT[FDG4CVJS]=M) & (set CHAR_DECRYPT[FG4213FG]=N) & (set CHAR_DECRYPT[FD456GC2]=O)
(set CHAR_DECRYPT[TH56GDF5]=P) & (set CHAR_DECRYPT[CV54F6GR]=Q) & (set CHAR_DECRYPT[XDF64FTS]=R) & (set CHAR_DECRYPT[X78DG9RT]=S) & (set CHAR_DECRYPT[TGH74SDJ]=T)
(set CHAR_DECRYPT[BCX856DF]=U) & (set CHAR_DECRYPT[FGH654SD]=V) & (set CHAR_DECRYPT[45KLD45D]=W) & (set CHAR_DECRYPT[GF2H3FG2]=X) & (set CHAR_DECRYPT[GFH564GF]=Y)
(set CHAR_DECRYPT[45TG21FG]=Z) & (set CHAR_DECRYPT[D45G213D]=1) & (set CHAR_DECRYPT[GB456DFG]=2) & (set CHAR_DECRYPT[SDF456GF]=3) & (set CHAR_DECRYPT[PF6F1G32]=4)
(set CHAR_DECRYPT[FD6DFGG1]=5) & (set CHAR_DECRYPT[56DFG54G]=6) & (set CHAR_DECRYPT[UISG4FDG]=7) & (set CHAR_DECRYPT[FKJH6FDG]=8) & (set CHAR_DECRYPT[IFDGJHK6]=9)
(set CHAR_DECRYPT[HG45J6FG]=.) & (set CHAR_DECRYPT[DF456HG4]=,)
IF EXIST "mytextx.txt" (
:: Encryption if loop
ECHO Cyphering.
(
FOR /f "delims=" %%a IN (mytextx.txt) DO (
SET Encrypt=%%a
set /a current_progress=current_progress+%denom%
set set_title=Cyphering
CALL:PROGRESS
(CALL :MYENC)>>mytextx.encr
)
)
ECHO Cyphering ended.
DEL mytextx.txt
) ELSE IF EXIST "mytextx.encr" (
:: Decryption if loop
ECHO Decyphering.
(
FOR /f "delims=" %%a IN (mytextx.encr) DO (
SET Decrypt=%%a
set /a current_progress=current_progress+%denom%
set set_title=Decyphering
CALL:PROGRESS
(CALL :MYDEC)>>mytextx.txt
ECHO %enil%
)
)
ECHO Decyphering ended.
DEL mytextx.encr
) ELSE (
::No file exists. Warn the user and exit.
ECHO No relative file exists.
TIMEOUT 5
)
DEL _temp.bat
GOTO :EOF
::End of encryption/decryption
::Decryption loop
:MYDEC
set char=%Decrypt:~0,8%
set Decrypt=%Decrypt:~8%
set DecryptOut=%DecryptOut%!CHAR_DECRYPT[%char%]!
if not "%Decrypt%"=="" goto MYDEC
ECHO %DecryptOut%
GOTO :EOF
::Encryption loop
:MYENC
set char=%Encrypt:~0,1%
set Encrypt=%Encrypt:~1%
set EncryptOut=%EncryptOut%!CHAR_ENCRYPT[%char%]!
if not "%Encrypt%"=="" goto MYENC
ECHO %EncryptOut%
GOTO :EOF
::Progressbar functions
:ADDSPACE
set "fullBar=%fullBar%-"
set tags=%tags%#
exit/b
GOTO :EOF
:PROGRESS
set /a pct=full-%current_progress%
(TITLE %set_title%
echo/echo/%set_title%: %current_progress%/100
echo/echo [%%tags:~0,%current_progress%%%%%fullBar:~0,%pct%%%]
)>_temp.bat
cls
call _temp.bat
GOTO :EOF
::Progressbar functions end