バッチファイルを実行するだけで、複数のシステムにログインするためにPuttyコマンドラインを使用するスクリプトを作成しています。バッチは、起動したいサーバー名のリストを問題なくテキストファイルから読み込みます。遅延展開がバッチスクリプト全体で機能しない
「set/p」で入力したパスワードを使用すると問題が発生します。パスワードには、アンパサンドなどの特殊文字が含まれています。変数を使用するには、DELAYEDEXPANSIONを使用しようとしています。
!passを使用して、パスワードを使用して変数をエコーすることができます。しかし、puttyが呼び出されるforループ内で使用されると、DELAYEDEXPANSIONは失敗するようです。結果は文字通り!パス!
SETLOCAL ENABLEDELAYEDEXPANSION
set /p destination="Enter the file name: "
set /p "pass=Your LAN PASSword: "
ECHO Pass=!pass!
pause
for /F %%z in (%destination%) do (
start C:\DEV\Utilities\putty\putty -ssh %username%@%%z -pw !pass! -m "C:\DEV\Utilities\putty\commands" -t
timeout /t 01 /nobreak > NUL
)
pause
%pass%のようなパーセント記号を持つ変数を使用すると、パスワードが正しくありません。たとえば、「c & ndyCone」は「c & ndyCone」(引用符は少ない)となります。パテに正しいパスワードを渡すための提案はありますか?
私はこれが好きで、動作するように表示されます。私の質問に基づいて構築するには、パスワードの一部として引用符がある場合、これは動作しますか?シングルまたはダブル、オープンまたはクローズ?ごめんなさい。 – gritts
二重引用符は、二重引用符で囲まれたバックスラッシュでエスケープすることができます。単一引用符はバッチで特別な意味を持ちません。 – LotPings