Syn*_*ech 6 windows command-line
我正在努力解决我遇到的最令人沮丧的错误之一。
错误描述:
该for
命令解释程序的命令无法看到隐藏的文件。
繁殖步骤:
for %i in (*) do echo "%i"
预期成绩:
for
默认情况下或通过开关 在循环中处理所有文件。
实际结果:
for
命令以允许它处理隐藏文件含义:
无法从命令提示符处理所有文件。
题:
如何从命令提示符或批处理文件中处理隐藏文件(如果不是 DOS,至少在 Windows 中)?
这是一种(丑陋的、令人不愉快的、不理想的)文件解决方法:
\n\nfor /f "tokens=* delims=" %i in (\'dir /b/a-d *\') do echo "%i"\n
Run Code Online (Sandbox Code Playgroud)\n\n以及文件夹的版本(类似于for /d\xe2\x80\xa6
):
for /f "tokens=* delims=" %i in (\'dir /b/ad *\') do echo "%i"\n
Run Code Online (Sandbox Code Playgroud)\n\n以及两者的版本(没有for
模拟,所以这是一个好处):
for /f "tokens=* delims=" %i in (\'dir /b/a *\') do echo "%i"\n
Run Code Online (Sandbox Code Playgroud)\n\n
\n文件 ( ) 的递归版本for\xe2\x80\xa6 /r
:
for /f "tokens=* delims=" %i in (\'dir /b/s/a-d *\') do echo "%i"\n
Run Code Online (Sandbox Code Playgroud)\n\n和文件夹 ( for /r /d\xe2\x80\xa6
):
for /f "tokens=* delims=" %i in (\'dir /b/s/ad *\') do echo "%i"\n
Run Code Online (Sandbox Code Playgroud)\n\n还有两个
\n\nfor /f "tokens=* delims=" %i in (\'dir /b/s/a *\') do echo "%i"\n
Run Code Online (Sandbox Code Playgroud)\n\n
\n这或多或少有效,但肯定有其问题(特别是对于大量文件或文件夹)。希望有更好的解决方案,或者微软可以在补丁中修复/改进这个问题。
您可以使用forfiles
代替for
.
语法完全不同,但它具有更多功能(例如,本地访问文件名、扩展名、文件大小和时间戳的方法)并且默认处理所有文件。
例如,代替
for %i in (*) do echo "%i"
Run Code Online (Sandbox Code Playgroud)
你会用
forfiles /c "cmd /c echo @file"
Run Code Online (Sandbox Code Playgroud)
或者干脆
forfiles
Run Code Online (Sandbox Code Playgroud)
因为"cmd /c echo @file"
是命令开关的默认值。
归档时间: |
|
查看次数: |
4758 次 |
最近记录: |