如果不存在多个路径的批处理命令?

时间:2015-11-08 04:04:29

标签: android batch-file

只为android fastboot助手制作一个批处理文件。助手需要一个文件夹才能正常工作,检查是否存在,我使用了'IF NOT EXIST'命令。有没有办法检查文件夹是否可能存在于不同的路径中?例如,如果一个用户将文件夹保存到桌面而另一个用户将其保存在下载中,是否有办法检查整个系统以查找此文件夹?如果没有,还有其他尝试命令吗?感谢。

以下是我的代码示例:

IF NOT EXIST %USERPROFILE%\Desktop\Oneplusone-ADB-assist\Program-files (
start %USERPROFILE%\Desktop\Oneplusone-ADB-assist\Corrupt\Corrupt.bat
start %USERPROFILE%\Desktop\Oneplusone-ADB-assist\Corrupt\Corruptmsg.vbs
)
exit

在路径中显示“桌面”的位置,我希望它搜索多个路径而不是桌面。

2 个答案:

答案 0 :(得分:1)

下一个代码段会检查整个C:磁盘。
添加另一个for /F命令来检查其他磁盘(mutatis mutandis):

set "_lastfound="
for /F "delims=" %%G in ('dir /B /S /AD /A "C:\Program-files" 2^>NUL') do (
  echo found %%G
  set "_lastfound=%%G"
)
rem [optional] check next disk(s) here 
if not defined _lastfound (
  rem your code here
)

要获得命令说明,请键入set /?for /?dir /?if /?或访问http://ss64.com/nt/页面。另请阅读about 2>NULabout caret in 2^>NUL

答案 1 :(得分:1)

这里面临着不同的问题,让我们一步一步走

  1. 检查一组已知位置的给定文件夹

    尝试使用文件夹名称

    的简单for循环
    for %%a in (%USERPROFILE%\Desktop %appdata% %programdata%) do (
      if exist %%a\one echo %%~fa\one
    ) 
    
  2. 请注意可能包含空格的名称,在其周围加上引号"并使用%%~a

    删除它们
    for %%a in ("%USERPROFILE%\Desktop" "%appdata%" "%programdata%") do (
      if exist %%~a\one echo %%~fa\one
    ) 
    
  3. 请确保您没有误解同名文件的存在,而是检查该位置下的nul设备。

    for %%a in ("%USERPROFILE%\Desktop" "%appdata%" "%programdata%") do (
      if exist %%~a\one\nul echo %%~fa\one
    ) 
    
  4. 如果您想要检查预先不知道的许多可能位置的树中的文件夹而不是给定的位置集,则可以使用for /d和{{1的通配符}}

    *
  5. 如果你不仅要检查所有现有目录,还要检查sub(和subsub和subsubsub ...)目录,递归地添加for /d %%a in ("%USERPROFILE%\..\*") do ( if exist %%~a\one\nul echo %%~fa\one ) 标志并指定根目录地点从哪里开始搜索

    /r
  6. 并最终考虑到您可能需要使用管理员权限运行此代码以克服某些文件夹中的访问权限