Variables 获取信息-如果存在忽略变量的文件夹
我正在制作一个批处理文件,它告诉我是否存在一个文件夹。 <代码> \ > -考虑路径是所有计算机上的常量。Variables 获取信息-如果存在忽略变量的文件夹,variables,batch-file,if-statement,cmd,directory,Variables,Batch File,If Statement,Cmd,Directory,我正在制作一个批处理文件,它告诉我是否存在一个文件夹。 \ > -考虑路径是所有计算机上的常量。 \..\CompanyName\-现在我可以检查此文件夹是否存在。 \..\Companyname\Productname版本x.x.x-现在我无法检查“产品”是否存在,因为如果我使用如果存在“%constantpath%\Productname版本1.2.3”(代码块) 仅当全名匹配时,条件才会返回true。如果Productname版本为1.2.4,它将返回false。因此批处理文件就像死了
\..\CompanyName\
-现在我可以检查此文件夹是否存在。
\..\Companyname\Productname版本x.x.x
-现在我无法检查“产品”是否存在,因为如果我使用如果存在“%constantpath%\Productname版本1.2.3”(代码块)
仅当全名匹配时,条件才会返回true。如果Productname版本为1.2.4,它将返回false。因此批处理文件就像死了一样。当我尝试时set dest=Productname版本1.2.3
set temp=%dest:~0,11% // which means "Productname"
如果存在“%constantpath%”\%temp%(代码块)
查看是否只存在“产品名称”
它返回时出错
命令的语法不正确。我认为路径不正确为此,我强烈建议使用powershell,最近我不得不做一些类似的事情,因为我需要运行一个安装程序,该安装程序可能位于不同的位置,但第一部分始终保持不变。具体如下
$BaseDir = "\..\CompanyName\"
$NameToFind = "ProductName"
$MyVariable = Get-ChildItem $BaseDir -Recurse | Where-Object { $_.PSIsContainer -and $_.Name -like ($NameToFind)}
$productVersion = $myvariable.FullName
Write-Host $productVersion
为此,我强烈建议使用powershell,最近我不得不做一些类似的事情,因为我需要运行一个安装程序,该安装程序可能位于不同的位置,但第一部分始终保持不变。具体如下
$BaseDir = "\..\CompanyName\"
$NameToFind = "ProductName"
$MyVariable = Get-ChildItem $BaseDir -Recurse | Where-Object { $_.PSIsContainer -and $_.Name -like ($NameToFind)}
$productVersion = $myvariable.FullName
Write-Host $productVersion
所以批处理文件就像死了一样
这只老狗还活着
如果存在
不能使用通配符,但dir
可以:
dir /s "%constantpath%\Productname version 1.*" >nul && (
echo yes
) || (
echo no
)
此示例将检查版本1.x.x
“%constantpath%\Productname*”
将检查任何版本(带或不带字符串版本…
。根据您的需要进行调整
如果您需要完整的名称:
for /f "tokens=*" %%i in ('dir /s /b "%constantpath%\Productname version 1.*"` do set "fullname=%%i"
所以批处理文件就像死了一样
这只老狗还活着
如果存在
不能使用通配符,但dir
可以:
dir /s "%constantpath%\Productname version 1.*" >nul && (
echo yes
) || (
echo no
)
此示例将检查版本1.x.x
“%constantpath%\Productname*”
将检查任何版本(带或不带字符串版本…
。根据您的需要进行调整
如果您需要完整的名称:
for /f "tokens=*" %%i in ('dir /s /b "%constantpath%\Productname version 1.*"` do set "fullname=%%i"
如果存在
接受通配符,以便您可以尝试:
if exist "%constantpath%\Productname version ?.?.?" (
echo it exists
)
它还适用于非规范化路径,因此您可以使用类似于
\..\
的东西(如果存在)
接受通配符,以便您可以尝试:
if exist "%constantpath%\Productname version ?.?.?" (
echo it exists
)
它也适用于非规范化路径,因此如果exsit确实适用于通配符,则可以使用类似于
\\\
的内容。如果存在,请尝试如果存在“c:\wind*”echo
如果存在“c:\windows\”echo yes
工作,而如果存在则使用如果存在“c:\wind”*\“echo yes
没有。使用dir/ad
您可以确定,它是一个目录,而不是一个没有扩展名的文件。如果exsit确实可以使用通配符。如果存在,请尝试如果存在”c:\wind*“echo
如果存在”c:\windows\“echo yes可以工作,而如果存在”c:\wind>*\“echo yes
没有。使用dir/ad
可以确定,它是一个目录,而不是一个没有扩展名的文件。