在Windows批处理中提示时输入用户名密码

时间:2013-03-31 08:55:10

标签: batch-file echo

我需要在Windows中为一个实用程序编写批处理文件。但是每次从命令提示符运行时,实用程序都会要求输入用户名和密码。我想在命令提示符下提示时传递用户名和密码。现在命令运行后,用户名和密码的问题来自qs 2单独的问题,如: 输入uname: 输入密码:

这成为一个问题,因为只作为参数传递%1和%2没有帮助因为uname和pwd将作为单独的qs出现。请帮我在windows中写一个批处理...我是Windows编程的全新...

4 个答案:

答案 0 :(得分:1)

您是否检查过该实用程序:

  • 没有用于输入用户名/密码的命令行参数?
  • 没有其他输入用户名密码的机制,例如using Environment variables

我假设您检查了所有这些,除了手动输入用户名和密码之外别无选择。

在这种情况下,你应该看一下AutoHotkey 它用于创建可以自动化UI输入的脚本,特别是运行需要键盘和鼠标控制的应用程序。

还有一个名为SendKeys.net的小工具用于批处理文件 虽然没有测试过。

答案 1 :(得分:0)

Renauld是对的,命令行参数将是最佳解决方案。查看实用程序手册或尝试utility.exe /?

以下解决方案可行(或可能不行) 把你的答案写在一个文件上(例如“credentials.txt”)(确保它只包含两行)

myusername
mypassword

然后尝试

myutility < credentials.txt

出于安全原因,如果编写该实用程序,这将无效。

答案 2 :(得分:0)

此任务可以通过Windows中的VBS完成。您可以使用SendKeys()来模拟键盘操作。它的工作方式类似于Linux中的'expect'命令。 BAT无法帮助你。

答案 3 :(得分:0)

您可以调用此批处理-HTA-VBScript混合文件(GUI登录提示符):

<!-- :

  :: LoginGUI.bat | Wasif Hasan | Sep 2020
  :: This is a Batch-HTA-VBScript hybrid that will show a GUI window to login
  :: Save it as a .bat file and run it in your other batch files
  :: and returns the username and password as a result (to STDOUT) (in "username;password" format)
  :: If you enter no password in the dialog it will show an error message box and persist 
  :: Arguments: "BatchFilePath" "prompt (To Show beside the password box)" BoolAllowBlankUsername BoolAllowBlankPassword
  :: Default prompt is "password"

  @echo off & setlocal EnableDelayedExpansion
  if "%*"=="" (
  for /f "tokens=* delims=" %%a in ('echo "Password:" False False ^| mshta.exe "%~f0"') do set "pass=%%a"
  ) else (
  for /f "tokens=* delims=" %%a in ('echo %* ^| mshta.exe "%~f0"') do set "pass=%%a"
  )
  echo !pass! & exit /b 0

-->

<!DOCTYPE html>
<html>
<head>
<title>Password box</title>
<hta:application
  applicationName="Password box"
  border="thin"
  maximizeButton="no"
  minimizeButton="no"
  showinTaskbar="no"
  scroll="no"
  singleInstance="yes"
  contextMenu="no"
  selection="no"
/>
<script type="text/vbscript">
  Sub Window_OnLoad()
    Dim fso2, strPrompt, dblQuote
    window.resizeTo 320,180
    Set fso2 = CreateObject("Scripting.FileSystemObject").GetStandardStream(0)
    strPrompt = fso2.ReadLine
    dblQuote = Chr(34)
    strPromptX = Split(strPrompt," ")
    strPrompt = strPromptX(0)
    strPrompt = Replace(strPrompt, dblQuote, "")
    Document.All.prompt.innerHTML = strPrompt
    document.All.username.Focus
  End Sub
  Sub Validate() 
    Dim fso, GetPassword, GetUsername
    GetPassword = Document.All.Password.Value
    GetUsername = Document.All.username.Value
    If GetPassword = "" Then 
      If Not allowBlankPassword = True Then
        MsgBox "Please enter a password!",48,"Password box"
      End If
    ElseIf GetUsername = "" Then
      If Not allowBlankUsername = True Then
        MsgBox "Please enter a username!",48,"Password box"
      End If 
    Else
      Set fso = CreateObject("Scripting.FileSystemObject").GetStandardStream(1)
      window.Close(fso.write(GetUsername & ";" & GetPassword))
    End If
  End Sub
</script>
</head>
<body style="background-color:lightblue;font-family:Tahoma;">
<div align="center">
<span id="username_l">Username:</span>
<input type="text" size="20" id="username" /><br /><br />
<span id="prompt">Password:</span>
<input type="password" size="20" id="Password" />
<p><input type="button" value="Login" onClick="Validate()" /></p>
</div>
</body>
</html>