首页 > 解决方案 > 在批处理脚本中将文本附加到变量

问题描述

将文件名附加到用户输入的文件路径不起作用。

我从用户那里得到一个文件路径,并想附加我要打开的文件名。在此之后,我想“启动”该文件。但是,它并没有按我期望的方式工作。有人可以帮忙吗?

@ echo off
if exist clientshutdown3.exe (
start clientshutdown3.exe) else (
set /p path= Enter path of pdf file:
start %path%\lor.pdf
)
pause

标签: windowsbatch-filescripting

解决方案


几件事。您需要将路径用双引号括起来以消除可能的空格。此外,因为我们在循环(代码块)内设置变量,所以最好使用delayedexpansion.

最后也是最重要的一点,永远不要设置作为系统环境变量存在的变量名。在这里,path将破坏您的实际路径,并且命令将不再起作用,因此请创建一个不存在的名称,例如mypath.

@echo off
setlocal enabledelayedexpansion
if exist clientshutdown3.exe (
    start clientshutdown3.exe
 ) else (
    set /p "mypath=Enter path of pdf file: "
    start "" "!mypath!\lor.pdf"
)
pause

您也可以不delayedexpansion通过将start部分移动到代码块之外而逃脱。

@echo off
if exist clientshutdown3.exe (
    start clientshutdown3.exe
 ) else (
    set /p "mypath=Enter path of pdf file: "
)
if defined mypath start "" "%mypath%\lor.pdf"
pause

推荐阅读