我正在创建一个批处理文件,告诉文件夹是否存在。
\..\
- 考虑所有计算机上的路径是否恒定。
\..\CompanyName\
- 现在我可以检查此文件夹是否存在。
\..\Companyname\Productname version x.x.x
- 现在我无法检查“产品”是否退出,因为如果我使用if exist "%constantpath%\Productname version 1.2.3" (code block)
如果整个名称匹配,条件将仅返回true。如果Productname版本是1.2.4,它将返回false.so批处理文件好了死。当我尝试了
set dest=Productname Version 1.2.3
set temp=%dest:~0,11% // which means "Productname"
if exist "%constantpath%\%temp% (code block)
看是否只有“产品名称存在
它返回错误
命令语法不正确。我认为路径不正确
答案 0 :(得分:1)
这样批处理文件就好了。
老狗还有生命。
if exist
无法使用通配符,但dir
可以:
dir /s "%constantpath%\Productname version 1.*" >nul && (
echo yes
) || (
echo no
)
此示例将检查版本1.x.x
"%constantpath%\Productname*"
将检查是否有任何版本(包含或不包含字符串version ...
。根据您的需要进行调整。
如果您需要完整的名称:
for /f "tokens=*" %%i in ('dir /s /b "%constantpath%\Productname version 1.*"` do set "fullname=%%i"
答案 1 :(得分:1)
if exist
接受外卡,以便您可以尝试:
if exist "%constantpath%\Productname version ?.?.?" (
echo it exists
)
它也适用于非规范化路径,因此您可以使用\..\
答案 2 :(得分:0)
我强烈建议使用PowerShell,我必须做一些最近类似的事情,因为我需要运行一个可能位于不同位置的安装程序,但第一部分将始终保持不变。它将如下。
$BaseDir = "\..\CompanyName\"
$NameToFind = "ProductName"
$MyVariable = Get-ChildItem $BaseDir -Recurse | Where-Object { $_.PSIsContainer -and $_.Name -like ($NameToFind)}
$productVersion = $myvariable.FullName
Write-Host $productVersion