Windows 在批处理脚本中向变量追加文本

Windows 在批处理脚本中向变量追加文本,windows,batch-file,scripting,Windows,Batch File,Scripting,正在将文件名附加到用户输入的文件路径,但用户未工作 我从用户那里得到一个文件路径,并希望附加我想要打开的文件名。在此之后,我想“启动”该文件。然而,它并没有按照我期望的方式工作。有人能帮忙吗 @ echo off if exist clientshutdown3.exe ( start clientshutdown3.exe) else ( set /p path= Enter path of pdf file: start %path%\lor.pdf ) pause 两件事。您需要将路径用

正在将文件名附加到用户输入的文件路径,但用户未工作

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

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

两件事。您需要将路径用双引号括起来,以消除可能的空白。此外,因为我们在循环(代码块)内部设置变量,所以最好使用
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
通过将
start
部分移到代码块的外部,您也可以在不使用
delayedexpansion
的情况下离开

@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

只有一个问题。此批处理文件是否在Windows CE中工作。我在设备上尝试了它,但它不起作用。不幸的是,我没有要测试的CE设备,您需要指定在Windows CE设备上尝试时收到的输出或错误。我认为问题是setlocal。它不适用于wince。有解决办法吗?