Cmd 使用命令提示符以特定方式列出文件和文件夹

Cmd 使用命令提示符以特定方式列出文件和文件夹,cmd,Cmd,我需要目录中的文件和文件夹列表(注意:无子文件夹文件)使用命令提示符,格式为:文件名-大小-文件类型。 我尝试使用dir/A/S>AllFiles.txt。但是输出的格式需要编辑。仅使用“dir”命令是不可能的。不过,Powershell的get childitem可以实现这一功能 get-childitem -recurse | Select-Object basename, length, extension 假设您是从cmd运行的,则可以将上述powershell命令行包装为: powe

我需要目录中的文件和文件夹列表(注意:无子文件夹文件)使用命令提示符,格式为:文件名-大小-文件类型。

我尝试使用
dir/A/S>AllFiles.txt
。但是输出的格式需要编辑。

仅使用“dir”命令是不可能的。不过,Powershell的get childitem可以实现这一功能

get-childitem -recurse | Select-Object basename, length, extension
假设您是从cmd运行的,则可以将上述powershell命令行包装为:

powershell -Command  "get-childitem -recurse | Select-Object basename, length, extension"
要查看Select Object子句的所有可用选项,可以运行

get-childitem | get-member

在powershell中,我不确定您所说的文件类型是什么意思。我想你指的是文件扩展名

没有简单的方法可以获得文件夹的总大小,因此我将文件夹列为
name-

-
在文件和文件夹名称中有效。您最好用
代替

simple FOR命令列出文件或文件夹,但不能同时列出两者。下面我使用两个命令。这样做的好处是它在名称上支持unicode

@echo off
(
  for %%F in (*) do echo %%F - %%~zF - %%~xF
  for /d %%F in (*) do echo %%F - ^<dir^>
)>AllFiles.txt
@echo关闭
(
对于(*)中的%%F,执行echo%%F-%%~zF-%%~xF
对于(*)中的/d%%F,执行回显%%F-^
)>AllFiles.txt
您可以将DIR/B与FOR/F结合使用,一次获取文件和文件夹,但名称中不支持unicode

@echo off
(
  for /f "eol=: delims=" %%F in ('dir /b') do (
    if exist "%%F\" (echo %%F - ^<dir^>) else (echo %%F - %%~zF - %%~xF)
  )
)>AllFiles.txt
@echo关闭
(
对于/f“eol=:delims=“%%f in('dir/b')do(
如果存在“%%F\”(回显%%F-^)其他(回显%%F-%%~zF-%%~xF)
)
)>AllFiles.txt