【问题标题】:Make script run reliably from context menu使脚本从上下文菜单可靠运行
【发布时间】:2014-01-11 05:35:37
【问题描述】:

我想从存储在 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

它可以工作,但使用 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") 运行单独的批处理来删除文件夹。任何简单的方式来运行命令来扫描列表、抓取行并删除项目,无论它是文件夹还是文件。

谢谢。

【问题讨论】:

  • 尝试在您的注册表脚本中使用 echo 命令?

标签: windows cmd command contextmenu


【解决方案1】:

你只是忘记了参数/c:

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

【讨论】:

  • 抱歉,我编辑了我的帖子以使其更清晰。如果用作上下文菜单快捷方式,您给出的命令将不起作用。它将跳转到 C:\Windows\system32\ 并在那里运行,在列表中查找不存在的文件和文件夹。
【解决方案2】:

刚刚在How to add batch script to context menu of multiple computers 发布了一个答案,解决了您的一些问题。

所以对你来说

cmd /c cd "%V% & <the rest of your commands>

&amp; 在同一行分隔命令。在 REGISTRY ONLY %V% 是目录,如果你在后台菜单,使用 %1 如果你右键单击一个文件夹。

您可以运行命令两次,一次使用rd,一次使用del。它不会伤害任何东西。用 & 号分隔它们 (&amp;)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-25
    • 2014-01-27
    • 2019-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多