2012-04-03 33 views
1

昨日、私はファイルスペース情報を取得する方法について質問しました。FORループ内のコマンド

FOR/F %% A IN( 'dir c:\^| findstr/rc:Adr')DO エコーA: "%% A" B: "%% B" C : "%% C" D: "%% D"

"Adr"、おそらく "Directory"でローカル言語で始まる最後の行を抽出することができると思いました。昨日私は出力結果としてコマンドそのものを得ていたので、まったく同じではありません: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コマンドを使用する必要があります。詳細については、for /?をご覧ください。

のWindows、使用のChechバージョンでコンピューター上の空きディスク領域の量を得るために:

for /f "delims== tokens=2" %%A in ('wmic volume where "DriveLetter='C:'" get FreeSpace /value') do echo %%A 

:あなたは、言語に依存しないソリューション、使用したい場合は

for /f "tokens=4,*" %%A in ('dir c:\ ^| findstr /rc:Adr') do echo %%B

2番目のケースでは、dirコマンドを省略してファイルを直接反復することができます。

for %%A in (*.inf) do echo %%A

+0

偉大な答え。ありがとう – user1141649