Dav*_*vid 4 batch-file subdirectory
我想创建一个批处理脚本来创建目录中所有文件的列表。
到目前为止,这就是我所拥有的:
@echo off
dir c:\users\documents\* /b > filelist.txt
Run Code Online (Sandbox Code Playgroud)
只要有一个小故障就可以完美地工作。我想要获取列表的文件位于多个用户目录中,这些目录位于两个目录(AL / MZ)中。我只需为此编写两行即可轻松绕过这两个字母顺序目录。但是,我不确定如何获取子目录内的文件列表。
奖励:这是一个额外的部分,我还没有真正研究过,但我想我会把它放在那里。我将尝试让此脚本将“filelist.txt”附加到电子邮件并自动发送出去。
编辑:忘记了一个更重要的奖金问题。
这是一个非常可怜的文件结构说明。
我希望能够有一个显示文件父目录的列表,以便它在 filelist.txt 中显示类似这样的内容:“A Name\File1.ext”
编辑:使用dir /b/s
似乎列出所有子目录、文件并给出完整路径长度。有没有办法只在特定的“名称目录”中有某些内容时返回列表?所以如果除了“D Name”之外的所有内容都是空的,它只会返回
\D Name\file1.ext
\D Name\file2.ext
Run Code Online (Sandbox Code Playgroud)
dir
没有代码可以删除部分输出。因此,您必须使用for
执行删除操作的循环来解析其输出:
@echo off
setlocal enabledelayedexpansion
pushd "c:\users\documents\"
(
for /r %%a in (*) do (
set x=%%a
echo !x:%cd%=!
)
)>filelist.txt
popd
Run Code Online (Sandbox Code Playgroud)
要发送自动邮件,请参阅我们的搜索功能,该功能隐藏在本网站的右上角(请不要告诉任何人,否则我们会收到更少的重复邮件;)
)。
编辑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
Run Code Online (Sandbox Code Playgroud)
输入“0”表示“仅在此文件夹中,没有子文件夹”;“2”表示“在此文件夹及其子文件夹中,最大深度 = 2”
内部for
检查标记“%lv%+2”(因此set /a lv+=2
)是否为空。如果是,则深度小于或等于%lv%
并显示字符串。如果不为空,则深度大于%lv%
-无回声。
归档时间: |
|
查看次数: |
22888 次 |
最近记录: |