自动化.bat以获取给定目录的所有内容

时间:2018-01-17 08:49:14

标签: batch-file filelist

我正在尝试自动化一个将所有内容(目录,子目录,文件等)存储在.txt文件中的进程。我想出了这个:

cd "D:\sources\SVN_WorkingCopy\"
dir /s /b>filelist.txt

将上述内容放入.bat文件并手动运行时,它可以正常工作并创建.txt文件。但是,当我将其包含在Windows计划任务中时,它不会执行任何操作。任何人都可以帮忙,让这个工作吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

如果您真的想分两行进行,那么您需要确保使用/D选项来更改驱动器:

CD /D "D:\sources\SVN_WorkingCopy"
Dir /S /B > "filelist.txt"

或者,您可以使用单行而不更改当前工作目录:

Dir /S /B "D:\sources\SVN_WorkingCopy" > "filelist.txt"

或者使用不同的命令:

Where /R "D:\sources\SVN_WorkingCopy" * > "filelist.txt"

此外,您需要注意,当作为计划任务运行时,工作目录为%SystemRoot%\System32,默认情况下为写保护,(取决于权限)。因此,除非您提供可访问的位置,否则该命令将尝试将其输出发送到那里的文件:

> "C:\Users\kalinkula\Desktop\filelist.txt"

您可以将输出发送到评估目录D:\sources\SVN_WorkingCopy\filelist.txt中的文件,只要您不介意该文件出现在其自己包含的列表中。

这些答案还假设在运行脚本/命令时映射和/或可用D:

答案 1 :(得分:0)

这可能只是一个FYI,但您也可以使用tree进行结构化输出

tree /f /a "D:\sources\SVN_WorkingCopy" > filelist.txt

将导致文件结构类似于:

D:.
├───e-shopper
│   └───Eshopper
|       └───temp folder
|           └───Performance Report Table.xlsx
|           └───Sales Document.docx
├───test Folder
│   └───Hire Freelancers
|       └───Performance Report Table.xlsx
|       └───Sales Document.docx
└───Some other Directory with no subs or files