首页 > 解决方案 > 在子文件夹中搜索 Doc 和 Docx 文件

问题描述

我想搜索并存储变量的 doc 和 docx 文件路径。下面提到的 p 变量中的“BaseDir=%p%”包含路径“X:\NEW-ENDORSEMENTS\Backlog_checked\cne\CLIENT-SUPPLIED\Backlog Transfer\Non EV article\cne24314\Input_Files”。在此路径中包含子文件夹中的 doc 和 docx 文件。

当我运行以下代码时,显示错误消息“FINDSTR 无法识别”。请检查并清除。

set "BaseDir=%p%"

For /f "delims=" %%A in ('
  Dir /B/S/A-D "%BaseDir%\*.doc" ^| Findstr /I "\\doc\\[^\\]*\.doc$"
') Do set doc_path="%%A"

for /f "tokens=*" %%b in ("%doc_path%") do (set doc="%%~dpb")

set BaseDir=%p%

For /f "delims=" %%A in ('
  Dir /B/S/A-D "%BaseDir%\*.docx" ^| Findstr /I "\\doc\\[^\\]*\.docx$"
') Do set docx_path="%%A"

for /f "tokens=*" %%b in ("%docx_path%") do (set docx="%%~dpb")

echo %docx%
echo %doc%

标签: batch-file

解决方案


为什么这么多 for 循环?如果您想要任何 doc 或 docx 文件的路径,为什么需要 findstr?

For /f "delims=" %%A in ('Dir /B/S/A-D "%BaseDir%\*.doc*"') Do (
If "%%~xA"==".doc" echo %%~xA path "%%~dpA"
If "%%~xA"==".docx" echo %%~xA path "%%~dpA"
)

如果您仍想将它们设置为变量,则需要延迟扩展以在带括号的循环中设置变量。


推荐阅读