2012-11-10 32 views
2

我使用它使用type命令將文件的內容管到另一個程序是這樣一個程序的內部命令:重寫的Windows在cmd

type test.txt | (another program) 

此命令是在我的主程序硬編碼。問題是,type命令與前鋒的問題斜槓:

E:\babak\git\bin>type e:/babak/git/bin/test.txt 
The syntax of the command is incorrect. 

有沒有辦法覆蓋CMD內部type名爲type自定義應用程序,它支持正斜槓,所以如果有人呼籲在cmd中type,自定義type應用程序被調用?

+0

ComSpec環境變量具有命令處理器的路徑,缺省值爲c:\ windows \ system32 \ cmd.exe。使用SET命令將其替換爲您自己的。 –

+0

您是否試過通過** type **命令?如:** another_program

+0

如果參數用引號括起來,TYPE命令可以很好地處理正斜槓。 – dbenham

回答

3

如果將參數括在引號中,則TYPE內部命令可以正常使用引號。

type "e:/babak/git/bin/test.txt" 

可以防止使用內部命令和強制使用批處理或exe文件的,如果你引用的命令:

"type" e:/babak/git/bin/test.txt 

您還可以包括路徑信息,以強制使用一個exe或批

E:\babak\git\bin\type e:/babak/git/bin/test.txt 

.\type e:/babak/git/bin/test.txt 

但是,如果您無法控制程序如何調用TYPE,那麼我看不出如何使用上述任何技術。

我能想到的唯一的其他選項是預處理您的路徑信息以將正斜槓轉換爲反斜槓。然後,您需要確保您的程序獲取修改後的路徑信息。

1

cmd.exe只是駐留在System32(或其他)目錄中的程序。如果您使用新的cmd.exe替換它,那麼只要用戶運行cmd就會運行該命令。

在更換文件之前會有權限問題需要解決,但並非不可能。

+0

我不需要替換cmd。只是它是鍵入命令。 – babak

+0

也許你可以編寫一個批處理文件/程序,將字符串轉換爲正確的格式,然後用新字符串調用cmd本身。如果你把這個新程序放到一個被檢查的路徑中,然後它到達「真正的」cmd,那可能會起作用。 –

0

您可以使用doskey覆蓋command.com中的內部cmds,例如,在win7上

c:\> date 
    The current date is: Mon 09/18/2017 
    Enter the new date: (mm-dd-yy) 

c:\> @doskey date=c:\cygwin\bin\date.exe $* 
c:\> @doskey echo=c:\cygwin\bin\echo.exe $*  

c:\> date +%Y-%m-%d 
2017-09-18