昨天我在 WinPE 中用 EASEUS 分区主控合并了两个驱动器(D:空和 E:我的数据)。但是失败了,然后我意识到 70% 的数据被移动到了一个文件夹(D:\Local Disk E_72420221840),而 30% 仍留在 E 中。然后将所有数据复制到一个新磁盘并删除分区并创建一个簇大小为 64KB 的新分区,然后将我之前复制的数据恢复到新分区,然后注意到所有文件夹的自定义图标都消失了。经过一番搜索,我发现了问题。默认情况下,所有文件夹都设置为只读属性,并且需要显示在 desk.ini 中指定的自定义图标。但我的文件夹都没有只读标志,所以我测试了下面的代码
attrib +R "foldername"
并且成功了(自定义图标再次出现),但我有 600GB 的数据和许多文件夹,那么有没有办法轻松地将所有文件夹属性重置为默认只读?还尝试了以下方法
FOR /f %a IN ('DIR /A/D/B') DO ATTRIB +R "%a"
但它也会改变文件属性(我不希望我的整个文件都是只读的)并且不会改变子文件夹的属性。 我想我需要一个 for 循环脚本来检查 %%a 是文件夹还是文件,并搜索所有子文件夹几天前我创建了一个脚本,用于检查 1% 是文件夹还是文件,我使用了这个模板:
if exist %1\ (echo %%1 is Folder) else if exist %1 (echo %%1 is File) else (exit)
我不知道它是否适合我的情况,因为我还没有对它进行过大量测试。
更新:正如@Señor CMasMas 所说,我错了。只读是仅针对具有自定义图标的文件夹的默认属性。所以我不想弄乱所有文件夹,只想弄乱包含desktop.ini 的文件夹。
答案1
我相信这就是您正在寻找的答案。
尝试这个:
for /r %d in (.) do if exist "%d\desktop.ini" pushd "%d" && ATTRIB +R . && popd
如果将其放入批处理文件中,则需要将“%”符号加倍。
这可以没有pushd
and也可以工作popd
,但是我把它们留在这里,所以如果其他人可能正在使用不采用路径的命令,他们可以替换它以使其工作。