2017-04-25 136 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腳本文件中並從批處理中調用。