在Windows资源管理器中以管理员身份在具有特殊字符的文件夹中的脚本

在Windows资源管理器中以管理员身份在具有特殊字符的文件夹中的脚本

问题描述:

我创建了一个批处理文件,它工作正常,但我想避免将来出现问题,所以我创建了一个名为“New - action_folder”的文件夹;我运行该脚本,它的工作原理,但当我试图打开它使用管理员用户,它打开它什么都不做,并立即关闭,在另一个文件夹中,它的工作原理,只有我创建的文件夹不起作用。在Windows资源管理器中以管理员身份在具有特殊字符的文件夹中的脚本

这个问题,只是在Windows资源管理器中发生,不管命令如何,我已经做了测试,只在bat上放置了“暂停”命令。

文件夹名称:

新星 - pasta_动作类';#@ $%¬&()+ - ,{}] [~~~~~~

enter image description here

。我录了一段视频

https://youtu.be/8O_3vHqqTwg

+0

当你以管理员身份运行时,它以'%SystemRoot%\ system32'作为当前目录运行。如果'test.bat'使用相对路径,则可能不会在当前目录中找到它们。最好的解决方案将涉及到你实际上在你的问题中提供了'test.bat'的内容。您可以使用[编辑功能](https://stackoverflow.com/posts/46410073/edit)添加该功能。 – Compo

+0

我已经解决了这个问题,如果我在任何其他目录中运行,它的工作原理,问题只是在具有特殊字符的目录中。 –

+0

如果我只将脚本放入“暂停”,它会立即打开和关闭。 –

当您以管理员身份运行时,实际正在运行的是cmd.exe /C "%1" %*

我假设可以通过编辑注册表中的条目来改善这一点。

要做到这一点,导航到相关的注册表项:

HKEY_CLASSES_ROOT\batfile\shell\runas\command 

和修改条目改为:

%SystemRoot%\System32\cmd.exe /C ""%1" %*" 

就是这样,你有效地封装整个参数cmd.exe内一对单独的双引号。

现在尝试再次右键点击并让我们知道它是否有帮助。

如果它的工作,那么对于未来的打样我还会建议作出同样的变化:

HKEY_CLASSES_ROOT\cmdfile\shell\runas\command 

编辑

这里是改变条目的批处理文件,它需要以管理员身份运行

@Reg Add "HKEY_CLASSES_ROOT\batfile\shell\runas\command" /VE /D "\"%%SystemRoot%%\System32\cmd.exe\" /C \"\"%%1\" %%*\"" /F>Nul 
+0

你的想法很好,给了我一个方向,但它仍然不是解决方案,因为这个想法是在任何机器上运行,我需要将它发送给某人。 –

+0

你可以写信给微软的开发团队并要求他们修复它。除此之外,您必须告诉“某人”不要有愚蠢的目录名称,或者向他们提供一个设置批处理文件,使用“注册添加”首先进行更改。我已经将这个批处理文件添加到** Edit **下的答案中。 – Compo