batch-file - 在子文件夹中搜索 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%
解决方案
为什么这么多 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"
)
如果您仍想将它们设置为变量,则需要延迟扩展以在带括号的循环中设置变量。
推荐阅读
- arrays - 在 node.js 中对数组进行排序——已排序的变成未排序的
- python - Argparse 无法识别参数
- python - 必须继续重新安装 python 模块(Eclipse Che)?
- php - PHP数组中的Item和Element有什么区别?
- makefile - Makefile 规则仅在调用 make 之前存在文件时才有效
- java - 如何将MWS本地安装到Maven管理的Spring Boot项目中?
- android - TextField 模糊在 Nativescript vue 中不起作用
- css - 使网格列元素以空间均匀拉伸
- javascript - 在 JavaScript 数组 for 循环中执行某些操作
- python - 关联来自两个 CSV 的数据并使用 Python 将数据写入第一个 CSV