Если вы тестируете для определенного имени в каталоге, то вы, как правило, сделать что-то вроде:
if exist name (echo found it) else (echo not found)
Или, если имя является неполным
if exist *name* (echo found it) else (echo not found)
Если вы тестируете для имя в любом месте в дереве каталогов, то я бы использовал
dir /s /a-d *name* >nul && (echo found it) || (echo not found)
Если вы являетесь эмитентом ng команда, которая генерирует строки вывода, и вы хотите проверить, существует ли имя в какой-либо одной строке, тогда Windows-трубы обычно работают нормально, если размер вывода не огромен, а вторая половина может идти в ногу с 1-й половина.
yourCommand | find "name" >nul && (echo found it) || (echo not found)
Но трубы становятся неэффективными, если вторая половина медленно по сравнению с 1-й половине, и много данных, должны быть помещены в буфер. В этом случае, безусловно, лучше использовать временный файл вместо канала. Я включаю случайное число в имя файла temp для защиты от возможного столкновения нескольких процессов с использованием одного и того же каталога temp.
set tempFile="%temp%\myTempFileBaseName%random%.txt"
yourCommand >%tempFile%
<%tempFile% find "name" >nul && (echo found it) || (echo not found)
del %tempFile%
Обычно я использую трубы, если не знаю, что у меня проблема с производительностью.
спасибо! но я получаю ошибку «еще было неожиданно в это время» при использовании ... 'dir/on/b/a: d C: \ projects' | find test> nul && (echo found it) else (echo not found) – user1229895
Упс - глупая ошибка с моей стороны - исправлено – dbenham
спасибо dbenham ;-) – user1229895