Windows命令行:自动input.cmd文件中的命令

好的,我有这样一个batch file

@title RUBY ;) @set PATH=D:\Programming\Ruby22-x64\bin;%PATH% @call cmd /K cd /DE:\RubyProgramming 

我用它来帮助运行脚本,而不需要每次都导航到文件夹。 事情是,我通常为任何给定的程序运行几百次相同的命令。 例如:

 ruby rubyprogram.rb inputfile.txt outputfile.xml miscargument 

有没有办法让这样一个batch file, 键入一个命令,当你运行它? 不执行 ,只要input,这样我按Enter键执行它,并使用↑向上箭头再次在CMD中使用它? 我一直无法find一个可以让这个地方的命令,但是如果有的话是有用的。

最简单的方法就是创建一个执行该特定命令的新批处理文件:

 @echo off title RUBY ;) set PATH=D:\Programming\Ruby22-x64\bin;%PATH% cd /DE:\RubyProgramming rubyprogram.rb inputfile.txt outputfile.xml miscargument 

或者,您可以获取批处理文件以重复询问命令运行

 @echo off title RUBY ;) set PATH=D:\Programming\Ruby22-x64\bin;%PATH% cd /DE:\RubyProgramming set RUBYCMD=rubyprogram.rb inputfile.txt outputfile.xml miscargument :loop echo. REM line below ends with a space for neatness set /p RUBYCMD=Enter ruby command (or 'Q' to exit) [%RUBYCMD%]: if /i "%RUBYCMD%" == "q" goto :eof %RUBYCMD% goto :loop 

不,批处理文件不能输入或点击任何东西。 但是,您可以从批处理文件中调用其他语言编写的脚本。 例如,你冷写了一个VB或一个AutoIt脚本,从批处理中调用它,并使新脚本“键入”命令。

看看这个VB脚本:

 Set WshShell = WScript.CreateObject("WScript.Shell") WshShell.Run "%windir%\notepad.exe" WshShell.AppActivate "Notepad" WshShell.SendKeys "hello world" 

这将打开记事本,集中新的窗口和键入你好世界 。 这样你也可以启动一个新的控制台或获得已经启动的控制台的焦点并输入你的命令。 这段代码可以保存在一个单独的VB脚本文件中,并从批处理中调用。