批量多变量为一/双引号

时间:2018-02-16 12:53:09

标签: batch-file cmd

大家好我试图将多个变量添加到一个。

ET CA1="C:/Users/"
SET CA2=Bla
SET CA3="/New Folder/"
SET CA=%CA1%%CA2:~%%CA3%"
echo %CA%

这是输出

"C:/Users/"Bla"/New Folder/"

当我这样做时,无论我做什么,我总是在中间得到双引号"。 我试过用:~1,-1%"删除最后一个字符但输出只是" l"在中间。

"最终产品"我想存档是通过提示询问用户名并将字符串用于其他内容。这是我能想到的最好的(当然也不是最好的)。添加3个不同的变量以获得正确的路径。

有没有其他方法可以像这样:

set /p Username="Insert Username"  -> pete for example
set CA="C:/Users/%CA%/New Folder/" 
echo %CA%

输出:

"C:/Users/pete/New Folder/"

1 个答案:

答案 0 :(得分:1)

根据你的第一个例子,试试这个:

@echo off
SET "CA1=C:/Users/"
SET "CA2=Bla"
SET "CA3=/New Folder/"
SET "CA=%CA1%%CA2:~%%CA3%"
echo "%CA%"
pause

简单地回应:

"C:/Users/Bla/New Folder/"

请注意,您将引号移至变量名称之前,而不是=

之后

在第二部分,您需要用户输入。有两种方法:

用户输入法

set /p "myuser=Insert Username: "
set "CA=C:/Users/%myuser%/New Folder/" 
echo "%CA%"
pause

或从环境中获取名称。

@echo off
set "CA=C:/Users/%username%/New Folder/" 
echo "%CA%"
pause

注意,第二种方法获取当前从环境登录的用户的%username%变量,并自动进行设置。

最后,一些提示。始终使用help中的cmd.exe来查找相关命令 将每个命令与/?开关一起使用可获得有关它的更多信息。即set /?

此外,永远不要修改现有的环境变量。例如,在您的示例set /p Username="Insert Username.. %username% is already an existing environment variable, rather create something unique like mysername`

要对此进行测试,请从cmd.exe echo %username%进行简单操作并了解它的来源,只需运行set即可显示环境变量。