Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 我需要用批处理文件创建包含特定文件类型的文件夹列表_Batch File_Cmd - Fatal编程技术网

Batch file 我需要用批处理文件创建包含特定文件类型的文件夹列表

Batch file 我需要用批处理文件创建包含特定文件类型的文件夹列表,batch-file,cmd,Batch File,Cmd,使用批处理文件,我试图生成一个包含特定文件类型的位置内的文件夹列表,我们称之为*.abc 目前,我只知道如何将DIR命令输出回显到名为folder.lst的文件中,我想对此进行扩展,并尝试 仅将包含*.abc文件类型的文件夹回显到folder.lst b删除folder.lst中不包含*.abc文件类型的文件夹的引用 我还试着对每一行进行FOR循环检查,以查看该位置是否存在*.abc文件,如果不存在,则跳过它,但我就是无法使其正常工作,下面是一个示例 setlocal enableextensi

使用批处理文件,我试图生成一个包含特定文件类型的位置内的文件夹列表,我们称之为*.abc

目前,我只知道如何将DIR命令输出回显到名为folder.lst的文件中,我想对此进行扩展,并尝试

仅将包含*.abc文件类型的文件夹回显到folder.lst b删除folder.lst中不包含*.abc文件类型的文件夹的引用

我还试着对每一行进行FOR循环检查,以查看该位置是否存在*.abc文件,如果不存在,则跳过它,但我就是无法使其正常工作,下面是一个示例

setlocal enableextensions enabledelayedexpansion

FOR /F "delims=" %%C in (folder.lst) do (
set temp=%%C
if not exist !temp!\*.abc (goto skip) else (goto resume)
:resume
那么我的行动就在这里

:skip
)
但是我知道我在这里做错了什么……我只是不知道是什么。

也许for命令的/R形式会有所帮助:

for /r "basedir" %%a in (.) do if exist "%%~a\*.abc" (
    echo %%a contains .abc file(s)
)
%%a将是您想要的带有尾随\的目录,但您应该能够不关心或适应它。

从命令行:

在批处理文件中:

上述命令将仅将包含*.abc文件的文件夹名称放置在folders.lst中

注:

%在批处理文件中使用命令时,应替换为%%

%dpa的~dp部分仅将%a扩展为驱动器号和路径。如果不需要驱动器号,请卸下d。p路径包含尾随\字符,某些命令可能会将其解释为转义字符

以上命令在当前目录中启动搜索。要从当前驱动器的根目录进行搜索,可以先执行cd\操作


有关更多信息,请参阅和。

您在中发布的脚本中存在一些问题,您无法在block语句中使用标签。您也没有提供任何示例

@回音 SETLOCAL ENABLEDELAYEDEXPANSION 设置sourcedir=U:\sourcedir 设置lastdir= 对于*.abc中的/r%sourcedir%%%a,如果!拉斯迪尔!neq%%~dpa 设置lastdir=%%~dpa 回声%%~dpa 回响拉斯特迪尔:~0,-1! 后藤:EOF 找到的每个目录将被回送两次-一个带有尾随\的目录,一个没有尾随\的目录

您需要更改sourcedir的设置以适应您的环境。

@echo off setlocal enableextensions disabledelayedexpansion 设置根=%cd% 对于%%a in%root%do for/f delims=:tokens=2%%b in' 目录/a-d/s%root%\*.abc^查找\ 'do echo%%~da%%~pnxb 这将执行递归dir命令,在起始点change root变量下搜索指定的文件类型,以满足您的需要。对于找到的每个文件夹,我们从文件列表前面的dir头中检索文件夹,其中包含反斜杠的行


要将路径与行中的其余信息分开,冒号用作分隔符。由于这将使驱动器不包含检索到的信息,因此将使用一个传统的for从文件夹引用检索驱动器。

告诉我们什么不起作用。是否有任何错误消息?你以为会发生什么?到底发生了什么?
for /f "delims=" %a in ('dir /s /b *.abc') do echo %~dpa >> folders.lst
for /f "delims=" %%a in ('dir /s /b *.abc') do echo %%~dpa >> folders.lst