覆盖Windows cmd内部命令

我正在使用一个程序,它使用type命令pipe道文件的内容到另一个程序是这样的:

 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应用程序被称为?

如果将参数括在引号中,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,那么我就不会看到如何使用上述任何技术。

我能想到的唯一的其他选择是预处理您的路径信息,将正斜杠转换为反斜杠。 然后,您需要确保您的程序获取修改后的路径信息。

cmd.exe只是驻留在System32(或其他)目录中的程序。 如果使用新的cmd.exe替换它,则只要用户运行cmd,就会运行该命令。

替换文件之前会有权限问题要解决,但不是不可能的。

您可以使用doskey来覆盖command.com中的内部命令,例如在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