Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows CMD的无文件等价物a、 然后将configvpn.txt与a.txt进行比较,看看会有什么结果。也可能存在两个回声的竞争条件,至少在我的测试中是这样的。如果您始终提供用户名而不是密码,请尝试将timeout/t1>nul放在两个命令之间。@Stephan我不知道。现在已修复,但问题仍然存在。Stephan和Mark Setchell表示管道块内存在回声问题,请参阅您是否知道@echo%pwd%?将命令的输出发送到文件,即echo。。。;回声…>a、 然后将configvpn.txt与a.txt进行比较,看看会有什么结果。也可能存在两个回声的竞争条件,至少在我的测试中是这样的。如果您始终提供用户名而不是密码,请尝试将timeout/t1>nul放在两个命令之间。@Stephan我不知道。现在已修复,但问题仍然存在。Stephan和Mark Setchell表示管道块内存在回声问题,请看,你太棒了。它正在工作。还有一件事:我的测试密码没有特殊字符,但用户密码可能有。由于我的技能本身无法将该块重写为特殊字符安全的块,请您建议对代码进行任何更改,以提供一种对该情况的健壮处理?@Filipe您应该使用,它看起来很复杂,但通过使用延迟扩展,它可以很容易地解决特殊字符的问题。回响pwd!用有问题的角色解决问题你太棒了。它正在工作。还有一件事:我的测试密码没有特殊字符,但用户密码可能有。由于我的技能本身无法将该块重写为特殊字符安全的块,请您建议对代码进行任何更改,以提供一种对该情况的健壮处理?@Filipe您应该使用,它看起来很复杂,但通过使用延迟扩展,它可以很容易地解决特殊字符的问题。回响pwd!解决有问题的角色Shello的问题。我仍然能理解这个循环。我使用的是版本4.5.02033。@Tom,我手头没有vpncli来测试,但两个回声之间的延迟应该可以解决这个问题。将>nul timeout/T1放在echo之后的新行中!用户id!在回声之前!pwd!看看它是否能解决问题。另外,请确保echo命令中没有任何尾随空格,因为它们在文本编辑器中不可见,但会成为输出的一部分(如果有)。感谢您的快速回答。我成功了!问题是在用户名之前 密码,我必须选择要连接的组。所以我加了回声!组遵循您的模板。它成功了,不需要超时。再次感谢@sstHello。我仍然能理解这个循环。我使用的是版本4.5.02033。@Tom,我手头没有vpncli来测试,但两个回声之间的延迟应该可以解决这个问题。将>nul timeout/T1放在echo之后的新行中!用户id!在回声之前!pwd!看看它是否能解决问题。另外,请确保echo命令中没有任何尾随空格,因为它们在文本编辑器中不可见,但会成为输出的一部分(如果有)。感谢您的快速回答。我成功了!问题是,在使用用户名和密码之前,我必须选择要连接的组。所以我加了回声!组遵循您的模板。它成功了,不需要超时。再次感谢@sst_Windows_Batch File_Command Line_Cmd - Fatal编程技术网

Windows CMD的无文件等价物a、 然后将configvpn.txt与a.txt进行比较,看看会有什么结果。也可能存在两个回声的竞争条件,至少在我的测试中是这样的。如果您始终提供用户名而不是密码,请尝试将timeout/t1>nul放在两个命令之间。@Stephan我不知道。现在已修复,但问题仍然存在。Stephan和Mark Setchell表示管道块内存在回声问题,请参阅您是否知道@echo%pwd%?将命令的输出发送到文件,即echo。。。;回声…>a、 然后将configvpn.txt与a.txt进行比较,看看会有什么结果。也可能存在两个回声的竞争条件,至少在我的测试中是这样的。如果您始终提供用户名而不是密码,请尝试将timeout/t1>nul放在两个命令之间。@Stephan我不知道。现在已修复,但问题仍然存在。Stephan和Mark Setchell表示管道块内存在回声问题,请看,你太棒了。它正在工作。还有一件事:我的测试密码没有特殊字符,但用户密码可能有。由于我的技能本身无法将该块重写为特殊字符安全的块,请您建议对代码进行任何更改,以提供一种对该情况的健壮处理?@Filipe您应该使用,它看起来很复杂,但通过使用延迟扩展,它可以很容易地解决特殊字符的问题。回响pwd!用有问题的角色解决问题你太棒了。它正在工作。还有一件事:我的测试密码没有特殊字符,但用户密码可能有。由于我的技能本身无法将该块重写为特殊字符安全的块,请您建议对代码进行任何更改,以提供一种对该情况的健壮处理?@Filipe您应该使用,它看起来很复杂,但通过使用延迟扩展,它可以很容易地解决特殊字符的问题。回响pwd!解决有问题的角色Shello的问题。我仍然能理解这个循环。我使用的是版本4.5.02033。@Tom,我手头没有vpncli来测试,但两个回声之间的延迟应该可以解决这个问题。将>nul timeout/T1放在echo之后的新行中!用户id!在回声之前!pwd!看看它是否能解决问题。另外,请确保echo命令中没有任何尾随空格,因为它们在文本编辑器中不可见,但会成为输出的一部分(如果有)。感谢您的快速回答。我成功了!问题是在用户名之前 密码,我必须选择要连接的组。所以我加了回声!组遵循您的模板。它成功了,不需要超时。再次感谢@sstHello。我仍然能理解这个循环。我使用的是版本4.5.02033。@Tom,我手头没有vpncli来测试,但两个回声之间的延迟应该可以解决这个问题。将>nul timeout/T1放在echo之后的新行中!用户id!在回声之前!pwd!看看它是否能解决问题。另外,请确保echo命令中没有任何尾随空格,因为它们在文本编辑器中不可见,但会成为输出的一部分(如果有)。感谢您的快速回答。我成功了!问题是,在使用用户名和密码之前,我必须选择要连接的组。所以我加了回声!组遵循您的模板。它成功了,不需要超时。再次感谢@sst

Windows CMD的无文件等价物a、 然后将configvpn.txt与a.txt进行比较,看看会有什么结果。也可能存在两个回声的竞争条件,至少在我的测试中是这样的。如果您始终提供用户名而不是密码,请尝试将timeout/t1>nul放在两个命令之间。@Stephan我不知道。现在已修复,但问题仍然存在。Stephan和Mark Setchell表示管道块内存在回声问题,请参阅您是否知道@echo%pwd%?将命令的输出发送到文件,即echo。。。;回声…>a、 然后将configvpn.txt与a.txt进行比较,看看会有什么结果。也可能存在两个回声的竞争条件,至少在我的测试中是这样的。如果您始终提供用户名而不是密码,请尝试将timeout/t1>nul放在两个命令之间。@Stephan我不知道。现在已修复,但问题仍然存在。Stephan和Mark Setchell表示管道块内存在回声问题,请看,你太棒了。它正在工作。还有一件事:我的测试密码没有特殊字符,但用户密码可能有。由于我的技能本身无法将该块重写为特殊字符安全的块,请您建议对代码进行任何更改,以提供一种对该情况的健壮处理?@Filipe您应该使用,它看起来很复杂,但通过使用延迟扩展,它可以很容易地解决特殊字符的问题。回响pwd!用有问题的角色解决问题你太棒了。它正在工作。还有一件事:我的测试密码没有特殊字符,但用户密码可能有。由于我的技能本身无法将该块重写为特殊字符安全的块,请您建议对代码进行任何更改,以提供一种对该情况的健壮处理?@Filipe您应该使用,它看起来很复杂,但通过使用延迟扩展,它可以很容易地解决特殊字符的问题。回响pwd!解决有问题的角色Shello的问题。我仍然能理解这个循环。我使用的是版本4.5.02033。@Tom,我手头没有vpncli来测试,但两个回声之间的延迟应该可以解决这个问题。将>nul timeout/T1放在echo之后的新行中!用户id!在回声之前!pwd!看看它是否能解决问题。另外,请确保echo命令中没有任何尾随空格,因为它们在文本编辑器中不可见,但会成为输出的一部分(如果有)。感谢您的快速回答。我成功了!问题是在用户名之前 密码,我必须选择要连接的组。所以我加了回声!组遵循您的模板。它成功了,不需要超时。再次感谢@sstHello。我仍然能理解这个循环。我使用的是版本4.5.02033。@Tom,我手头没有vpncli来测试,但两个回声之间的延迟应该可以解决这个问题。将>nul timeout/T1放在echo之后的新行中!用户id!在回声之前!pwd!看看它是否能解决问题。另外,请确保echo命令中没有任何尾随空格,因为它们在文本编辑器中不可见,但会成为输出的一部分(如果有)。感谢您的快速回答。我成功了!问题是,在使用用户名和密码之前,我必须选择要连接的组。所以我加了回声!组遵循您的模板。它成功了,不需要超时。再次感谢@sst,windows,batch-file,command-line,cmd,Windows,Batch File,Command Line,Cmd,我有一个批处理,它包装了AnyConnect Mobility Client CLI vpncli.exe,并要求用户名和密码稍后将它们处理到vpncli 简化代码: set /p user_id=Username: set /p pwd=Password: echo %user_id%> c:\temp\configvpn.txt echo %pwd%>> c:\temp\configvpn.txt set install_dir="C:\Program Files (x8

我有一个批处理,它包装了AnyConnect Mobility Client CLI vpncli.exe,并要求用户名和密码稍后将它们处理到vpncli

简化代码:

set /p user_id=Username:
set /p pwd=Password:
echo %user_id%> c:\temp\configvpn.txt
echo %pwd%>> c:\temp\configvpn.txt

set install_dir="C:\Program Files (x86)\Cisco\Cisco AnyConnect Secure Mobility Client"

%install_dir%\vpncli.exe connect myvpn.mydomain.TLD -s < c:\temp\configvpn.txt

net use h: \\fileserver\sharename /user:domain\%user_id% %pwd%
到目前为止还没有成功。输出是这个循环:

  >> Please enter your username and password.
Group: VPN-TESTGROUP

Username: [myUsername] Password:
  >> Login failed.
Group: VPN-TESTGROUP

Username: [myUsername] Password:
  >> Login failed.
无限期地重复


有办法做到这一点吗?

这可能是管道块的问题,因为每个命令末尾都添加了空格

这段代码避免了空格,应该可以解决您的问题

(SET LF=^
%=empty=%
)

(
    echo %user_id%%%LF%%rem.
    echo %pwd%%%LF%%rem.
) |  %install_dir%\vpncli.exe connect myvpn.mydomain.TLD -s

但是您应该在用户id或密码中没有任何特殊字符的情况下对其进行测试

这可能是管道块的问题,因为每个命令末尾都添加了空格

这段代码避免了空格,应该可以解决您的问题

(SET LF=^
%=empty=%
)

(
    echo %user_id%%%LF%%rem.
    echo %pwd%%%LF%%rem.
) |  %install_dir%\vpncli.exe connect myvpn.mydomain.TLD -s

但是您应该在用户id或密码中没有任何特殊字符的情况下对其进行测试

正如您已经发现的,问题在于管道内的尾随空间,正如您在使用尾随空间时所看到的,需要进行特殊处理

导致混淆的管道的一个方面是,管道命令不是在具有批处理语法规则的批处理文件上下文中执行的,而是在具有子cmd实例中的命令行语法规则的命令行上下文中执行的

为了能够以这种方式构建和维护工作解决方案,需要彻底理解CMD/批处理管道的机制,对于稍微复杂的管道块来说,这不是一项简单的任务

这里有一种替代方法,可以使任何复杂命令块的管道化具有与普通批处理代码中相同的灵活性

@echo off
if "%~1"=="/LPipe" goto :/LPipe
if "%~1"=="/RPipe" goto :/RPipe

set /p user_id=Username:
set /p pwd=Password:

"%~f0" /LPipe | "%~f0" /RPipe
exit /b


:/LPipe
REM This will be executed inside a pipe but in batch context

REM Enable delayed expansion to be able to send any special characters
setlocal EnableDelayedExpansion

REM It's easy to take care of trailing spaces, no special hacks needed.
echo !user_id!
echo !pwd!
goto :EOF


:/RPipe
REM This will be executed inside a pipe but in batch context

%install_dir%\vpncli.exe connect myvpn.mydomain.TLD -s
goto :EOF

正如您已经发现的,问题在于管道内的尾随空间,正如您在《驾驭尾随空间》中所看到的,尾随空间需要特殊处理

导致混淆的管道的一个方面是,管道命令不是在具有批处理语法规则的批处理文件上下文中执行的,而是在具有子cmd实例中的命令行语法规则的命令行上下文中执行的

为了能够以这种方式构建和维护工作解决方案,需要彻底理解CMD/批处理管道的机制,对于稍微复杂的管道块来说,这不是一项简单的任务

这里有一种替代方法,可以使任何复杂命令块的管道化具有与普通批处理代码中相同的灵活性

@echo off
if "%~1"=="/LPipe" goto :/LPipe
if "%~1"=="/RPipe" goto :/RPipe

set /p user_id=Username:
set /p pwd=Password:

"%~f0" /LPipe | "%~f0" /RPipe
exit /b


:/LPipe
REM This will be executed inside a pipe but in batch context

REM Enable delayed expansion to be able to send any special characters
setlocal EnableDelayedExpansion

REM It's easy to take care of trailing spaces, no special hacks needed.
echo !user_id!
echo !pwd!
goto :EOF


:/RPipe
REM This will be executed inside a pipe but in batch context

%install_dir%\vpncli.exe connect myvpn.mydomain.TLD -s
goto :EOF

您是否知道@echo%pwd%?将命令的输出发送到一个文件,即echo。。。;回声…>a、 然后将configvpn.txt与a.txt进行比较,看看会有什么结果。也可能存在两个回声的竞争条件,至少在我的测试中是这样的。如果您始终提供用户名而不是密码,请尝试将timeout/t1>nul放在两个命令之间。@Stephan我不知道。现在已修复,但问题仍然存在。Stephan和Mark Setchell表示管道块内存在回声问题,请参阅您是否知道@echo%pwd%?将命令的输出发送到文件,即echo。。。;回声…>a、 然后将configvpn.txt与a.txt进行比较,看看会有什么结果。也可能存在两个回声的竞争条件,至少在我的测试中是这样的。如果您始终提供用户名而不是密码,请尝试将timeout/t1>nul放在两个命令之间。@Stephan我不知道。现在已修复,但问题仍然存在。Stephan和Mark Setchell表示管道块内存在回声问题,请看,你太棒了。它正在工作。还有一件事:我的测试密码没有特殊字符,但用户密码可能有。由于我的技能本身无法将该块重写为特殊字符安全的块,请您建议对代码进行任何更改,以提供一种对该情况的健壮处理?@Filipe您应该使用,它看起来很复杂,但通过使用延迟扩展,它可以很容易地解决特殊字符的问题。回响pwd!用有问题的角色解决问题你太棒了。它正在工作。还有一件事:我的测试密码没有特殊字符,但用户密码可能有。由于我的技能本身无法将该块重写为特殊字符安全的块,请您建议对代码进行任何更改,以提供一种对该情况的健壮处理?@Filipe您应该使用,它看起来很复杂,但通过使用延迟扩展,它可以很容易地解决特殊字符的问题。回响pwd!解决有问题的角色Shello的问题。我仍然能理解这个循环。我使用的是版本4.5.02033。@Tom,我手头没有vpncli来测试,但两个回声之间的延迟应该可以解决这个问题。将>nul timeout/T1放在echo之后的新行中!用户id!在回声之前!pwd!看看它是否能解决问题。另外,请确保echo命令中没有任何尾随空格,因为它们在文本编辑器中不可见,但会成为输出的一部分(如果有)。感谢您的快速回答。我成功了!问题是在用户名之前
密码,我必须选择要连接的组。所以我加了回声!组遵循您的模板。它成功了,不需要超时。再次感谢@sstHello。我仍然能理解这个循环。我使用的是版本4.5.02033。@Tom,我手头没有vpncli来测试,但两个回声之间的延迟应该可以解决这个问题。将>nul timeout/T1放在echo之后的新行中!用户id!在回声之前!pwd!看看它是否能解决问题。另外,请确保echo命令中没有任何尾随空格,因为它们在文本编辑器中不可见,但会成为输出的一部分(如果有)。感谢您的快速回答。我成功了!问题是,在使用用户名和密码之前,我必须选择要连接的组。所以我加了回声!组遵循您的模板。它成功了,不需要超时。再次感谢@sst