0

ドライブをスキャンして、"Thumbs v0.1.db" という名前のファイルを 1 つだけ含むすべてのフォルダーを一覧表示する必要があります。次のコードをまとめましたが、うまくいかないようです。バッチ ファイルが途中で終了するか、そのようなサブディレクトリを一覧表示せずに完了します。誰かが問題を指摘できれば、とても感謝しています。

@echo off

SET /P folder="Please enter root directory to seach in: "

SET writefile="C:\Users\MYNAME\Desktop\Thumbs.txt"

SET tmp="C:\Users\MYNAME\Desktop\rowcounttmp"


Echo Searching for directories, please wait...

echo Thumbs v0.1.db-only directories in %folder% > %writefile%


cd /D %folder%
for /d /r %1 %%A in (.) do (

  dir /a /b "%%~fA" 2>nul | find /c /v "~StringWhichWillNotAppear~" > %tmp%

  set var=<%tmp%

  if [%var%] == 1  dir /a /b "%%~fA" 2>nul | findstr /i "Thumbs v0.1.db" >nul && echo %%~fA >> %writefile%

)

del %tmp%

Pause

ありがとう

編集:

@peter-wright のおかげで、私は今これを持っています: 私は彼の提案を間違って実装しましたか? 特定のファイル パス (具体的には、スキャンしようとしている読み取り専用ドライブ) でクラッシュするように見えますが、まだ結果が表示されません。

@echo off

SETLOCAL ENABLEDELAYEDEXPANSION

Color 0A

SET /P folder="Please enter root directory to seach in: "

SET writefile="C:\Users\MYNAME\Desktop\Thumbs.txt"

SET tempfile="C:\Users\MYNAME\Desktop\rowcounttmp"


Echo Searching for directories, please wait...

echo Thumbs v0.1.db only directories in %folder% > %writefile%


cd /D %folder%
for /d /r %1 %%A in (.) do (


  dir /a /b "%%~fA" 2>nul | find /c /v "~StringWhichWillNotAppear~" > %tempfile%

  set var=<%tempfile%

  if !var! == 1 dir /a /b "%%~fA" 2>nul | findstr /i "Thumbs v0.1.db" >nul && echo %%~fA >> %writefile%

)

del %tempfile%

Pause
4

1 に答える 1