如何将文件删除到 shell:从 vbs 启动?

Posted

技术标签:

【中文标题】如何将文件删除到 shell:从 vbs 启动?【英文标题】:How delete file to shell:startup from vbs? 【发布时间】:2021-07-14 02:37:05 【问题描述】:

我正在尝试从 vbs 中删除一个文件,但我不能,因为这是一个长扩展名,并且必须使用引号:

Set oShell = CreateObject ("Wscript.Shell")
    Dim strArgs6919
    strArgs6919 = "cmd /c del %APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup\SoftEther *** Client Manager Startup"
    oShell.Run strArgs6919, 0, false

我可以毫无问题地手动删除它,但我想从 vbs 中删除它,我该如何解决这个问题?非常感谢和问候!

【问题讨论】:

您的代码与您的预期用途相矛盾。如果您想使用 Vbscript 执行此操作,请使用 File System Object 进行删除,而不是调用内置于 CMD.EXEDEL 命令。 @Squashman,怎么能这样? 这能回答你的问题吗? Vbscript to delete files with special characters in their name 您可能也想阅读这篇文章。 Can I pick up environment variables in vbscript? 我建议您的问题可能比这更简单。根据位置,我的第一个猜测是您应该尝试删除快捷方式,即将SoftEther *** Client Manager Startup更改为SoftEther *** Client Manager Startup.lnk当您不让 Windows 隐藏已知文件类型的扩展名时,事情会变得容易得多。显然,如果你这样做,我会确保你也双引号该文件路径,因为它包含空格字符。在这个阶段,我假设你知道如何处理那些嵌套的双引号,如果不知道,请告诉我们 【参考方案1】:

这是一个基于您在 cmets 中收到的累积建议的简单示例:

' VB Script Document
Option Explicit
Dim objFSO, objSh, strFile
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objSh = CreateObject("WScript.Shell")
strFile = objSh.SpecialFolders("Startup") & "\SoftEther *** Client Manager Startup.lnk"
If objFSO.FileExists(strFile) Then objFSO.DeleteFile strFile, True

【讨论】:

我确实试过这个:Set shell = CreateObject("WScript.Shell") Set fso = CreateObject("Scripting.FileSystemObject") startupFolder = shell.SpecialFolders("Startup") & "\" filename = "C:\Users\"& USERNAME &"\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\SoftEther *** Client Manager Startup.lnk" If fso.FileExists(filename) Then fso.DeleteFile filename, True 但不起作用 我不会用不同的代码帮助你@UlisesAntonioChávez,我上面的回答就是我希望你使用和尝试的全部。如果我自己的代码无法按预期工作,我只会调试我自己的代码,并且您已经宣布它确实如此。我不提供一对一的辅导和支持服务。 好的,但是您的代码可以正常工作,谢谢

以上是关于如何将文件删除到 shell:从 vbs 启动?的主要内容,如果未能解决你的问题,请参考以下文章

如何让一个vbs文件开机自启

如何将多个变量从 VBS 传递到批处理脚本?

vb.net2005中如何调用外部vbs文件

如何使用 Windows 批处理文件或 vbs 脚本一次将多个文件 1 从 2 个文件夹复制到另一个文件夹

从shell中的文件递归删除文件名后缀

VBS脚本运行批处理文件,不在启动时运行[重复]