【发布时间】:2021-11-10 18:19:35
【问题描述】:
我在编写具有两个条件的脚本时遇到了问题。我想检查扩展名和文件名的一部分。我需要对当天的带有 .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
如果您有其他解决方案,我很感兴趣! 感谢您的帮助和建议。
【问题讨论】:
-
我有点迷茫,因为我对您的代码的快速阅读表明您可以首先递归地迭代/搜索
*_%year%_%month%_%day%.doc!
标签: windows batch-file unc