|
pusofalse
银牌会员
积分 1604
发帖 646
注册 2008-4-13
状态 离线
|
『楼 主』:
[求助]如何对文本中的每个字符加1?
a.txt
peh9a7cygxm91
3c2gjm05ba3gz
epkvkojd92023
字母也要加1
输出后为:
qfi0b8dzhyn02
4d3hkn16cb4ha
fqlwlpke03134
当前数字加1。。。 当前字母向后移一位
根据zw19750516 前辈以前的帖子想出的一个问题,想了2天没想出来,请教各位达人!
付a.txt生成代码:
@echo off
set str=0123456789abcdefghijklmnopqrstuvwxyz
:1
set/a n=%random%%%36
call set var=%%str:~%n%,1%%
set str1=%str1%%var%
set/a m+=1
if %m% lss 13 goto 1
echo %str1%>>a.txt
set m=
set str1=
set /a y+=1
if %y% lss 3 goto 1
pause
|
心绪平和,眼藏静谧,无比安稳的火... Purification of soul...Just a false...^_^ |
|
2008-5-18 15:43 |
|
|
26933062
银牌会员
积分 2268
发帖 879
注册 2006-12-19
状态 离线
|
『第
2 楼』:
@echo off&setlocal enabledelayedexpansion
set "num=abcdefghijklmnopqrstuvwxyza"
for /l %%l in (0 1 25) do (
set /a max=%%l+1
call set "var=%%num:~!max!,1%%"
set "_!num:~%%l,1!=!var!"
set "_%%l=!max!"
)
for /f "delims=" %%a in (a.txt) do (
set "str=%%a"
call echo !str:~0,-1!%%_!str:~-1!%%
)
pause
|
致精致简! |
|
2008-5-18 16:36 |
|
|
pusofalse
银牌会员
积分 1604
发帖 646
注册 2008-4-13
状态 离线
|
『第
3 楼』:
Quote: | Originally posted by 26933062 at 2008-5-18 04:36 PM:
[code]
@echo off&setlocal enabledelayedexpansion
set "num=abcdefghijklmnopqrstuvwxyza"
for /l %%l in (0 1 25) do (
set /a max=%%l+1
call set "var=%%num:~!max!,1%%" ... |
|
遗憾。。。。代码有误。。。只能对每行最后的字符加1
|
心绪平和,眼藏静谧,无比安稳的火... Purification of soul...Just a false...^_^ |
|
2008-5-18 16:40 |
|
|
26933062
银牌会员
积分 2268
发帖 879
注册 2006-12-19
状态 离线
|
『第
4 楼』:
你不是要求最后一个字符加一吗?
|
致精致简! |
|
2008-5-18 16:43 |
|
|
26933062
银牌会员
积分 2268
发帖 879
注册 2006-12-19
状态 离线
|
|
2008-5-18 16:47 |
|
|
pusofalse
银牌会员
积分 1604
发帖 646
注册 2008-4-13
状态 离线
|
『第
6 楼』:
Quote: | Originally posted by 26933062 at 2008-5-18 04:47 PM:
开始看错题了。
:[code]
@echo off&setlocal enabledelayedexpansion
set "num=abcdefghijklmnopqrstuvwxyza"
for /l %%l in (0 1 25) do (
set /a max=%%l+1
call set "v ... |
|
看着有点头晕。。。 赞佩!
|
心绪平和,眼藏静谧,无比安稳的火... Purification of soul...Just a false...^_^ |
|
2008-5-18 17:08 |
|
|
HAT
版主
积分 9023
发帖 5017
注册 2007-5-31
状态 离线
|
『第
7 楼』:
楼主是想用这个方法进行替换加密吗?
|
|
|
2008-5-18 17:50 |
|
|
pusofalse
银牌会员
积分 1604
发帖 646
注册 2008-4-13
状态 离线
|
『第
8 楼』:
Quote: | Originally posted by HAT at 2008-5-18 05:50 PM:
楼主是想用这个方法进行替换加密吗? |
|
没这样想过。。。做这题只是练习一下而已。。。
但用这种方法加密的确不失为一种加密方法,密码学上也有这种加密方式 ^_^
|
心绪平和,眼藏静谧,无比安稳的火... Purification of soul...Just a false...^_^ |
|
2008-5-18 19:00 |
|
|
bat-zw
金牌会员
永远的学习者
积分 3105
发帖 1276
注册 2008-3-8
状态 离线
|
『第
9 楼』:
我也来一个:
@echo off&setlocal enabledelayedexpansion
set code=abcdefghijklmnopqrstuvwxyz0123456789&set n=1
:begin
set _%n%=%code:~,1%&set code=%code:~1%
set /a n+=1
if defined code goto begin
for /f "delims=" %%i in (a.txt) do set n=1&set var=&set str=%%i&call :lp
pause>nul&goto :eof
:lp
set a=%str:~,1%&set str=%str:~1%
if %a% equ z set _%b%=a&goto echo
if %a% equ 9 set _%b%=0&goto echo
for /l %%i in (1,1,36) do if "!_%%i!"=="%a%" set b=%%i&set /a b+=1&goto echo
set /a n+=1
:echo
set var=%var%!_%b%!
if defined str goto lp
echo %var%
|
批处理之家新域名:www.bathome.net |
|
2008-5-19 12:35 |
|
|
bat-zw
金牌会员
永远的学习者
积分 3105
发帖 1276
注册 2008-3-8
状态 离线
|
『第
10 楼』:
Quote: | Originally posted by 26933062 at 2008-5-18 16:47:
开始看错题了。
:[code]
@echo off&setlocal enabledelayedexpansion
set "num=abcdefghijklmnopqrstuvwxyza"
for /l %%l in (0 1 25) do (
set /a max=%%l+1
call set "v ... |
|
测试结果不正确,少了10的判断。
|
批处理之家新域名:www.bathome.net |
|
2008-5-19 12:42 |
|
|
moniuming
银牌会员
永远的菜鸟
积分 1335
发帖 574
注册 2007-11-27 来自 广西
状态 离线
|
『第
11 楼』:
测试文本a.txt
code name
12 ali
13 sam
14 jim 5楼的运行结果
Quote: | F:\test\test3>test
dpefobnf
23bmj
24tbn
25kjn
请按任意键继续. . . |
|
9楼的运行结果:
Quote: | F:\test\test3>test1
此时不应有 z。 |
|
|
|
2008-5-19 13:13 |
|
|
26933062
银牌会员
积分 2268
发帖 879
注册 2006-12-19
状态 离线
|
『第
12 楼』:
Quote: | Originally posted by zw19750516 at 2008-5-19 12:42:
测试结果不正确,少了10的判断。 |
|
没注意,
再第一个for结束后,加一句 set _9=0 就可以了。
|
致精致简! |
|
2008-5-19 14:09 |
|
|
bat-zw
金牌会员
永远的学习者
积分 3105
发帖 1276
注册 2008-3-8
状态 离线
|
|
2008-5-19 15:33 |
|
|
26933062
银牌会员
积分 2268
发帖 879
注册 2006-12-19
状态 离线
|
『第
14 楼』:
回 13 楼
13 楼代码测试有漏掉字符的现象,不知是否我测试有误。
@echo off&setlocal enabledelayedexpansion
set "num=abcdefghijklmnopqrstuvwxyza"
for /l %%l in (0 1 25) do (
set /a max=%%l+1
call set "var=%%num:~!max!,1%%"
set "_!num:~%%l,1!=!var!"
set "_%%l=!max!"
)
set _9=0
for /f "delims=" %%a in (a.txt) do set "str=%%a"&call :loop
pause
:loop
if "%str:~0,1%"==" " (set /p= <nul) else set /p= !_%str:~0,1%!<nul
set "str=!str:~1!"
if defined str goto loop
echo.&goto :eof
|
致精致简! |
|
2008-5-19 17:30 |
|
|
bat-zw
金牌会员
永远的学习者
积分 3105
发帖 1276
注册 2008-3-8
状态 离线
|
『第
15 楼』:
Quote: | Originally posted by 26933062 at 2008-5-19 17:30:
13 楼代码测试有漏掉字符的现象,不知是否我测试有误。 |
|
确实是的,感谢指正,修改如下:
@echo off&setlocal enabledelayedexpansion
set code=abcdefghijklmnopqrstuvwxyz0123456789
:begin
set /a n+=1
set _%n%=%code:~,1%&set code=%code:~1%
if defined code goto begin
for /f "delims=" %%i in (a.txt) do set str=%%i&call :lp
pause>nul&goto :eof
:lp
set a=%str:~,1%&set str=%str:~1%&set n=0
if "%a%"=="z" set a=a&goto echo
if "%a%"=="9" set a=0&goto echo
if "%a%"==" " set a= &goto echo
for /l %%i in (1,1,36) do (
set /a n+=1
if "!_%%i!"=="%a%" set /a n+=1&goto echo
)
:echo
if %n% gtr 1 set a=!_%n%!
set var=%var%%a%
if defined str goto lp
echo %var%&set var=
|
批处理之家新域名:www.bathome.net |
|
2008-5-19 20:34 |
|