Batch file 为任何输入(或解决方法)设置/P

Batch file 为任何输入(或解决方法)设置/P,batch-file,set,Batch File,Set,我使用一个脚本来启动各种应用程序需要当我的实时流,并使用 SET/p$headerText=“请输入流标题文本:” 在测试其他功能时,我使用了输入Testign for all,并直接了解了代码插入 整个代码如下所示,之后不再使用$headerText。 :setobstitlext 设置/P“$headerText”=“请输入流标题文本:” 如果定义%$headerText%( ECHO%$headerText%%>“%$obsFilePath%%$headerTxtFile%” ) 我正在

我使用一个脚本来启动各种应用程序需要当我的实时流,并使用

SET/p$headerText=“请输入流标题文本:”

在测试其他功能时,我使用了输入
Testign for all
,并直接了解了代码插入

整个代码如下所示,之后不再使用
$headerText

:setobstitlext
设置/P“$headerText”=“请输入流标题文本:”
如果定义%$headerText%(
ECHO%$headerText%%>“%$obsFilePath%%$headerTxtFile%”
)

我正在寻找一种方法来捕获字符串的整个输入,其中输入命令的用户不会被解析为输入字符串的命令。我可以告诉用户他们需要逃出
&
,但我不想限制他们可以使用的单词

提前感谢您的时间和考虑


Ashlee

首先,
如果定义%$headerText%
应该是
如果定义了$headerText
(没有
%
字符)

其次,使用cmd.exe时,某些字符会以某种方式被解释(例如,
被解释为输出重定向),这是事实

如果您可以使用免费软件下载程序,则可以使用editv32.exe或editv64.exe来读取此输入,而不是
set/p
。它将自动为您插入转义字符。例如:

editv64 -p "Please enter stream header text:" $headerTxt
您可以从以下位置下载editv32.exe(32位)和editv64.exe(64位):


使用延迟扩展将防止出现您试图避免的带有特殊字符的场景

@echo off
setlocal EnableDelayedExpansion
set /p "$headerTxt=Please enter Stream Header text:"
echo !$headerTxt!
endlocal
exit /b 0
此外,这里还有一个简单的输入例程,它将持续提示,直到给出输入

@echo off
setlocal EnableDelayedExpansion
call :Input $headerTxt "Please enter Stream Header text:"
echo !$headerTxt!
endlocal
exit /b 0

:Input <Var> [Prompt]
2>nul set /p "%~1=%~2"
if not defined %~1 = goto Input
exit /b 0
@echo关闭
setlocal EnableDelayedExpansion
调用:输入$headerText“请输入流标题文本:”
回声$海德特克斯!
端部
退出/b0
:输入[提示]
2> nul set/p“%~1=%~2”
如果未定义,%1=转到输入
退出/b0

非常感谢,很抱歉延迟回复,另一个项目优先于个人工作。