2014-05-13 80 views
0

的一定深度,我有下面的代碼通過子目錄2個exe文件搜索:一批FINDSTR子文件夾

@echo off & setLocal EnableDELAYedeXpansion 
for %%d in (c) do if exist %%d: (
for /f "delims=" %%a in ('dir/b/s/x %%d:\autolog.exe %%d:\autorun.exe 2^>nul ^| findstr /V /C:".*\.*\.*\.*\.*\.*\.*\.*\.*" /C:".*\.*\.*\.*\.*\.*\.*\.*" /C:".*\.*\.*\.*\.*\.*\.*" /C:".*\.*\.*\.*\.*\.*" /C:".*\.*\.*\.*\*"') do (
set var=%%a;!var! 
)) 
echo %1,!var!, >>C:\test.txt 
exit 

雖然它的工作原理搜索所有子文件夾(使用/秒),我想只有在子文件夾級別(例如,c:\ sf1 \ sf2 \ sf3 \ autorun.exe應該是有效結果,而c:\ sf1 \ sf2 \ sf3 \ sf4 \ autorun.exe以及任何找到更遠的樹應該選擇退出並且不會因此而返回)。

我嘗試使用所有通配符組合(* |。|。*)以及「\ V」來嘗試實現它,但失敗。爲什麼它不起作用,或者如果有其他更聰明的方法呢?

在此先感謝

回答

1

繼承人是一個樣本,以限制第四層文件夾中,在FINDSTR條款使用正則表達式:

@echo off 
for /f "delims=" %%a in ('dir /ad /b /s ^| findstr \\.*\\.*\\.*\\ ^| findstr /v \\.*\\.*\\.*\\.*\\') do echo %%a 
pause 
+0

感謝,代碼工作,而只顯示所有4級目錄,但它實際上需要檢查特定文件是否存在於該目錄中。我未能修改您的示例來執行此操作。對不起,如果它聽起來要求太高 – Alex

+0

只是一個更新,我實際上創建了另一個findstr管,現在它完美的工作,謝謝。 – Alex

+0

您也可以使用'dir「file.ext」/ a-d/b/s'而不是'dir/ad/b/s' – foxidrive

相關問題