Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Variables 获取信息-如果存在忽略变量的文件夹_Variables_Batch File_If Statement_Cmd_Directory - Fatal编程技术网

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
可以确定,它是一个目录,而不是一个没有扩展名的文件。