2009-09-15 9 views
18

私はそれがパターン20??????に続くすべてのディレクトリをカウントするには、以下のコマンドを持っている:私は以下のディレクトリを持っている場合batスクリプトを使用してコマンド式の結果を変数に格納する方法は?

'dir /b "20??????" | find /c "2"' 

たとえば、コマンドが6返します:

20090901 
20090902 
20090903 
20090904 
20090905 
20090906 

どのようにすることができます私はこのコマンドの結果(前述の例では6)を変数に格納しますか?

答えて

38
set cmd="dir /b "20??????" | find /c "2" " 

FOR /F "tokens=*" %%i IN (' %cmd% ') DO SET X=%%i 
+18

これを使用している他の人にはちょうど注意が必要です。これがバッチファイル内で行われた場合、 '%i'は' for'コマンドで '%% i'と置き換えなければなりません。 –

+0

素晴らしい! :) thanks for that – fduff

+0

@fduffコマンドの結果を変数に代入するのは、 'FOR'を使って行うのが驚くべきことです。 –

2

ここではサンプルです:

@echo off 
set wildcard=C:\*.* 
set count=0 
FOR /F %%a in ('DIR /B %wildcard%') do set /A count=count+1 
echo %count% files matching %wildcard% 
set choice= 
set /p choice=Press enter to continue ... 
7
(dir /b "20??????" | find /c "2")>>x.txt 
set /p variable=<x.txt 

すべてです。もちろん

、ファイルをしたくない場合は、ちょうどその後これを行う:

del x.txt 
+4

x.txtという名前のファイルが既に存在する場合はどうなりますか? (ユーザーまたは他のプログラムによって作成されますか?) – Mai

+1

@Mai:一意の名前を選択しますか?ちょうど1つを作る。 – jgauffin

-2
@echo off 

REM The command fltmc volumes provides some information about drives 
REM I need to extract the drive letter associated to a particular volume name. 
REM Here's how: 

fltmc volumes | find /i "\Device\HarddiskVolume3" > delme.txt 
for /f "tokens=1 delims= " %%i in (delme.txt) DO echo %%i 
Del /f delme.txt 
0

をこれは私のコードです:

@echo off 
    set com=echo HI 
    ::Start Of Code You Need 
    echo|%com%>>"%temp%\tmp.txt" 
    for /f "tokens=* delims=" %%x in (%temp%\tmp.txt) do (
    set output=%%x 
    ) 
    del /q %temp%\tmp.txt 
    ::End Of Code You Need 
    echo This Is The Output: 
    echo %output% 
    pause>NUL 

それはcomからの入力を受け取り、 output

関連する問題