複数の .bat で生成されたパスワードを .txt ファイルに印刷する

複数の .bat で生成されたパスワードを .txt ファイルに印刷する

このサイトで「CMD でパスワードを生成する方法」を検索したところ、非常に役立つ例がいくつか見つかりました。その後、一度に複数のパスワードを印刷できるようにしたいと考え (1 日中クリックし続けるのは大変です)、ジェネレーターのコードを一定回数実行できるコードを見つけました。次にやりたいのは、生成されたすべてのパスワードを 1 つの .txt ファイルに印刷することです。そのためには「コマンド > [ドライブ:\path*.txt]」を使用する必要があることは知っていますが、方法がわかりません :/。ジェネレーターとループ コードを組み合わせると、次のようなコードになりましたが、ファイルには 1 つのパスワードしか印刷されません。もう 1 つのパスワードが生成されると、古いパスワードが置き換えられます。何か助けていただけますか? :D

@echo off
set execute counter=0
:loop
(@Echo off  
rem 16 stings pwd

setlocal ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
set alfanum=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789

set pwd=
FOR /L %%b IN (0, 1, 16) DO (
SET /A rnd_num=!RANDOM! * 62 / 32768 + 1
for /F %%c in ('echo %%alfanum:~!rnd_num!^,1%%') do set pwd=!pwd!%%c
)

echo pwd=%pwd% > D:\password.txt
) :: This here between the () is the on line password generator
set /a executecounter=%executecounter%+1
if "%executecounter%"=="30" goto done
goto loop
:done
echo Complete!
pause

答え1

とても近いですね。

> 演算子は、テキストファイルに書き込むことを意味します。テキストファイルがすでに存在する場合は上書きします。存在しない場合は、新しいファイルを作成します。これにより、以前のパスワードが取り消されます。

代わりに必要なのは >> 演算子です。これは、テキストファイルに書き込むことを意味します。テキストファイルがすでに存在する場合は、それに追加します。存在しない場合は、新しいファイルを作成します。

だから交換する

echo pwd=%pwd% > D:\password.txt

と:

echo pwd=%pwd% >> D:\password.txt

同じファイルに空白行を作成する場合は、次の行を追加します: echo. >> D:\password.txt

出力は次のようになります。

pwd=randompass

pwd=randompass

これは、パスワード以外の情報も保存したい場合に便利です。たとえば、次のようになります。

set foruser /p "for which user is this?"

echo -------------- >> d:\password.txt
echo Password generated at %date% %time%. >> d:\password.txt
echo Password was made for user: %foruser%
echo pwd=randompass >> d:\password.txt
echo -------------- >> d:\password.txt
echo. >> d:\password.txt

関連情報