2016-10-18 8 views
0

ここでは、重複したファイルをフォルダに見つけるためのスクリプトです(まだ完成していません)。ファイルからバッチスクリプトを読み込みます

@echo off 
dir /b > files.io 
for /f "tokens=*" %%a in (files.io) do (
    echo %%a 
    FOR %%i IN ("%%a") DO (
     echo filename=%%~ni 
     dir /b "%%~ni*" | find /v /c "" 
     dir /b "%%~ni*" | find /v /c "">countfiles.io 
     type countfiles.io 
     set /p nbfic=<countfiles.io 
     del countfiles.io 
     echo %nbfic% 
    ) 
) 

私は3つのディレクトリ内のファイル、およびここに出力されます:あなたが見ることができるように、次のようには見えないのに対し、両方dir /b "%%~ni*" | find /v /c ""type countfiles.ioは私に、有効な結果を返す、

abc.sws 
filename=abc 
2 
2 
1 
abc.txt 
filename=abc 
2 
2 
1 
def.txt 
filename=def 
1 
1 
1 

を作品:

dir /b "%%~ni*" | find /v /c "">countfiles.io 
set /p nbfic=<countfiles.io 
del countfiles.io 
echo %nbfic% 

しかし、私は...このコードと間違って行くことができるもの、あなたの助けを事前に感謝 が表示されません!

+1

コードブロック内にあります。遅延拡張を使用する必要があります。 – Squashman

+0

ありがとう、それは今完璧に動作します! 遅延拡張について聞いたことがありませんでしたが、頻繁に使用する必要がありますね。 – aName

答えて

0

実際に私がコードブロックにいたのは、遅延拡張を使用する必要がありました。私は私の問題は、ファイルの先頭に追加する解決:あなたは助けるために

Setlocal EnableDelayedExpansion 

をしてecho !nbfic!

おかげ@Squashmanでecho %nbfic%を交換します! :)

関連する問題