
第 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 什么全去掉吧。 |