gpt4 book ai didi

if-statement - 批处理文件中的嵌套 If Exist 语句

转载 作者:行者123 更新时间:2023-12-04 17:01:43 25 4
gpt4 key购买 nike

好的,我正在尝试执行几个嵌套的 IF EXIST 语句来检查几个文件夹的存在。如果第一个文件夹存在,则将 Folder1 设置为等于 1,然后跳到安装。与Folder2相同,如果两个文件夹都不存在,则直接跳过安装。

但即使 Folder1 不存在,这仍然将 %Folder1% 设置为等于 1。我错过了什么/没有做什么?

谢谢!

if exist "c:\folder1" set Folder1=1
echo %Folder1%
goto install
else if exist "c:\folder2" set Folder2=1
echo %Folder2%
goto Install
else goto Install

:Install

最佳答案

两个基本问题:

复合语句必须加括号。
在括号内,除非您已执行 SETLOCAL ENABLEDELAYEDEXPANSION,否则更改变量值将不可见。 - 即使那样你也需要使用 !var!不是 %var%

所以:

SETLOCAL ENABLEDELAYEDEXPANSION
if exist "c:\folder1" (
set Folder1=1
echo !Folder1!
goto install
) else if exist "c:\folder2" (
set Folder2=1
echo !Folder2!
goto Install
) else goto Install

:Install

或者最好,
@ECHO off
if exist "c:\folder1" (
set Folder1=1
goto install
) else if exist "c:\folder2" (
set Folder2=1
goto Install
) else goto Install

:Install

SET folder

或者更简单
@ECHO off
if exist "c:\folder1" set Folder1=1&goto install
if exist "c:\folder2" set Folder2=1&goto Install
:Install

SET folder

测试:
@ECHO OFF
setlocal
SET "folder1="
SET "folder2="
ECHO.----------No folders
DIR /b /ad c:\folder*
CALL :test
ECHO.----------Folder 1 only
MD c:\folder1
DIR /b /ad c:\folder*
CALL :test
ECHO.----------Folder 2 only
RD c:\folder1
MD c:\folder2
DIR /b /ad c:\folder*
CALL :test
ECHO.----------Both
MD c:\folder1
DIR /b /ad c:\folder*
CALL :test
RD c:\folder1
RD c:\folder2

GOTO :eof

:test
if exist "c:\folder1" set Folder1=1&goto install
if exist "c:\folder2" set Folder2=1&goto Install
:Install

SET folder
SET "folder1="
SET "folder2="
GOTO :eof

此测试创建和删除有问题的两个目录。

结果如下:
----------No folders
----------Folder 1 only
folder1
Folder1=1
----------Folder 2 only
folder2
Folder2=1
----------Both
folder1
folder2
Folder1=1

注意
    SET "folder1="
SET "folder2="

在每个报告的开始和之后都执行它确保从环境中删除有问题的环境变量,以防止代码在陈旧信息上给出错误结果。

关于if-statement - 批处理文件中的嵌套 If Exist 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15747745/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com