我想从Windows 7的上下文菜单中删除存储在文本文件中的列表中的文件。我制定了命令,如果我在命令提示符下运行我要清理的目录中的脚本,它可以正常工作。
我想通过上下文菜单访问该脚本,因此当我右键单击该文件夹并单击快捷命令时,它将删除单独文本文件中列出的该文件夹中的文件。这就是我尝试过的:
我把我的命令放在注册表中。它出现了,但没有像我预期的那样运行。这是我的命令:
for /f %i in (D:\Desktop\Documents\deletelist.txt) do del %i
这是注册表命令:
C:\Windows\system32\cmd.exe for /f %i in (D:\Desktop\Documents\deletelist.txt) do del %i
在上下文菜单中单击此按钮后,命令提示符窗口将当前目录切换到C:\ Windows \ system32 \,并且不运行任何操作。谁能告诉我这有什么问题?
编辑:
很抱歉,如果我在这里没有说清楚的话。该命令将在C:\ Windows \ system32 \中运行,因为没有当前目录作为参数传递。如果我去我想要的路径并运行它,它运行正常。如果目录是动态的,那就不行了。
我放弃了这种方法。我想,回到批处理。我的注册表项:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\Delete files\command]
@="\"D:\\Desktop\\Documents\\delfil.bat\" %1"
我的蝙蝠档案:
start /D %1 /B for /f "usebackq tokens=*" %%i in (D:\Desktop\Documents\deletelist.txt) do del /q "%%i"
exit
它可以工作,但是使用start会使命令窗口保持不动而不是自动关闭。此外,我无法删除文件夹和文件。例如,我有一个deletelist.txt看起来像这样:
Pale Moon temp
Temp
007_copy.jpg
008_copy.jpg
009_copy.jpg
010_copy.jpg
011_copy.jpg
012_copy.jpg
013_copy.jpg
014_copy.jpg
015_copy.jpg
016_copy.jpg
017_copy.jpg
018_copy.jpg
019_copy.jpg
020_copy.jpg
021_copy.jpg
022_copy.jpg
credits.jpg
lol.reg
有2个文件夹,另一个是文件。如果我运行(del / q“%% i”),则删除当前文件夹和子文件夹中的文件,但保留子文件夹。我必须运行一个单独的批处理(rd / s / q“%% i”)来摆脱文件夹。任何干净的方式只需运行命令来扫描列表,抓住该行,并删除该项目,无论它是文件夹还是文件。
谢谢。
答案 0 :(得分:0)
您只是忘记了参数/c
:
C:\Windows\system32\cmd.exe /c "for /f %i in (D:\Desktop\Documents\deletelist.txt) do del %i"
答案 1 :(得分:0)
刚刚在How to add batch script to context menu of multiple computers发布了一个解决您的一些问题的答案。
所以对你来说
cmd /c cd "%V% & <the rest of your commands>
&
在同一行上分隔命令。在REGISTRY ONLY %V%
是您在后台菜单上的目录,如果您右键单击文件夹,请使用%1
。
您可以运行两次命令,一次使用rd
,一次使用del
。它没有伤害任何东西。用&符号分隔它们(&
)。