FOR命令无法查看隐藏文件

FOR命令无法查看隐藏文件

我正在努力解决我所遇到过的最令人沮丧的错误之一。

错误描述:

for命令解释器的命令无法看到隐藏文件  。

复制步骤:

  1. 创建临时目录
  2. 创建一些文件
  3. 为文件分配各种属性(包括隐藏)
  4. 使用类似命令for %i in (*) do echo "%i"

预期成绩:

for所有文件均默认或通过开关   在循环中处理。

实际结果:

  • 具有除隐藏之外的任何属性的文件都会被处理;标记为隐藏的文件将被跳过
  • 命令中没有for允许其处理隐藏文件的开关

含义:

   没有办法处理全部从命令提示符中获取文件。

问题:

   隐藏文件到底如何通过命令提示符或批处理文件来处理(至少在 Windows 中是如此,如果不是 DOS 的话)?

答案1

你可以使用forfiles代替for

语法完全不同,但它具有更多功能(例如,本地访问文件名、扩展名、文件大小和时间戳的方法)并且它处理全部默认文件。

例如,

for %i in (*) do echo "%i"

你会用

forfiles /c "cmd /c echo @file"

或者简单地

forfiles

因为"cmd /c echo @file"是命令开关的默认值。

答案2

以下是一个(丑陋、令人不快、不理想的)文件解决方法:

for /f "tokens=* delims=" %i in ('dir /b/a-d *') do echo "%i"

还有一个文件夹版本(类似于for /d…):

for /f "tokens=* delims=" %i in ('dir /b/ad  *') do echo "%i"

还有一个适用于两者的版本(没有for模拟,所以这是有好处的):

for /f "tokens=* delims=" %i in ('dir /b/a   *') do echo "%i"


文件的递归版本(for… /r):

for /f "tokens=* delims=" %i in ('dir /b/s/a-d *') do echo "%i"

和文件夹(for /r /d…):

for /f "tokens=* delims=" %i in ('dir /b/s/ad  *') do echo "%i"

并且两者

for /f "tokens=* delims=" %i in ('dir /b/s/a   *') do echo "%i"



这或多或少是可行的,但肯定存在问题(尤其是对于大量文件或文件夹)。希望有更好的解决方案,或者微软可以在补丁中修复/改进此问题。

相关内容