cmd中IF存在/不存在的批处理文件问题

Posted

技术标签:

【中文标题】cmd中IF存在/不存在的批处理文件问题【英文标题】:Question of batch file with IF exists/ not exists in cmd 【发布时间】:2022-01-14 08:16:37 【问题描述】:

我想做一个脚本,但是在项目过程中遇到了问题。

根据以下脚本,如果所有文件都存在,则运行复制功能。 --> 没关系。

但是,如果一个文件或多个文件不存在,那么如何先列出所有错误信息,然后暂停并运行复制功能。

非常感谢。

代码

@ECHO OFF

IF EXIST "G:\A.TXT" (

IF EXIST "G:\B.TXT" (

IF EXIST "G:\C.TXT" (

    CALL :COPY

) ) )


IF NOT EXIST "G:\A.TXT" (

    CALL :A

IF NOT EXIST "G:\A.TXT" (

    CALL :B

IF NOT EXIST "G:\A.TXT" (

    CALL :C

) ) )

:A

CLS

CALL :HEADER

    Powershell -noP -c "Write-Host 'WARNING: A File Missed!' -BackGroundColor BLACK -ForegroundColor YELLOW"
    TIMEOUT /T 1 /NOBREAK > NUL
    ECHO.

PAUSE

GOTO :EOF

:B

CLS

CALL :HEADER

    Powershell -noP -c "Write-Host 'WARNING: B File Missed!' -BackGroundColor BLACK -ForegroundColor YELLOW"
    TIMEOUT /T 1 /NOBREAK > NUL
    ECHO.

PAUSE

GOTO :EOF

:C

CLS

CALL :HEADER

    Powershell -noP -c "Write-Host 'WARNING: C File Missed!' -BackGroundColor BLACK -ForegroundColor YELLOW"
    TIMEOUT /T 1 /NOBREAK > NUL
    ECHO.

PAUSE

GOTO :EOF

:COPY

CLS

CALL :HEADER

    ECHO Copying Files...
    TIMEOUT /T 1 /NOBREAK > NUL
    ECHO.
    
    COPY G:\A.TXT H:\A.TXT
    
    COPY G:\B.TXT H:\B.TXT

    COPY G:\C.TXT H:\C.TXT

    ECHO.
    Powershell -noP -c "Write-Host 'INFO: Copy Completed!' -BackGroundColor BLACK -ForegroundColor GREEN"
    TIMEOUT /T 2 /NOBREAK > NUL

GOTO :EOF

【问题讨论】:

【参考方案1】:

我认为你对自己来说真的太复杂了。

使用条件运算符:

@echo off
set "files="G:\A.txt" "G:\B.txt" "G:\C.txt""
for %%i in (%files%) do copy "%%~i" "H:\%%~i">nul 2>&1 && Powershell -noP -c "Write-Host 'INFO: Copied %%i' -BackGroundColor BLACK -ForegroundColor GREEN" || Powershell -noP -c "Write-Host 'WARNING: %%i File Missing!' -BackGroundColor BLACK -ForegroundColor YELLOW"

if existelse 声明。

@echo off
set "files="G:\A.txt" "G:\B.txt" "G:\C.txt""
for %%i in (%files%) do if exist "%%~i" (
    copy "%%~i" "H:\%%~i">nul 2>&1 && Powershell -noP -c "Write-Host 'INFO: Copied %%i' -BackGroundColor BLACK -ForegroundColor GREEN"
   ) else (
    Powershell -noP -c "Write-Host 'WARNING: %%i File Missing!' -BackGroundColor BLACK -ForegroundColor YELLOW"
)

【讨论】:

以上是关于cmd中IF存在/不存在的批处理文件问题的主要内容,如果未能解决你的问题,请参考以下文章

cmd dos 检查远程FTP文件夹是不是存在

对一个大任务 BATCH 使用多个 if 存在和 if 不存在时遇到问题

如何检查批处理文件中是不是存在文件[重复]

cmd 批处理 怎样过滤掉包含某些字符的文件?

多处理时正确检查文件是不是存在

如果不存在在 Windows 批处理中不起作用