В вашем CMD-скрипте есть несколько проблем, но, в частности, как я уже упоминал выше, вы не ставите двойные кавычки вокруг путей.
Кроме того, вы добавляли пробелы в конце всей вашей строки в файле bat, но это заставит вас собирать неправильный PW, вы также не удалили временный файл bat или файл пароля после этого.
Кажется, что немного сложно пройти через всплывающее отдельное окно, вы можете отказаться от создания второго пакетного файла и вместо этого вызвать подфункцию, заставив свой сценарий поддерживать аргументы строки cmd.
В любом случае это должно работать больше, чем вы ожидаете:
@ECHO OFF
ECHO.Please enter your password in the popup window and then press enter
SET "_TempBat=%temp%\p.cmd"
SET "_PWFile=%temp%\pass.txt"
SET "_CMDs=%cd%commands.txt"
REM Create temporary batch file to make popup window for entering password 'masked'
ECHO.SETLOCAL>"%_TempBat%"
REM ECHO.ECHO OFF >"%_TempBat%"
ECHO.mode CON COLS=42 LINES=1 >"%_TempBat%"
ECHO.color CF>>"%_TempBat%"
ECHO.Title Enter Password >>"%_TempBat%"
ECHO.SET /p "_Pass=Enter Password: " >>"%_TempBat%"
ECHO.ECHO.%%_pass%%^>"%_PWFile%">>"%_TempBat%"
ECHO.exit>>"%_TempBat%"
ECHO.exit>>"%_TempBat%"
START /wait "" "%_TempBat%"
DEL /F /Q "%_TempBat%"
IF NOT EXIST "%_PWFile%" (
"%_PWFile%" Not Created!
) ELSE (
FOR /F "Tokens=*" %%A IN ('TYPE "%_PWFile%"') DO (
SET "_PW=%%A"
DEL /F /Q "%_PWFile%"
)
)
@ECHO.ECHO.%_PW% ^| sudo -S -u x0ats ECHO.startup.sh start>> "%_CMDs%"
@ECHO.read>> "%_CMDs%"
for /f "delims=" %%a in ('Type "%_CMDs%"') DO (
Start PuTTY username@%%a -pw %_PW% -m "%_CMDs%"
)
Pause
DEL /F /Q "%_CMDs%"
ТАКЖЕ Я изменил цвета, которые вы выбрали Ярко-желтый, на Ярком справа трудно читается, я использовал Ярко-белый на Ярко-красном. о, и я также добавил Echo Off во второй сценарий, потому что опять же было бесполезно иметь там все лишние вещи
Также я посмотрел на это и заметил, что вы не собираетесь сохранять PW, сохраненные в файле PW, поэтому я исправил это с помощью %%, так что первый% будет удален.