4

我正在使用一个程序,它使用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,它支持正斜杠,所以如果有人type在 cmd 中调用,则调用自定义type应用程序?

4

3 回答 3

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,那么我看不出您可以如何使用上述任何技术。

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

于 2012-11-10T21:23:04.143 回答
3

您可以使用 doskey 覆盖 command.com 中的内部 cmd,例如在 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
于 2017-09-18T14:56:09.807 回答
1

cmd.exe 只是一个驻留在 System32(或其他)目录中的程序。如果你用新的 cmd.exe 替换它,那么只要用户运行 cmd,就会运行那个。

在替换文件之前会有权限问题需要解决,但并非不可能。

于 2012-11-10T11:27:47.840 回答