如何在Windows命令提示符启动时运行命令

67

编辑

如果您想在计算机启动或基于事件执行任何任务,这非常有用。

http://answers.microsoft.com/zh-cn/windows/forum/windows_7-performance/how-to-schedule-computer-to-shut-down-at-a-certain/800ed207-f630-480d-8c92-dff2313c193b


回到问题

我有两个问题:

  1. 我想在启动命令提示符时执行一些特定的命令。

    例如,cls用于清除我的命令提示符。

  2. 我想在批处理文件中执行一些命令,并等待用户输入新命令(如果有)。

    例如:一个批处理文件将带用户前往某个指定的文件夹,然后等待用户从命令提示符中重命名/删除文件。

我该如何做呢?

7个回答

114
如果您想每次启动命令提示符时运行一组定义好的命令,最好的方法是在AutoRun注册表值中指定一个init脚本。创建它的方式如下(可扩展字符串值允许您使用环境变量,例如%USERPROFILE%):
reg add "HKCU\Software\Microsoft\Command Processor" /v AutoRun ^
  /t REG_EXPAND_SZ /d "%"USERPROFILE"%\init.cmd" /f

然后在您的个人资料文件夹中创建一个名为 init.cmd 的文件:

@echo off

command_A
command_B
...
cls

要撤销这些更改,请delete注册表键:

reg delete "HKCU\Software\Microsoft\Command Processor" /v AutoRun

谢谢,这对我有用。现在我需要撤销这个设置,你知道我该怎么做吗? - alexandre1985
删除Delete it - Ansgar Wiechers
17
一条建议:不要启动会导致额外命令提示符弹出的程序,否则会导致无限循环。 - John Leidegren
2
@Sergio Windows不是Linux,CMD也不是Bash。很抱歉让你失望了。你可能想考虑使用PowerShell。 - Ansgar Wiechers
1
如果您使用自动化命令行工具(如部署工具),则此方法会导致问题。每个加载新 shell 的进程都将加载您的 init.cmd 文件,从而导致意外结果(以及明显的减速)。 - pbarney
显示剩余3条评论

54
  1. 创建快捷方式
  2. 进入属性
  3. 找到 C:\Users\<Your username>\Desktop\cmd.exe,替换为 -cmd /K <your command here>

例如: C:\Users\Lewis\Desktop\cmd.exe -cmd /K color 1f

这是一种无需修改注册表即可运行一个命令的方法。

运行多个命令

你可以使用 &(and)操作符来执行多个命令。

例如:

C:\Users\Lewis\Desktop\cmd.exe -cmd /K color 1f & H: & <your command>

致谢:user6589073


这可以应用于Windows 10,它在“msconfig”中删除了“启动”选项卡。 - user598527
一个快捷方式的什么? - Nicolas Gervais

17

我找到了答案:我应该使用/K开关,使用它可以在打开的命令提示符中输入新命令。

例如,cmd /K cls会为我打开一个命令提示符并清除它。(对第一个问题的回答)

cmd /K MyBatchFile.bat将启动一个命令提示符,执行批处理文件并停留在该命令提示符上不退出。(对第二个问题的回答)


5

稍作扩展,这里是 Windows 10 的另一种方法,可以在执行命令提示符时定义并应用多个别名。

  1. 在你的 %USERPROFILE% 文件夹中创建一个名为 init.cmd 的文件,其中包含别名:

init.cmd

@echo off
doskey c=cls
doskey d=cd %USERPROFILE%\Desktop
doskey e=explorer $*
doskey g=git status
doskey l=dir /a $*
  1. 注册命令,使其每次执行命令提示时都会应用:

在命令提示符中运行:

reg add "HKCU\Software\Microsoft\Command Processor" /v AutoRun /t REG_EXPAND_SZ /d "%"USERPROFILE"%\init.cmd" /f

完成

现在,init.cmd文件的内容将运行cmd.exe的执行,即从以下位置:

  • 任务栏快捷方式
  • WIN+R cmd
  • 通过在文件资源管理器地址栏中键入cmd
  • 直接从C:\Windows\System32运行cmd.exe

在注册这些设置后,请记得关闭/打开:

  • 命令提示符,以应用设置
  • 文件资源管理器,如果您使用文件资源管理器地址栏启动cmd

要注销它,请运行:

reg delete "HKCU\Software\Microsoft\Command Processor" /v AutoRun

2
对于好奇的新手:reg add 命令中的标志意义如下:/t REG_EXPAND_SZ: 值类型:字符串,可扩展环境变量/f: 强制覆盖。 - philb

3

首先,需要按下 Windows 键 + R。 在弹出的框中,键入“regedit”(不带引号)。 Windows 注册表编辑器将会打开。 现在,定位到 HKEY_CURRENT_USER/Software/Microsoft/Command Processor。 一旦你在左侧点击了“Command Processor”,点击顶部菜单上的“编辑”。 然后进入“编辑”菜单中的“新建 > 字符串值”。 将显示的字符串值重命名为 Autorun。 右键单击 Autorun 并选择“修改”。 在“数值数据”区域下,输入要运行的命令。您可以通过在它们之间输入 && 来运行多个命令。


0

我有一个命令来运行一个Python程序。我不想在登录后手动运行此命令,我希望此命令在我登录到Ubuntu后自动运行。我正在使用Ubuntu 16.04。

这是命令。

sh demo_darknet_yolov3.sh,此shell位于此目录中littro@littro-System-Product-Name:~/MobileNet-YOLO-master/MobileNet-YOLO-master


0

根据您的脚本,您可能想要使用cmd.exe /k <input script>方法,而不是注册表项Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor\autorun

我发现后者会影响启动cmd的其他程序。例如,我无法使Visual Studio Native Tools提示正常工作,因为我的脚本会妨碍它。在我的情况下,脚本是一个菜单,包括5个选项,包括手动启动各种程序(我喜欢最小化自动运行的程序)和设置各种环境变量(例如打印机、代理设置、程序的默认版本等)。

如果您正在进行静态操作,我认为两种方法都可以。

我本来想在问题或适用的答案上发表评论,但我没有足够的声望来评论。


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