2014-01-11 38 views
0

我想从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" 

我的bat文件:

start /D %1 /B for /f "usebackq tokens=*" %%i in (D:\Desktop\Documents\deletelist.txt) do del /q "%%i" 
exit 

它的工作原理,但使用开始离开命令窗口熬夜,而不是自动关闭。此外,我无法删除文件夹和文件不分青红皂白。例如,我有一个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

尝试将echo命令应用到注册表脚本中? – Meredith

回答

0

你根本忘了参数/c

C:\Windows\system32\cmd.exe /c "for /f %i in (D:\Desktop\Documents\deletelist.txt) do del %i" 
+0

对不起,我编辑了我的帖子,使其更清晰。如果使用上下文菜单快捷方式,您提供的命令将不起作用。它将跳转到C:\ Windows \ system32 \并在那里运行,在列表中找到不存在的文件和文件夹。 – toomyzoom

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。它不会伤害任何东西。用&符号分隔(&)。

相关问题