2017-05-19 1 views

答えて

4

次のようなPowerShellのワンライナーでそれを行うことができます:

powershell "$ext = @{}; gci *.* | %{ $ext[$_.Extension]++ }; $ext" 

を、.BATスクリプトでダブル%記号を、これを使用している場合。純粋なバッチで


、これは私は考えることができる最も簡単な方法です:

@setlocal & @(for %%I in (*.*) do @set /a ext[%%~xI] += 1) & set ext[ 
:(まだ.BATスクリプト内の)ワンライナーに

@echo off & setlocal 

for %%I in (*.*) do (
    set /a ext[%%~xI] += 1 
) 

set ext[ 

又は縮合

または直接cmdコンソールから:

cmd /c ">NUL (@for %I in (*) do @set /a ext[%~xI] += 1) & set ext[" 

cmd /c)は、バットスクリプトにsetlocalのように振る舞い、無駄な変数で環境を混乱させるのを防ぎます)。

+0

最後のコマンドは私にはうまくいきましたが、反復的な方法が必要です。 '.bat'メソッドに@LamloumiAfifのフォルダ –

+0

を追加するには、' for/R'を使用して再帰的に行います。 PowerShellの方法では、 '-recurse'スイッチを' gci'コマンドに追加するだけです。隠しファイル/システムファイルを含めるには、一括で 'for/f 'を使用するdelims =" %% I in(' dir/s/b/a:-d ') 'など。PowerShellで' -force'オプションを'gci'。 – rojo

+0

+1、 'ext [...]'の必要はありません。単に 'set/a" %%〜xI + = 1 "'を使い、 'set .'を使って結果を見ることができます。理想的には、上部に 'SETLOCAL'を置くべきです。また、 'for/f 'のような既存の' .'または 'ext [' vars]を削除することは害ではありませんdelims == "%% V in(' set。 ')do" %% V = " '。いずれにせよ、このカウント方法は、拡張が '+'、 '-'、'^'などのような数学演算子を含んでいるとは思われません。 – dbenham

関連する問題