2017-12-12 10 views
2

これを動作させようとしています。バッチファイル、dirコマンドによる文字列の入力

dir:3 File(s) 7,332,731,128 bytesからこの行を取得して、追加に使用するファイル数を取得しようとしています。

@Echo ON 

dir %1 /a:h | find "File(s)" > hidden.txt 
dir %1 | find "File(s)" > reg.txt 

set /p hidden=<hidden.txt 
echo %hidden% 
IF /I "%hidden%"=="File Not Found" (
    Set hidden = 0 
    ) Else (
Set hidden=%hidden~-29%) 

echo %hidden% 
Set /p reg=<reg.txt 
IF /I "%hidden%"=="File Not Found" (
    set reg = 0 
    ) ELSE (
    Set reg=%reg~-29%) 
set /a total = %reg% + %hidden% 

Echo The total number of files in the %1 directory is: %total%. This includes hidden files. 
Echo. 
Echo The total number of non-hidden files in the %1 directory is: %reg%. 
Echo. 
Echo The total number of hidden files in the %1 directory is: %hidden% 
+1

'FOR/F'コマンドを使用して、作成した出力ファイルを読み込んだり、' DIR'コマンドと 'FIND'コマンドの出力を解析することができます。デフォルトでは、出力は最初のスペースで分割されます。ですから、環境変数に 'FOR'変数を代入して、後でスクリプトで使うことができます。 – Squashman

+0

より良い選択肢は、 'FIND'コマンドの'/C'オプションを使ってファイルの数を数えることです。 'dir"%1 "/ a:h-d/b | find/c/v" "' – Squashman

答えて

1

あなたは、あなたのスクリプトが遅くなります一時ファイルを必要としません:

あなたが隠しファイルをカウントしたい場合は、すべてのファイル

をカウントするために、この

@echo off 
set counter=0 
for /f %%# in ('dir /a:h-d "%~1"') do (
    set /a counter=counter+1 
) 
echo hidden files=%counter% 

を試してみてください

@echo off 
set counter=0 
for /f %%# in ('dir /a:-d "%~1"') do (
    set /a counter=counter+1 
) 
echo all files=%counter% 
1

これはもう1つのForループオプションです:

@For /F %%A In ('Dir/AH-D-L "%~1" 2^>Nul') Do @If Not "%%A"=="0" Set "fileCount=%%A" 
@Echo %fileCount% 
@Pause 

ファイル数から接合点を除外しない場合は、-Lを削除してください。

0

2つのFORループで同じ結果が得られました。かっこ内の一重引用符でセンテンスを使用すると、コマンドを実行して結果を格納できます。

私は同じ結果テキストだけでは、比較してみましょう、これはあなたが探しているものであるかどうかを確認するために残してきた:DIRの/ Bパラメータで

@echo off 
setlocal 

for /f %%A in ('dir "%~1" /a-h-d /b ^| find /V /C ""') do set "visCount=%%A" 
for /f %%A in ('dir "%~1" /ah-d /b ^| find /V /C ""') do set "hidCount=%%A" 

set /a totalCount = visCount + hidCount 

echo. 
echo The total number of files in the %1 directory is: %totalCount%. This includes hidden files. 
echo. 
echo The total number of non-hidden files in the %1 directory is: %visCount%. 
echo. 
echo The total number of hidden files in the %1 directory is: %hidCount% 

CODEをコマンド私はファイルごとに1行しか得られず、/ AIでは隠しファイルか否かを選択できます。

次に、SET/Aコマンドを使用して算術演算を使用しましょう。

関連する問題