我需要一个批处理文件来生成一个只有* *文件名的列表

时间:2016-01-04 04:55:32

标签: windows batch-file

我需要它才能在Win10和Win7机器上运行。如果我可以让它工作,我会制作批处理文件。

Winkey, "cmd"
cd "e:\media\trainingvids"
dir *.* /s /b /a -d > c:\temp\dork.txt

所以,说明显而易见但确保我得到它,我打开命令提示符,切换到正确的目录,执行所有文件的目录列表(包括子目录(/ s),否页眉或页脚如此'裸'格式(/ b),并试图不显示目录(/ a -d) - 然后发送/管道(>)到我指定命名和创建的文件( dork.txt)在我的c:。

上已经存在的临时目录(\ temp)中

问题是它不起作用。我无法找到一种方法来不包括完整路径和文件名。我需要用语法轻推一下。或者也许我已经把它弄错了,不能这样做。

我的Basic批处理文件可以做什么?

4 个答案:

答案 0 :(得分:1)

for /f "delims=" %%a in ('dir /s/b/a-d') do echo %%~nxa

应该完成这项任务。

答案 1 :(得分:1)

您需要for /F命令来完成此任务:

> "D:\temp\dork.txt" (
    for /F "eol=| delims=" %%F in ('
        dir /B /S /A:-D "E:\media\trainingvids\*.*"
    ') do @(
        echo(%%~nxF
    )
)

您在/A命令行-Ddir之间放置了一个空格,必须将其删除。

由于我在dir命令中声明了目标目录的完整路径以及输出文件,因此您可以将此脚本保存在任何位置并从任何位置运行。

答案 2 :(得分:1)

如果您可以容忍双引号,则此批处理文件可以正常运行。

set myPath=c:\temp
set myMask=*.pdf
set myLog=c:\temp\myLogFile.log
FORFILES /P %myPath% /S /M %myMask% /C "CMD /C ECHO @file >> %myLog%"

改变价值观以满足您的需求。

答案 3 :(得分:1)

你几乎在那里:

dir /s /w /a-d | find "."

唯一的缺点是你在列中得到文件名,可能还有一个Volume行,你可以用另一个find过滤器删除它。