我无法find任何方法,例如:
cmd.exe /C "script.txt"
换句话说,如果包含有效的批处理脚本代码,我需要命令提示符(尝试)执行带有任何扩展名(不一定是.bat
或.cmd
)的文件。 我正在寻找类似Unix shell的行为:
./script.txt
而在Unix上, shebang ( #!/bin/sh
)负责理解文件实际上是一个脚本,看起来像在Windows上.bat
或.cmd
扩展名扮演同样的angular色,表示命令提示符的批处理脚本文件。
是否有可能避免这种情况,并强制命令提示符解释一个任何名称的文件?
注意:请不要这样的答案:
给你的文件
.bat
或.cmd
扩展名。
这不是问题的关键。
你首先需要一个“安装”脚本:
@echo off rem :: A files with .TEST extension will be able to execute batch code but is not perfect as the %0 argument is lost rem :: "installing" a caller. if not exist "c:\caller.bat" ( echo @echo off echo copy "%%~nx1" "%%temp%%\%%~nx1.bat" /Y ^>nul echo "%%temp%%\%%~nx1.bat" %%* ) > c:\caller.bat rem :: associating file extension assoc .test=batps ftype batps=c:\caller "%%1" %*
然后尝试一个简单的.test
文件:
@echo off for /l (1;1;10) do ( echo testing .TEST extension )
实际上, ASSOC
和FTYPE
都可以立即生效,所以你可以在“安装”之后立即启动一个.test
文件。 直接编辑注册表,最终你可以得到更多的控制 – > 如何创建文件扩展名,行为如.cmd / .bat? 。 还检查下拉处理程序 – > http://msdn.microsoft.com/en-us/library/windows/desktop/cc144165%28v=vs.85%29.aspx
这取决于NON-Batch文件的复杂性。 如果NON-Batch文件不使用这些设施:
那么你可以执行任何文件作为“批处理文件”通过这个技巧:
cmd < anyFile.ext
在这篇文章的更多细节