Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.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
Batch file 在DOS中如何使用以空格开头的字符串设置/P_Batch File_Set_Newline - Fatal编程技术网

Batch file 在DOS中如何使用以空格开头的字符串设置/P

Batch file 在DOS中如何使用以空格开头的字符串设置/P,batch-file,set,newline,Batch File,Set,Newline,我希望在DOS批处理中得到这种结果: ==> Please enter your filename, formatted as [user][PC_id] : 允许用户在“:”之后输入文件名 我尝试了很多组合,但我能用的最好的组合 ECHO --^> Please enter your filename, formatted as Set /P FILE=[user][PC_id] : (不显示“[”之前的空格)您对Vista/Win7中引入的功能有问题。 当使用set

我希望在DOS批处理中得到这种结果:

==> Please enter your filename, formatted as
    [user][PC_id] : 
允许用户在“:”之后输入文件名

我尝试了很多组合,但我能用的最好的组合

ECHO --^> Please enter your filename, formatted as
Set /P FILE=[user][PC_id] :

(不显示“[”之前的空格)

您对Vista/Win7中引入的功能有问题。
当使用
set/p
时,它会去除字符串前面的所有空白字符

但在你的情况下,这很容易,因为你想回应两条线

@echo off
setlocal EnableDelayedExpansion
set LF=^


set /p "file=--> Please enter your filename, formatted as!LF!    [user][PC_id]"

jeb的解决方案在打印两行时效果很好。但是有一种通用的解决方案,当您只想打印带前导空格的单行时效果很好。您所需要的只是一个退格字符

@echo off
setlocal
:: Define BS to contain a backspace
for /f %%A in ('"prompt $H&for %%B in (1) do rem"') do set "BS=%%A"

::Only need %BS% if you know prompt starts at line beginning
Set /P "FILE=%BS%    [user][PC_id] : "

::If prompt is not at line beginning then need an extra char before %BS%
<nul set /p "=Part1"
<nul set /p "=.%BS%    Part2"
@echo关闭
setlocal
::定义BS以包含退格
对于/f%%A in(“'prompt$H&for%%B in(1)do rem””)请设置“BS=%%A”
::如果知道提示从行开始,则只需要%BS%
设置/P“文件=%BS%[user][PC\u id]:”
::如果提示符不在行首,则需要在%BS%之前添加一个额外字符
另一种变体:

exit | cmd /k prompt -$G Please enter your filename, formatted as$_$s$s$s[user][PC_id]$s
set /p FILE=

echo %FILE%

您不需要在帖子中添加签名-您的用户卡会自动添加。在DOS中?您是指Windows,对吗?实际上,我的问题之前只需要空格。我尝试了您的答案:不幸的是,屏幕上没有显示任何内容:-(你在'set LF=^'之后有两行空行吗?'set LF=^'和没有'set LF=^'没有区别,所以没有两行空行。我使用MS版本6.1.7601等等!!我误解了你的问题。你的问题在我的脚本上,我知道它与我的结果有关!!它在'set LF=^'之后有两行空行!!非常感谢!我还没有尝试过你的问题!!)我们的解决方案,但打印一个退格字符是我自己试图做的,但没有成功(我的许多“组合之一”);-)我可能有一天会对它感兴趣,所以,谢谢你的帮助!;)