批处理文件在提升权限时不能传递带空格的路径

批处理文件在提升权限时不能传递带空格的路径

我正在尝试创建一个批处理文件,该文件需要传递路径并且其中包含需要提升的操作(我mklink在其中使用)。

以下是重现该问题的方法。

  1. 创建一个仅包含以下内容的 .bat 文件pause
  2. 创建该批处理文件的快捷方式。
  3. 创建 2 个文件夹,C:\ThisWillWork然后C:\This Will Fail
  4. 尝试将每个文件夹拖到快捷方式上。两种方法都应该有效。
  5. 更改快捷方式设置,并在高级选项中检查是否需要管理员权限。
  6. 尝试再次拖动每个文件夹,C:\ThisWillWork行为会相同,但C:\This Will Fail会闪烁命令提示符并立即关闭。

这是在 Windows 7 64 位上完成的。

我该怎么做才能实现我的目标?有没有办法让我mklink无需提升权限就可以使用?我是否需要从使用 Windows 批处理文件切换到其他文件(可能是 powershell)?我还可以使用什么来编写脚本来删除文件夹,然后将其重新创建为指向我放在其上的文件夹的目录符号链接?

答案1

尝试创建快捷方式

%Windir%\System32\cmd.exe /C C:\BIN\batchfile.bat 

如果这不能自行解决问题,请尝试以下步骤。

要解决此问题,请在“命令提示符属性”对话框或“记事本属性”对话框中更改“启动于”值。

为此,请按照以下步骤操作:
单击“开始”,指向“所有程序”,然后指向“附件”。
右键单击“命令提示符”或“记事本”,然后单击“属性”。
在“启动于”框中,将值从 %HOMEDRIVE%%HOMEPATH% 更改为系统范围的值,例如 %WINDIR%。
单击“确定”。

http://support.microsoft.com/kb/832434了解详细信息。

如果您想通过原始方法了解更多情况,您可以以管理员身份打开命令提示符并输入

%windir%\System32\cmd.exe /C "C:\bin\batchfile.bat" "C:\THIS WILL FAIL" 

由于某些命令行解析失败,因此不会加载批处理文件,从而导致错误。

相关内容