0

我正在寻找一个批处理文件,它可以为第一列中一个位置的所有文件夹名称和相邻列中该文件夹中的 .xxx 文件制作电子表格,最终我希望在第一列和每一行中都有一个包含文件夹名称的报告该文件夹中对应的 .xxx 文件名

例如,假设 folder_main 有 f1、f2 等等,每个文件夹都有 g1.xx、g2.xxx 等等,所以报告应该显示

 column1     column 2      column 3 ............
 f1           g1.xxx       g2.xxx   .....
 f2           h1.xxx.......

你能帮我在vb中写一个批处理文件或一个脚本来执行这个功能吗?我有一千个文件夹。

4

1 回答 1

0

这是您创建 CSV 样式输出的起点。您应该能够在任何电子表格程序中打开它。

@ECHO OFF

SETLOCAL EnableDelayedExpansion

FOR /F "delims=" %%A IN ('DIR /AD /B 2^> NUL') DO (
    SET line="%%A"
    FOR /F "delims=" %%B IN ('DIR %%A\*.xxx /B 2^> NUL') DO SET line=!line!,"%%B"
    ECHO !line!
)

我不知道您对批处理脚本了解多少,所以我暂时保持原样。但是,如果有不清楚的地方,请随时询问。

编辑:
EnableDelayedExpansion有必要使!-stuff 工作(见下文)。

第一FOR行遍历当前目录中的所有子目录并丢弃所有可能的错误消息。对于每个找到的子目录,最后一行DO (和之间的内容都会被执行。)

line一旦第二个FOR-loop 完成, -variable 将保存所有文件。它使用子目录的名称进行初始化,即 CSV 输出中的第一列。

第二个循环在第一个循环中找到的子目录中FOR查找所有带有扩展名的文件,xxx并再次丢弃可能的错误消息。将SET文件名彼此附加。

!用于代替%您可能熟悉的。它将延迟扩展应用于代码(如果您想SET /?在命令行上获得有关此运行的更多信息)。

如果您想更深入地挖掘目录结构,则需要在第一个循环中添加 - 命令,/S例如.DIR'DIR /AD /B /S 2^> NUL'

于 2012-10-15T06:53:42.923 回答