2015-12-15 45 views
0

我已经制作了一个用于使用用户输入的名称创建预先构建的文件夹的小型bat文件。它工作正常,直到用户输入一个空格的变量。例如 - 输入“John”的用户将创建一个名为John的子文件夹(正是我们想要的),但是如果用户输入Smith,John,则创建的文件夹将被称为Smith。我如何允许脚本注册用户输入的空间?如何在用户输入的变量中为蝙蝠脚本提供空间

我的代码 -

@echo off 

set /P dest=Enter Name: 
set findest="Z:\ProjectIT\copy\%dest%" 

robocopy Z:\ProjectIT\copy\xcopy "%findest 

我理解这可能是一个简单的办法,但我的代码非常有限的知识。

感谢

+3

使用该变量'%findest%' - 和之前删除报价,您的变量已经包含了所有的报价是它需要。 – Stephan

+2

让我推荐一般使用'set'VAR = Value“'作为所有''set'命令的语法;这可以避免特殊字符的麻烦,但是_not_不包含“Value”中的引号;所以总有一个地方可以照顾周围的报价 - '%VAR%'的_expansion_'... ... – aschipfl

回答

1

通过Stephanaschipfl高度推荐建议应用到你的代码:

@echo off 

set /P "dest=Enter Name: " 
set "findest=Z:\ProjectIT\copy\%dest%" 

robocopy Z:\ProjectIT\copy\xcopy "%findest%" 

见例如回答关于Why is no string output with 'echo %var%' after using 'set var = text' on command line?一个解释,为什么set "VAR=Value"上分配和"%VAR%"上扩展/参考高度即使要分配给变量的字符串包含1个引号,也是推荐的。

这里也是一个改进版本,它允许字符串用双引号中输入:

@echo off 

:EnterName 
set "dest="" 
set /P "dest=Enter Name: " 
set "dest=%dest:"=%" 
if "%dest%" == "" cls & goto EnterName 

set "findest=Z:\ProjectIT\copy\%dest%" 

robocopy Z:\ProjectIT\copy\xcopy "%findest%" 
+0

这工作,谢谢! –