我用它创建了一个 .reg 以添加Delete empty folders
我的上下文菜单中的命令。当我右键单击一个文件夹时,这应该删除其空的子文件夹。
我的上下文菜单中有“删除空文件夹”,但是当我选择此选项时,会打开一个 cmd 窗口,并收到此错误:.. 此时是意外的。
知道为什么吗?
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\Directory\shell\Delete empty folders]
[HKEY_CLASSES_ROOT\Directory\shell\Delete empty folders\Command]
@="cmd /c for /f \"usebackq delims=\" %%d in (`\"dir \"%1\" /ad/b/s | sort /R\"`) do rd \"%%d\""
代码来自@mmj(here https://stackoverflow.com/questions/34018590/add-delete-empty-folders-to-windows-context-menu/34025977?noredirect=1#comment57136936_34025977)
Edit:感谢 JosephZ 的帮助,这是解决方案:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\Directory\shell\Delete empty folders]
[HKEY_CLASSES_ROOT\Directory\shell\Delete empty folders\Command]
@="cmd.exe /K for /f \"usebackq delims=\" %%d in (`\"dir \"%V\" /ad/b/s | sort /R\"`) do rd \"%%~d\""
我不明白为什么你的代码失败。出于调试目的:接下来都是.reg
s work:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\Directory\shell\List all subfolders2]
[HKEY_CLASSES_ROOT\Directory\shell\List all subfolders2\command]
@="cmd.exe /K for /f \"usebackq delims=\" %%d in (`\"dir \"%V\" /ad/b/s | sort /R\"`) do @echo \"%%~d\""
对您的代码所做的更改:
-
cmd.exe
代替cmd
;
-
/K
切换以保持命令提示符窗口打开;
-
%V
代替%1
但与%1
以及;
-
@echo
代替rd
因为我不想删除任何目录,即使是空的(仅用于调试);
-
%%~d
代替%%d
.
另一种逃避方法:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\Directory\shell\List all subfolders]
[HKEY_CLASSES_ROOT\Directory\shell\List all subfolders\command]
@="cmd.exe /S /K \"for /f \"delims=\" %%d in ('dir \"%V\" /ad/b/s ^| sort /R') do @echo \"%%~d\"\""
摘自cmd /?
:
If /C
or /K
指定后,则命令行的其余部分
将开关作为命令行处理后,其中以下内容
逻辑用于处理引用("
) 人物:
-
如果满足以下所有条件,则保留命令行上的引号字符:
- no
/S
switch
- 正好两个引号字符
- 两个引号字符之间没有特殊字符,其中特殊字符是以下之一:
&<>()@^|
- 两个引号字符之间有一个或多个空白字符
- 两个引号字符之间的字符串是可执行文件的名称。
否则,旧的行为是查看第一个字符是否是引号字符,如果是,则剥离前导字符并删除
命令行上的最后一个引号字符,保留后面的任何文本
最后一个引号字符。
Edit:解决方案(OP建议Arone https://stackoverflow.com/users/3154274/arone一次又一次):
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\Directory\shell\Delete empty folders]
[HKEY_CLASSES_ROOT\Directory\shell\Delete empty folders\Command]
@="cmd.exe /K for /f \"usebackq delims=\" %%d in (`\"dir \"%V\" /ad/b/s | sort /R\"`) do rd \"%%~d\""
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)