私は持っているパスワードをデコードするWindowsバッチファイルを持っています(何かがどのように機能するかを確認するためだけに、ナーキーなコメントはありません)。
パスワードは問題のないファイルから読み取られますが、パスワード文字の長さが不明な場合に対応する方法がわからないという事実を除いて、問題はありません。
以下は機能しますが、限られた数の文字に対してのみ、未知の (無制限の) サイズのパスワードに対して類似したものをプログラムするにはどうすればよいですか?
なぜ ~0,2 なのか疑問に思っているなら、アルファベットの各文字が 2 つの数値文字セットで表されるためです。たとえば、00 は A を表し、01 は B を表します。これらは、私がしばらく前に作成した別のプログラムでランダムに生成されます。
IF %MYPASSWORD:~0,2% == %AA% msg * first letter is A
IF %MYPASSWORD:~0,2% == %BB% msg * first letter is B
IF %MYPASSWORD:~0,2% == %CC% msg * first letter is C
IF %MYPASSWORD:~0,2% == %DD% msg * first letter is D
IF %MYPASSWORD:~0,2% == %EE% msg * first letter is E
IF %MYPASSWORD:~0,2% == %FF% msg * first letter is F
IF %MYPASSWORD:~0,2% == %GG% msg * first letter is G
IF %MYPASSWORD:~0,2% == %HH% msg * first letter is H
IF %MYPASSWORD:~0,2% == %II% msg * first letter is I
IF %MYPASSWORD:~0,2% == %JJ% msg * first letter is J
IF %MYPASSWORD:~0,2% == %KK% msg * first letter is K
IF %MYPASSWORD:~0,2% == %LL% msg * first letter is L
IF %MYPASSWORD:~0,2% == %MM% msg * first letter is M
IF %MYPASSWORD:~0,2% == %NN% msg * first letter is N
IF %MYPASSWORD:~0,2% == %OO% msg * first letter is O
IF %MYPASSWORD:~0,2% == %PP% msg * first letter is P
IF %MYPASSWORD:~0,2% == %QQ% msg * first letter is Q
IF %MYPASSWORD:~0,2% == %RR% msg * first letter is R
IF %MYPASSWORD:~0,2% == %SS% msg * first letter is S
IF %MYPASSWORD:~0,2% == %TT% msg * first letter is T
IF %MYPASSWORD:~0,2% == %UU% msg * first letter is U
IF %MYPASSWORD:~0,2% == %VV% msg * first letter is V
IF %MYPASSWORD:~0,2% == %WW% msg * first letter is W
IF %MYPASSWORD:~0,2% == %XX% msg * first letter is X
IF %MYPASSWORD:~0,2% == %YY% msg * first letter is Y
IF %MYPASSWORD:~0,2% == %ZZ% msg * first letter is Z
これは最初の文字のみをカバーする良い原因です。たとえば 100 文字の場合、1000 1000 倍以上の場合、上記の 100 回以上を実行する必要があります (申し訳ありませんが、これはループにとって理想的だと考えていますが、常に問題があります)。
つまり、%MYPASSWORD:~998:2% (パスワードに 1000 文字の場合) または %MYPASSWORD:~99998:2% (100 万文字の場合) にループしようとしています。明らかに誰もその量をコード化していません