То, что вы пытаетесь сделать, - это то, что я слышал, называемое "безопасность по неизвестности" ....
Вы можете передать пароль из процесса, который выполняет командный файл, и заблокировать этот процесс, чтобы никакие учетные записи не могли читать с него доступ к этому компьютеру и, возможно, использовать EFS для папки, в которой он находится, если вы можете или, возможно, немного Локер зашифровывает жесткий диск, на котором находится скрипт.
Таким образом, в пакете вы должны иметь SET ftpPass=%~1
а затем с помощью планировщика задач или того, что вы заблокировали, который выполняет его, передайте пароль в качестве первого аргумента как C:\Folder\FTPScript.bat "MyPassword"
так в скрипте они увидят только %ftpPass%
.
Пример пакетного скрипта
@ECHO ON
SET ftpPass=%~1
SET ftphost=<hostname>
SET ftpusr=<username>
SET ftptmpfile=%temp%\temp_MyFTPJob.ftp
IF EXIST "%ftptmpfile%" DEL /Q /F "%ftptmpfile%"
:ftp
ECHO open %ftphost%> %ftptmpfile%
ECHO %ftpusr%>> %ftptmpfile%
ECHO %ftpPass%>> %ftptmpfile%
ECHO prompt >> %ftptmpfile%
ECHO binary >> %ftptmpfile%
ECHO mput "C\folder\path\*.txt" >> %ftptmpfile%
ECHO dir >> %ftptmpfile%
ECHO bye >> %ftptmpfile%
ftp -s:%ftptmpfile%
IF EXIST "%ftptmpfile%" DEL /Q /F "%ftptmpfile%"
EXIT
Дополнительные ресурсы
Windows 10: Запланированные задачи с блокировкой / разблокировкой рабочей станции не запускаются