我正在尝试创建一个文件,其中包含具有特定文件名的目录列表。
假设我正在尝试查找其中包含名为*.joe
的文件的目录。我最初只尝试了一个简单的dir /ad *.joe > dir_list.txt
,但它搜索*.joe
的目录名称,所以没有去。
然后我得出结论,for循环可能是我最好的选择。我从
开始for /d /r %a in ('dir *.joe /b') do @echo %a >> dir_list.txt
看起来它没有执行dir命令。我添加了“usebackq”,但这似乎只适用于/ F命令扩展。
想法?
答案 0 :(得分:4)
由于“dir /s /b file_name
”没有削减它,以下
for /d /r %a in (*) do @if exist %a\*.scr (echo %a)
在批处理文件中,唯一需要考虑的是%a give
for /d /r %%a in (*) do @if exist %%a\*.scr (echo %%a)
答案 1 :(得分:1)
将此保存到search.bat
或(您还能记住的其他内容)
@echo off
setlocal EnableDelayedExpansion
set last=?
if "%1" EQU "" goto usage
for /f %%I in ('dir /s /b /o:n /a-d "%1"') do (
if !last! NEQ %%~dpI (
set last=%%~dpI
echo !last!
)
)
goto end
:usage
echo Please give search parameter.
:end
并使用如下:
search.bat *.joe >dir_list.txt
请注意,它会在当前路径上下文中进行搜索。您可能希望将.bat
添加到PATH
中的位置,以便您可以从任何位置进行调用。
答案 2 :(得分:1)
这将打印目录和文件名,可能对您有帮助,也可能没有帮助:
dir /b /s | findstr "\.joe"
findstr
使用正则表达式。
答案 3 :(得分:0)
dir /s/b *.joe >> dir_list.txt
然后在例如gawk在dirnames之后摆脱文件名