我有几个名为“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
内部for
和if
测试内部执行,否则您只能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
进一步阅读
- Windows CMD 命令行的 AZ 索引- 与 Windows cmd 行相关的所有事物的绝佳参考。
- 设置本地- 设置选项来控制批处理文件中环境变量的可见性。
答案2
如果您只是想要列出它们,而不是一次访问它们,请使用以下命令:
cd \
dir temp /a:d /b /s > "%USERPROFILE%\Desktop\tempdirs.txt"
start "" "%USERPROFILE%\Desktop\tempdirs.txt"
具体来说:
- 转到驱动器的根目录(此命令一次只能扫描一个驱动器)。
- 使用
dir
命令查找名为“temp”的事物。 - 要求事物具有“目录”属性(即是文件夹)。
- 以“裸”格式显示输出,仅显示文件(或在本例中为文件夹)名称。
- 从当前目录开始并检查所有子目录(这就是我们从驱动器的根目录运行命令的原因)。
- 将输出重定向到文件(只是为了以后更容易读取它)。
- 将此文件放在您的用户配置文件下的桌面文件夹中(
%USERPROFILE%
扩展为您的配置文件的路径,类似于C:\Users\username
)。 - 在默认的 .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