繁体   English   中英

如何在批处理文件中加倍条件?

[英]How to double conditions in batch file?

我在编写具有两个条件的脚本时遇到问题。 我想检查扩展名和文件名的一部分。 我需要使用 .doc 扩展名对当天的文件执行操作

我对这个脚本有问题。 这是我所做的,但它只能部分工作:

@echo off
chcp 1252
set Pathname="D:\testDir"
set year=%date:~-4%
set month=%date:~-7,2%
set day=%date:~-10,2%

set logfile=%Pathname%\logs\log.txt


cd %Pathname%
d:


for /R %%i in (*) do (
    if "%%~xi"==".doc" (
        echo "%%i"|findstr /i /L "%year%_%month%_%day%">nul
        if %ERRORLEVEL%==0 (
            echo "file : %%i worked and does an output at %time%" >> %Pathname%\logs\log.txt
        )
    )
)

我不明白为什么 %ERRORLEVEL% 的输出总是等于 0。

这是树结构的摘录:

D:\testDir\directory1\test_2021_11_07.doc
D:\testDir\directory1\test_2021_11_07.log
D:\testDir\directory1\test_2021_11_08.doc
D:\testDir\directory1\test_2021_11_08.log
D:\testDir\directory1\test_2021_11_09.doc
D:\testDir\directory1\test_2021_11_09.log
D:\testDir\directory1\test_2021_11_10.doc
D:\testDir\directory1\test_2021_11_10.log

D:\testDir\directory2\test_2021_11_07.doc
D:\testDir\directory2\test_2021_11_07.log
D:\testDir\directory2\test_2021_11_08.doc
D:\testDir\directory2\test_2021_11_08.log
D:\testDir\directory2\test_2021_11_09.doc
D:\testDir\directory2\test_2021_11_09.log
D:\testDir\directory2\test_2021_11_10.doc
D:\testDir\directory2\test_2021_11_10.log

D:\testDir\directory3\test_2021_11_07.doc
D:\testDir\directory2\test_2021_11_07.log
D:\testDir\directory3\test_2021_11_08.doc
D:\testDir\directory2\test_2021_11_08.log
D:\testDir\directory3\test_2021_11_09.doc
D:\testDir\directory2\test_2021_11_09.log
D:\testDir\directory2\test_2021_11_10.doc
D:\testDir\directory2\test_2021_11_10.log

D:\testDir\logs\log.txt

如果您有其他解决方案,我很感兴趣! 感谢您的帮助和建议。

%errorlevel% 始终为 0,因为 %variables% 未在( )块内更新。 您需要延迟扩展:

@echo off
setlocal enableextensions enabledelayedexpansion
if 1==1 (
  set foo=bar
  echo !foo!
)

但有更好的方法。 您可以在代码块内使用较旧的if not errorlevel 1语法,但在这种特定情况下,您可以让循环为您过滤:

for /R D:\testDir %%i in (*_%year%_%month%_%day%.doc) do (
  echo %%i
)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM