2015-12-15 68 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

這工作,謝謝! –