2012-04-03 17 views
1

昨天我看到了关于如何获取文件空间信息的问题。我试过这样的命令:FOR循环中的命令(如何获取我请求的数据)

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 
) 

第一项是目录,然后文件。我做错了什么不是获得命令本身,而是我所要求的数据?

回答

2

要迭代通过另一个命令返回的行,您需要在/ f开关中使用命令。详细信息请参见for /?

要获得与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

+0

很好的回答。谢谢 – user1141649 2012-04-03 13:45:24

相关问题