我正在使用一个程序,它使用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