我有批处理文件,提示用户提供文件名。文件可以有空,也可以不有空间。如果我的文件名中有空格,我的批处理失败。例如:
SET TDSX=.txt
SET /p DS=%1
move C:\Working\YAHAMA\DEV\Script\%DS%%TDSX% C:\Working\YAHAMA\NEW_FO
像这样在变量赋值周围加上引号:
set /p "DS=%~1"
波浪形的~
事物删除了参数的任何引用。以上假设命令行上的文件名有引号,否则,就cmd而言,它不是单个参数,您可能需要:
set /p "DS=%*"
您还需要使用双引号来保护结果文件和目录名称中的空格:
@Echo Off
CD /D "C:\Working\YAHAMA" 2>Nul || Exit /B
Set "TDSX=.txt"
Set /P "DS=%~1"
If Exist "DEV\Script\%DS%%TDSX%" (
If Not Exist "NEW_FO\" MD "NEW_FO"
Move "DEV\Script\%DS%%TDSX%" "NEW_FO"
)