0

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

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

如果我在桌面下有 3 个批处理文件,在我的文档下有 2 个,我希望批处理文件获取每个批处理文件的大小并将所有 5 个一起显示。如果我只使用包含批处理文件的单个目录,我的命令可以完美运行,但我只需要它包含子目录。我在上面显示的当前行是ECHO is off因为路径下C:\Users\%username%.没有批处理文件我的桌面上有批处理文件,我需要它来包含它,因为它是一个子目录。如何让这个命令包含子目录?

4

2 回答 2

0

为/R

循环文件(递归子文件夹)

句法

  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,它们将默认为当前 drive:path。

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

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

于 2013-11-03T02:20:30.217 回答
0

dir 要容易得多。

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

或者只是尺寸

dir "%userprofile%\*.bat" /a /s|findstr /c:"File(s)"
于 2013-11-03T03:53:03.043 回答