windows - 在批处理脚本中将文本附加到变量
问题描述
将文件名附加到用户输入的文件路径不起作用。
我从用户那里得到一个文件路径,并想附加我要打开的文件名。在此之后,我想“启动”该文件。但是,它并没有按我期望的方式工作。有人可以帮忙吗?
@ 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
您也可以不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
推荐阅读
- c# - PictureBox 使白色部分本身透明
- sql-server - Powershell Invoke-Sqlcmd 出错后从头重新启动脚本
- javascript - Extjs拖动面板移动窗口
- amazon-web-services - 如何创建负载均衡器来监听端口 22
- java - 为什么 I/o 异常必须使用 Buffered Reader 处理,而 Scanner 不是强制性的?
- flutter - Flutter中如何获取公网IP?
- swift - 未捕获的 Kotlin 异常:kotlin.native.IncorrectDereferenceException:非法尝试访问非共享
- amazon-web-services - CloudFormation 置放群组分区计数
- prestashop-1.7 - Prestashop 无法建立数据库链接:SQLSTATE[HY000] [1226]
- java - 为自动化框架存储 excel 表数据的最佳方法