我觉得很傻,因为robocopy是服务器pipe理101; 但我似乎有一个问题列表文件。
我希望在目录和子目录中列出大小超过10MB的所有文件。
根据文件 ,这是应该工作:
robocopy c:\ /min:10485760 /s /l /fp /tee /log:c:\robocopy.log /njh /njs /ndl
但是,当我运行它时,返回错误“没有目的地目录指定”,我认为不需要如果您使用列表(/ L)选项。
另外,如果我包含与目标相同的目录,如下所示:
robocopy c:\ c:\ /min:10485760 /s /l /fp /tee /log:c:\robocopy.log /njh /njs /ndl
什么都没有返回; 但是如果我删除no目录列表(/ ndl),我看到所有目录的列表。
所以我的问题是:如何使用robocopy在目录树结构中列出超过10MB的文件,只是?
谢谢!
如果你不绑定到robocopy ,你可以通过使用variablesreplace来实现:
@for /f "tokens=*" %F in ('dir /s /b /a:-dc:\') do @( if %~zF geq 10485760 echo %F )
dir /s /b /a:-dc:\提供了一个以裸格式( /b )在c:\下的所有非目录( /a:-d )的recursion列表( /s ),以便于parsing。
for循环遍历该列表(如果你的path中有空格的话,需要使用"tokens=*" ),让我们在任何子命令中使用~zvariables修饰符来获取文件大小的引用(比如if你想要的大小)。
@是为了抑制命令的回显,如果你先前@echo off (例如在一个batch file中),则可以忽略它。
尝试包括%tmp%目录作为目标。 我没有老版本的robocopy来testing了,但我记得/ l实际上列出了它将不仅仅是文件。 因此,您需要将数据“发送”到不存在的地方,以便robocopy将打印目标中尚不存在的所有文件和目录。
你可以看看tdel 。 它具有一些非常强大的function,当处理文件大小和date。 它可以在“testing”模式下运行,以产生匹配的列表,而不是实际执行文件删除。
查找可用于Windows,并可以回答几乎类似于这个类的任何问题。 我心里发现:)
使用Robocopy,除非您正在创build一个带有/ QUIT的模板作业文件(这会阻止robocopy执行除了检查语法之外的任何操作),并且正在使用/ NODD来代替目标目录,您始终需要指定一个目标目录,即使你刚刚上市。 获取文件列表的方法是创build一个空文件夹,例如在TEMP下,并将其指定为目的地。 它将是空的,因此源中的每个文件都将显示在列表中。 然后删除临时文件夹下的文件夹 – 它应该是空的。