2017-04-25 139 views
1

好吧,我有这样一个批处理文件:Windows命令行:自动从.cmd文件请在命令

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

,我用它来推动,而无需每次都浏览到该文件夹​​中运行的脚本。事情是,我通常为任何给定的程序运行几百次同样的命令。例如:

ruby rubyprogram.rb inputfile.txt outputfile.xml miscargument 

有没有一种方法,使这样一个批处理文件,类型,当你运行它的命令?不是执行,只需键入,以便我按Enter执行它并使用↑向上箭头在cmd中再次使用它?我一直无法找到一个可以在任何地方使用的命令,但如果有的话会很有用。

回答

2

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

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

或者,你可以得到的批处理文件来反复请求命令来运行

@echo off 
    title RUBY ;) 
    set PATH=D:\Programming\Ruby22-x64\bin;%PATH% 
    cd /D E:\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 
+0

这真的很整齐,谢谢! – MrVocabulary

2

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

在这个VB脚本请看:

Set WshShell = WScript.CreateObject("WScript.Shell") 

WshShell.Run "%windir%\notepad.exe" 
WshShell.AppActivate "Notepad" 

WshShell.SendKeys "hello world" 

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