昨天我看到了有关如何获取文件空间信息的问题。我试过这样的命令:
FOR / F %% A IN('dir c:\ ^ | findstr / rc:Adr')DO echo A:“%% A”B:“%% B”C:“%% C”D:“%% D”
我认为有可能提取最后一行,从我的本地语言“Adr”开始,你的可能是“目录”。它不完全一样,因为昨天我得到了命令本身的输出结果:dir c:\ ^ | findstr / rc:Adr。现在我再次在CMD中测试并得到了这个:
C:\>FOR %A IN (dir c:\ ^| findstr /rc:Adr) Do Echo A:"%A"B:"%B"C:"%C"D:"%D"
C:\>Echo A:"dir"B:"%B"C:"%C"D:"%D"
A:"dir"B:"%B"C:"%C"D:"%D"
C:\>Echo A:"c:\"B:"%B"C:"%C"D:"%D"
A:"c:\"B:"%B"C:"%C"D:"%D"
C:\>Echo A:"|"B:"%B"C:"%C"D:"%D"
A:"|"B:"%B"C:"%C"D:"%D"
C:\>Echo A:"findstr"B:"%B"C:"%C"D:"%D"
A:"findstr"B:"%B"C:"%C"D:"%D"
C:\>Echo A:"/rc:Adr"B:"%B"C:"%C"D:"%D"
A:"/rc:Adr"B:"%B"C:"%C"D:"%D"
C:\>FOR %A IN ('dir c:\ ^| findstr /rc:Adr') Do Echo A:"%A"B:"%B"C:"%C"D:"%D"
C:\>Echo A:"'dir"B:"%B"C:"%C"D:"%D"
A:"'dir"B:"%B"C:"%C"D:"%D"
C:\>Echo A:"c:\"B:"%B"C:"%C"D:"%D"
A:"c:\"B:"%B"C:"%C"D:"%D"
C:\>Echo A:"|"B:"%B"C:"%C"D:"%D"
A:"|"B:"%B"C:"%C"D:"%D"
C:\>Echo A:"findstr"B:"%B"C:"%C"D:"%D"
A:"findstr"B:"%B"C:"%C"D:"%D"
C:\>Echo A:"/rc:Adr'"B:"%B"C:"%C"D:"%D"
A:"/rc:Adr'"B:"%B"C:"%C"D:"%D"
C:\>dir c:\ | findstr /rc:Adr
Adresářů: 6, Volných bajtů: 1 447 161 856
C:\>
我遇到问题的下一个情况: 如果我想打印文件名:
@Echo off
FOR %%F IN (dir *.inf) DO (
echo %%F
)
输出中的第一项是dir,然后是文件。我做错了不是为了获取命令本身,而是我要求的数据?
答案 0 :(得分:2)
要遍历另一个命令返回的行,您需要将其用于带/ f开关的命令。请查看for /?
了解详细信息。
要获取具有Chech版本Windows的计算机上的可用磁盘空间量,请使用:
for /f "tokens=4,*" %%A in ('dir c:\ ^| findstr /rc:Adr') do echo %%B
如果您需要与语言无关的解决方案,请使用:
for /f "delims== tokens=2" %%A in ('wmic volume where "DriveLetter='C:'" get FreeSpace /value') do echo %%A
在第二种情况下,您可以省略dir命令并直接遍历文件:
for %%A in (*.inf) do echo %%A