gpt4 book ai didi

windows - 将具有特殊字符的参数从批处理文件发送到另一个批处理文件

转载 作者:可可西里 更新时间:2023-11-01 11:24:50 26 4
gpt4 key购买 nike

我有以下代码:

second.bat 文件

echo %~1
echo %~2

first.bat 文件

@ECHO OFF &SETLOCAL
@SETLOCAL EnableExtensions EnableDelayedExpansion

set /p User=Enter Username:
set /p Password=Enter Password:

call second.bat %User% %Password%

如果用户输入 Admin 作为用户名和 Admin!23 作为密码,second.bat echo 中产生的输出如下:

Admin
Admin23

如何在 second.bat 文件中获取特殊字符,如下所示?

Admin
Admin!23

最佳答案

这取决于你的可能性。
您可以更改 second.bat 文件吗?

那么您应该通过(变量)引用而不是值来传输值,因为 CALL 不能很好地处理复杂值。

解决方案 1:
然后你可以把second.bat改成

@echo off
echo !user!, !password!

解决方案 2:
如果不允许更改 second.bat 并且它需要密码作为调用参数,则可以将 first.bat 更改为

@ECHO OFF
setlocal EnableExtensions EnableDelayedExpansion

set /p User=Enter Username:
set /p Password=Enter Password:

set ^"password=!password:"=""!"
setlocal DisableDelayedExpansion
call second.bat "%%User%%" "%%Password%%"
exit /b

只有在密码中使用引号时才会失败,然后它们会加倍。

解决方案 3:
在不修改文件的情况下将代码注入(inject) second.bat。

假设 second.bat 看起来像

@echo off
setlocal EnableDelayedExpansion
set "user=%~1"
set "pwd=%~2"

echo !pwd!

将 first.bat 更改为:

set ^"Inject=." & (set pwd=^!password^!) & rem #"
call second.bat "%%User%%" %%Inject%%

这可以处理任何密码,如 second.bat 中的行设置“pwd=%~2”将被即时修改

set "pwd=." & (set pwd=!password!) & rem #"

关于windows - 将具有特殊字符的参数从批处理文件发送到另一个批处理文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41460976/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com