找到所有发生变更信件的错误信息 [英] Find ALL Ocurences of Letter change to Diffrent Letter

查看:131
本文介绍了找到所有发生变更信件的错误信息的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

  set a = a 
set b = b
set c = c
set aa = 543241254
set bb = 785214185
set cc = 842501445

我的问题是如何扫描用户输入的文件,并将所有字母更改为数字。 (文件被改变的文本就像 hihowareyou 没有空格或大写字母)
我试过的是在文件中搜索一个'a'并替换它数字,但我的部分没有工作。

 (for / fdelims =%% i in('findstr / n^%textfile%')do(
setline = %% i
setlocal enabledelayedexpansion
setline =!line:%b%=%bb%!
echo(!line!
endlocal
))>%newfile%
类型%newfile%>>%newfile%

我不知道如何扫描文本文件中的字母,并将其替换为%a%,%b %,%c%等。

解决方案

您应该首先意识到这些命令:

  set a = a 
set b = b
set c = c

...根据定义无用(即没有进一步的解释),虽然很明显,在这种情况下,写入%一个%将永远与 a 相同(与其余字母相同)。



如果你想通过一串数字更改一个字母,那么正确的方法应该是:

 设置= 543241254 
set b = 785214185
set c = 842501445

然后,在您可以通过变量的内容更改a信件,您可以在内为命令:

  setline =!line:a =%a%!

再次:通过的内容更改 a 一个变量。






现在,您应该意识到,您需要执行以前的替换在单个 a 字母/变量上,但在一系列变量上逐一表示。以同样的方式(这意味着使用相同的代码)处理一系列变量的标准方式是通过命令命令将下标的值与 数组 。例如,如果我们为数组的名称选择letter,并在数组的不同元素中定义所需的替换值,那么我们可以这样做:

  set letter [a] = 543241254 
set letter [b] = 785214185
set letter [c] = 842501445

此后,我们只需要知道这些变量/值可能被操作。关于这一点的详细信息,请参见 cmd.exe(批处理)脚本中的数组,链表和其他数据结构,所以我不再重复一遍。但是,解决此问题所需的阵列管理比在该链接中给出的完整说明更简单。



如果执行此命令: set letter ,将显示以letter开头的所有变量,包括它们的值;例如:

  letter [a] = 543241254 
letter [b] = 785214185
letter [c ] = 842501445

如果我们对/ Ftokens = 2使用 3 delims = [] =%% a in('set letter')do ... 命令,然后 %% a 可替换参数将包含数组的每个下标,即字母 a b c 等,而 %% b 参数将包含相应的数值。



这样,为了完成你的程序并替换所有定义的字母,你只需要放置你的 setline =!line:%b%=%bb%! code>在之前的行,并正确更改%b%部分,代表该信 %% a 并将%bb%部分替换为代表数值 %% b

  for / Ftokens = 2,3 delims = [] =%% a in('set letter' )do(
setline =!line:%% a = %% b!

当然,您还必须在程序开始时定义 字母数组...


I am working on a encryption method that changes all letters to a string of numbers an Example Follows:

set a=a
set b=b
set c=c
set aa=543241254
set bb=785214185
set cc=842501445

My issue is How can I scan a file entered by the user and change all letters to the numbers. (The File being changed text is like "hihowareyou" No spaces or capitals) What I tried was to search for an 'a' in said file and replace it with the numbers but my section did not work.

(for /f "delims=" %%i in ('findstr /n "^" "%textfile%"') do (
    set "line=%%i"
    setlocal enabledelayedexpansion
    set "line=!line:%b%=%bb%!"
    echo(!line!
    endlocal
))>"%newfile%"
type "%newfile%" >>%newfile%

I am not sure what to do to scan for the letter in the text file and replace it with %a%,%b%,%c% etc.

解决方案

You should realize at first that these commands:

set a=a
set b=b
set c=c

... are useless "by definition" (that is, with no further explanation), although it should be evident that in this case writting %a% will always be the same than writting just a (the same happen for the rest of letters).

If you want to change one letter by a string of numbers, then the right way should be this:

set a=543241254
set b=785214185
set c=842501445

Then, in order to change the 'a' letter by the contents of a variable, you may do something like this inside your for command:

set "line=!line:a=%a%!"

Again: this change the a letter by the contents of a variable.


Now, you should realize that you need to perform the previous replacement not on the single a letter/variable, but on a series of variables represented each one by one letter. The standard way to process a series of variables in the same way (that really means "using the same code") is via a for command that vary the value of a subscript in combination with an array. For example, if we choose "letter" for the name of the array and define the desired replacement values in different elements of the array, surely we do something like this:

set letter[a]=543241254
set letter[b]=785214185
set letter[c]=842501445

After this, we just need to know how these variables/values may be manipulated. Full details on this point are given at Arrays, linked lists and other data structures in cmd.exe (batch) script, so I will not repeat they here again. However, the array management required to solve this problem is simpler than the full explanation given at that link.

If you execute this command: set letter, all the variables that start with "letter" will be shown, including their values; for example:

letter[a]=543241254
letter[b]=785214185
letter[c]=842501445

If we use a for /F "tokens=2,3 delims=[]=" %%a in ('set letter') do ... command, then the %%a replaceable parameter will contain each one of the subscripts of the array, that is, the letters a, b, c, etc., and the %%b parameter will contain the corresponding numeric values.

This way, in order to complete your program and replace all defined letters, you just need to place your set "line=!line:%b%=%bb%!" line inside previous for command and correctly change the %b% part, that represent the letter, by %%a; and replace the %bb% part, that represent the numeric value, by %%b:

for /F "tokens=2,3 delims=[]=" %%a in ('set letter') do (
   set "line=!line:%%a=%%b!"
)

Of course, you must also define the letter array at beginning of the program...

这篇关于找到所有发生变更信件的错误信息的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆