我正在使用一个程序,该程序使用type
命令将文件内容传送到另一个程序,如下所示:
type test.txt | (another program)
此命令在我的主程序中是硬编码的。问题是type
命令在正斜杠方面存在问题:
E:\babak\git\bin>type e:/babak/git/bin/test.txt
The syntax of the command is incorrect.
是否可以使用名为type
的自定义应用程序覆盖cmd内部type
,该应用程序支持正斜杠,因此如果有人在cmd中调用type
,则自定义{{1应用程序被调用?
答案 0 :(得分: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 :(得分:1)
cmd.exe只是一个驻留在System32(或其他)目录中的程序。如果将其替换为新的cmd.exe,则只要用户运行cmd,就会运行该cmd.exe。
在替换文件之前会有许可问题需要解决,但并非不可能。
答案 2 :(得分:1)
您可以使用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