如何使用FOR命令使用子文件夹?

时间:2013-11-03 02:15:31

标签: file batch-file

我正在尝试使用FOR / f命令来计算具有相同扩展名的多个文件的文件大小。到目前为止我有这个:

FOR /F "usebackq" %%A IN ('C:\Users\%username%\*.bat') DO set size=%%~zA

如果桌面下有3个批处理文件,而我的文档下有2个批处理文件,我希望批处理文件能够获得每个批处理文件的大小并同时显示所有5个文件。如果我只使用一个包含批处理文件的目录,那么我的命令工作正常,但我需要的只是包含子目录。我上面的当前行显示ECHO is off因为路径C:\Users\%username%.下没有批处理文件我的桌面上有批处理文件,我需要它包含它,因为它是一个子目录。如何让此命令包含子目录?

2 个答案:

答案 0 :(得分:0)

FOR / R

循环文件(Recurse子文件夹)

语法

  FOR /R [[drive:]path] %%parameter IN (set) DO command

关键

drive:path  : The folder tree where the files are located.

set         : A set of one or more files. Wildcards must be used.
              If (set) is a period character (.) then FOR will
              loop through every folder.

command     : The command(s) to carry out, including any
              command-line parameters.

%%parameter : A replaceable parameter:
              in a batch file use %%G (on the command line %G)

此命令从[drive:]路径开始向下遍历文件夹树,并对每个匹配的文件执行DO语句。

如果未指定[drive:]路径,则默认为当前驱动器:path。

与FOR命令的其他变体不同,您必须在“set”中包含通配符(*或?)才能获得返回的一致结果。在许多情况下,您可以通过添加单个字符通配符来解决此问题,例如:如果你循环遍历多个文件夹以找到确切的文件名myfile.txt,你可以改为指定myfile.t?t

http://ss64.com/nt/for_r.html

答案 1 :(得分:0)

dir更容易。

dir "%userprofile%\*.bat" /a /s

或只是尺寸

dir "%userprofile%\*.bat" /a /s|findstr /c:"File(s)"