gpt4 book ai didi

batch-file - 批处理脚本以获取多个子目录中所有文件的列表

转载 作者:行者123 更新时间:2023-12-04 12:49:55 25 4
gpt4 key购买 nike

我想创建一个批处理脚本,该脚本将创建目录中所有文件的列表。

到目前为止,这是我所拥有的:

@echo off

dir c:\users\documents\* /b > filelist.txt

这与一个小故障完美配合。我想为列表获取的文件位于多个用户目录中,这些用户目录位于两个目录 (A-L/M-Z) 内。只需为此写两行,我就可以轻松绕过这两个按字母顺序排列的目录。但是,我不确定如何获取子目录中的文件列表。

奖励:这是一个额外的部分,我还没有真正研究过,但我想我会把它扔进去。我将尝试使用此脚本将“filelist.txt”附加到电子邮件并自动发送出去。

编辑:忘记了一个更重要的奖金问题。

这是一个非常可怜的文件结构说明。

enter image description here

我希望能够有一个列表来显示文件的父目录,以便它在 filelist.txt 中显示如下内容:“A Name\File1.ext”

编辑:使用 dir /b/s似乎列出了所有子目录、文件并给出了完整的路径长度。有什么方法可以只在“名称目录”中的某个特定内容中有内容时才返回列表?所以如果除了“D Name”之外的所有内容都是空的,它只会返回
\D Name\file1.ext
\D Name\file2.ext

最佳答案

dir没有代码可以删除其输出的一部分。因此,您必须使用 for 解析其输出执行删除的循环:

@echo off
setlocal enabledelayedexpansion
pushd "c:\users\documents\"
(
for /r %%a in (*) do (
set x=%%a
echo !x:%cd%=!
)
)>filelist.txt
popd

如需发送自动邮件,请参阅我们的 search function ,它很好地隐藏在本网站的右上角(请不要告诉任何人,否则我们会得到更少的重复 ;))。

编辑 I don't suppose there's anyway I can limit how far down in subdirectories this works?有志者,事竟成...
@echo off
setlocal enabledelayedexpansion
set /p lv="max Levels deep [0...n]= "
set /a lv+=2
pushd "c:\users\theo\"
(
for /r %%a in (*.bat) do (
set x=%%a
set x=!x:%cd%=!
for /f "tokens=1,%lv% delims=\" %%b in ("!x!") do if "%%c"=="" echo !x!
)
)>filelist.txt
popd

输入“0”表示“仅在此文件夹中,没有子文件夹”; “2”表示“在此文件夹及其子文件夹中,最大深度 = 2”

内部 for检查标记 "%lv%+2"(因此 set /a lv+=2 )是否为空。如果是,则深度小于或等于 %lv%并显示字符串。如果不为空,则深度大于 %lv% - 没有回声。

关于batch-file - 批处理脚本以获取多个子目录中所有文件的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40496857/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com