运行别名DOS命令的runas

5
我希望能够将dos命令别名与runas命令一起使用。具体来说,我厌倦了获取BIDS的完整路径(“C:\ Program Files \ Microsoft Visual Studio 9.0 \ Common7 \ IDE \ devenv.exe”),我想像MS为ssms所做的那样进行别名设置。有人知道如何做到这一点吗?我知道可以通过批处理文件实现此目的,但我真的不想这样做。
runas /user:user /netonly bids

对比。

runas /user:user /netonly "C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\devenv.exe"

我参考了这篇文档:http://technet.microsoft.com/en-us/library/bb490894.aspx ,看起来可能会有用。如果您能够在下面提供一个答案(而不是评论),该答案链接到一些文件,并提供基于问题中列出的命令的工作示例,那么赏金就归您了。 - Bobby B
使用我下面发布的方法,您可以像@Jon建议的那样执行操作,但命令别名将在打开dos shell时预加载。 - djangofan
3个回答

2
这个 doskey 技巧在 SuperUser 上有介绍,可以看看 https://superuser.com/questions/49170/create-an-alias-in-windows-xp
问题在于你不能定义一个可以被 runas 使用的别名。你可以定义一个包含 runas 和要运行的命令的别名,但这样就无法重复使用了。那么怎么办呢?
SET BIDS=C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\devenv.exe
DOSKEY r=runas /user:user /netonly "%$1%"

然后您可以像这样使用它
r bids

当然,这需要你为每个想要的快捷方式设置一个环境变量,但我认为这不比设置doskey别名本身更需要什么。无论如何,它都不会创建文件,也不需要将任何内容放置在path中。
更新: 我自己没有尝试过,但看起来你可以设置并忘记它了。
  • 可以通过Windows系统设置来设置环境变量(见图像)
  • DOSKEY别名可以在每次启动cmd.exe时设置使用注册表

enter image description here


太棒了!接下来有几个问题。有没有办法让我在单个会话之外保留这个?这能用,但每次重新启动命令提示符时都必须重置它。 - Bobby B

1
这是一个脚本,可以在您的命令行中设置别名。该脚本提供了难以捉摸的“WHERE”命令:
@ECHO OFF 
ECHO Loading additional commands from:
ECHO    %0
ECHO Type 'DOSKEY /MACROS:ALL' to see the configured commands.
:: to install, place this .bat script in the location you want 
:: it to reside and then run this batch script with the argument "register"
IF "%1"=="register" (
  REG.exe ADD "HKCU\Software\Microsoft\Command Processor\Autorun" /ve /t REG_SZ /d "%0" /f
  ECHO The DOS profile is registered.  Load a new command prompt and test a command.
)
@DOSKEY LS=DIR /w 
@DOSKEY CP=COPY $* 
@DOSKEY MV=MOVE $* 
@DOSKEY H=DOSKEY /HISTORY
@DOSKEY WHERE=@for %%e in (%PATHEXT%) do @for %%i in ($*%%e) do @if NOT "%%~$PATH:i"=="" echo %%~$PATH:i

有趣的替代方案。+1 - VonC
脚本在每个Win7系统上都无法运行...不确定为什么,但它可以在我的两台电脑上运行。 - djangofan

1

我认为你遇到的问题是命令行被评估为新用户 - 因此,除非新用户也可以访问你的别名,否则它将无法工作。

编辑:你可以通过创建一个方便放置的批处理文件(或快捷方式?)来启动BIDS和RunAs解决这个问题。

编辑:

请参阅这里这里以获取有关choice命令的信息

示例用法:

@ECHO OFF
Echo 1. Some Command
Echo 2. Some Other Command
CHOICE /C:12 /N /T:1,10 Choose an option
IF ERRORLEVEL 2 GOTO COMMAND2
IF ERRORLEVEL 1 GOTO COMMAND1
GOTO END

:COMMAND1
Runas /Uer:Blah "BLAH" > NUL
GOTO END

:COMMAND2
Runas /Uer:Blah "BLAH" > NUL
GOTO END

:END

是的,我之前考虑过批处理文件,但有几种不同的情况需要这样做,我真的不想让那么多批处理文件到处乱跑... - Bobby B
就我所知,我有一个批处理文件,使用CHOICE.COM提供菜单,执行RunAs并提示输入密码 - 所以我只需键入RunIt,选择选项并输入密码。在这种情况下,我还可以将不同的软件作为不同的用户运行(我的标准帐户/我的DBA帐户用于SSMS等...) - Basic
你怎么做到的?我不熟悉choice.com。 - Bobby B
更新了我的答案。即使你需要下载 Choice,它也非常方便(它还可以用于批处理文件中的定时暂停)。它适用于Windows 98/2K/XP/Vista/7。 - Basic
您甚至可以呈現多個選單 - 例如菜單1中選擇用戶,將其存儲在變量中。菜單2中,挑選應用程式 - 然後結合這兩個操作以使用指定的用戶運行應用程式。 - Basic
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接