Windows批处理文件列出其中有特定文件的文件夹
问题描述:
我正在尝试创建一个文件,其中包含具有特定文件名的目录。Windows批处理文件列出其中有特定文件的文件夹
比方说,我试图找到其中有一个名为*.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命令扩展。
想法?
答
dir /s/b *.joe >> dir_list.txt
然后在例如, GAWK的dirnames中
答
后摆脱了名的。由于“dir /s /b file_name
”不剪,怎么样以下
for /d /r %a in (*) do @if exist %a\*.scr (echo %a)
这样看来,一个批次内的文件,该文件必须是唯一esaped是search.bat
或(别的东西,你可以记住)赐
for /d /r %%a in (*) do @if exist %%a\*.scr (echo %%a)
答
保存此%
@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
中的位置,以便您可以从任何位置调用它。
答
这将打印的目录和文件名,可能会或可能不会对你有帮助:
dir /b /s | findstr "\.joe"
findstr
使用正则表达式。
不是*完全*他在找什么,而是+1,因为它是迄今为止最简单的问题解决方案。一个简单的REPLACE(“file_name”,“”)事后会给你想要的输出 - 在BAT文件中做到这一点的任何方式? – SqlRyan 2010-04-23 18:06:14
在使用之前我意识到我只需要目录名而不需要文件名;那就是当我开始试验dir/ad时,我只是从那里向下盘旋...... – Lee 2010-04-23 18:41:18
@ Lee:感谢你用我的方式打磨你的下坡spriral;)希望我的编辑能够结束它。 – torak 2010-04-23 19:06:45