第 1 个问题:
如果直接写成示例 1,通过SET FULL_PATH
可以查看到FULL_PATH
已经被正常赋值,但是写成示例 2,通过ECHO
输出却无法输出这个FULL_PATH
的值,怎么破?
:: 示例 1
@SET FULL_PATH = %~dp0HelloWorld.exe
@SET FULL_PATH
:: 示例 2
@SET FULL_PATH = %~dp0HelloWorld.exe
@SET FULL_PATH
@ECHO %FULL_PATH%
第 2 个问题:
如果写成示例 3,通过SET FULL_PATH
可以查看到FULL_PATH
只有目录名,没有文件名,怎么破?
:: 示例 3
@SET EXE_NAME = HelloWorld.exe
@SET FULL_PATH = %~dp0%EXE_NAME%
@SET FULL_PATH
@ECHO %FULL_PATH%
虽然示例 1可以工作,不过为了清晰易懂,我更希望把它拆分成示例 4这样的格式,不知道该怎么破?
:: 示例 4
@SET INSTALL_DIR = %~dp0
@SET EXE_NAME = HelloWorld.exe
@SET FULL_PATH = %INSTALL_DIR%\\%EXE_NAME%
第 1 个问题的原因是空格导致的,可以用下面的示例进行验证。
:: 示例 5
@SET FULL_PATH=%~dp0HelloWorld.exe
@SET FULL_PATH
@ECHO %FULL_PATH%
示例 5中不使用任何空格,则SET FULL_PATH
和ECHO
均能正常显示。
:: 示例 6
@SET FULL_PATH =%~dp0HelloWorld.exe
@SET FULL_PATH
@ECHO %FULL_PATH%
示例 6中变量赋值时等号左侧使用空格,则SET FULL_PATH
正常,而ECHO
不正常。
:: 示例 7
@SET FULL_PATH= %~dp0HelloWorld.exe
@SET FULL_PATH
@ECHO %FULL_PATH%
示例 7中变量赋值时等号右侧使用空格,则SET FULL_PATH
和ECHO
都正常显示,只是多了个空格。
如果变量赋值时等号两侧都使用空格,和示例 2相同,则SET FULL_PATH
正常,而ECHO
不正常。
问题 2 还没找到解决方法。
1
mfaner 2016-01-30 17:05:24 +08:00
试了下,不是%FULL_PATH%,而是%FULL_PATH %
也是第一次见到不能加空格的。等号右边也是。 |
3
mfaner 2016-01-30 22:38:14 +08:00
SET FULL_PATH 你看看帮助,是显示所有以 FULL_PATH 开头的变量,所以多一个空格的变量也能显示。
问题 2 也是空格的问题,把所有 set 命令里等号左右的空格或者 tab 什么全去掉吧。 |