我在我的批处理文件中有这个并且有效。我的问题是我在不同的计算机上使用它并且它们不以同样的方式存储“symatech”。
@ECHO === Checking for Symantech Products
IF NOT EXIST "C:\Program Files\Symantec" GOTO DoneSymantec
ECHO One moment while we remove Symantec Software...
Call "%~d0\exe\Norton_Removal_Tool.exe"
:DoneSymantec
所以我的问题是,有没有办法让它像这样:如果不存在 *程序文件中的任何文件夹包含norton或symantech goto donesymantech
答案 0 :(得分:0)
dir /b /s /ad "c:\program files\symantec
将从“c:\ program files”开始递归搜索“symantec”文件夹
检查%errorlevel%
,如果找到则会0
,1
,如果找不到。
理论上你可以从“C:\”开始,但这需要很长时间才能完成。 如果您知道从哪里开始搜索(在您的示例中为“c:\ program files”)
,速度会快得多如果需要,在“C:\ Program Files(x86)”中开始第二次搜索,而不是在整个磁盘上进行一次搜索。
如果您不想查看dir
的输出,只需将其重定向到nirwana(>nul
)即可。这也会加快搜索速度,因为打印到屏幕上的速度很慢。
编辑:如果你需要路径而不是只知道“如果存在”:
for /F "delims=" %%j in ('dir /b /s /ad "c:\Program Files\symantec" "c:\Program Files (x86)\symantec"') do @echo %%j
(在“Program Files”和“Program Files(x86)”中搜索;根据需要进行调整)