批量查找所有特定文件夹

批量查找所有特定文件夹

我有几个名为“temp”的文件夹,我想找到它们,但当我运行应用程序时,只显示第一个实例。应该怎么做才能显示其他文件夹?

@echo off
for /d /r "c:\" %%i in (temp) do @if exist "%%i" set path=%%i
echo %path%
pause :: Pause the app.

答案1

应该做些什么来向别人展示?

您需要在循环echo内部forif测试内部执行,否则您只能echo执行最后一场比赛。

此外:

  • 我不会将其用作path变量(PATH是已定义的环境变量)。
  • 为您的变量命名_somename(前导_可防止名称与现有环境变量冲突)。
  • setlocal使用它来阻止变量泄漏到父命令提示符是一个好主意。
  • 您需要使用以便每次循环时都set setlocal enabledelayedexpansion更新值。echo

尝试以下批处理文件:

@echo off
setlocal
setlocal enabledelayedexpansion
@echo off
for /d /r "c:\" %%i in (temp) do (
  @if exist "%%i" (
    @set _variable=%%i
    @echo !_variable!
    )
  )
endlocal

进一步阅读

答案2

如果您只是想要列出它们,而不是一次访问它们,请使用以下命令:

cd \
dir temp /a:d /b /s > "%USERPROFILE%\Desktop\tempdirs.txt"
start "" "%USERPROFILE%\Desktop\tempdirs.txt"

具体来说:

  1. 转到驱动器的根目录(此命令一次只能扫描一个驱动器)。
  2. 使用dir命令查找名为“temp”的事物。
  3. 要求事物具有“目录”属性(即是文件夹)。
  4. 以“裸”格式显示输出,仅显示文件(或在本例中为文件夹)名称。
  5. 从当前目录开始并检查所有子目录(这就是我们从驱动器的根目录运行命令的原因)。
  6. 将输出重定向到文件(只是为了以后更容易读取它)。
  7. 将此文件放在您的用户配置文件下的桌面文件夹中(%USERPROFILE%扩展为您的配置文件的路径,类似于C:\Users\username)。
  8. 在默认的 .txt 编辑器(通常是记事本)中打开您刚刚写出的文件。

在我的计算机上运行这些命令的示例结果:

C:\$Recycle.Bin\S-1-5-21-1498554065-3975735064-3637327715-1001\$RBC5Q5G\Temp C:\KDE\Temp C:\Program Files (x86)\Android\android-sdk\temp C:\ProgramData\Microsoft\IdentityCRL\production\temp C:\ProgramData\Microsoft\RAC\Temp C:\Users\All Users\Microsoft\IdentityCRL\production\temp C:\Users\All Users\Microsoft\RAC\Temp C:\Users\cbhacking\AppData\Local\Temp C:\Users\cbhacking\AppData\Local\Google\Chrome\User Data\Default\Extensions\Temp C:\Users\cbhacking\AppData\Local\Microsoft\MSOIdentityCRL\production\temp C:\用户\cbhacking\应用程序数据\本地\微软\VisualStudio\14.0\SyncSettings\1733649840\Temp C:\用户\cbhacking\应用程序数据\本地\微软\VisualStudio\vshub\设置\SyncSettings\1206173302\Temp

相关内容