我无法找到任何方法,例如,以下内容:
cmd.exe /C "script.txt"
换句话说,如果它包含有效的批处理脚本代码,我需要命令提示符(尝试)执行任何扩展名(不一定是.bat
或.cmd
)的文件。我正在寻找类似于Unix shell的行为:
./script.txt
在Unix上, shebang (#!/bin/sh
)负责了解该文件实际上是一个脚本,它似乎在Windows .bat
或.cmd
上扩展名扮演相同的角色,表示命令提示符的批处理脚本文件。
是否可以避免这种情况并强制命令提示符解释具有任何名称的文件?
注意:请不要回答:
提供您的文件
.bat
或.cmd
分机。
这不是问题所在。
答案 0 :(得分:5)
这取决于NON-Batch文件的复杂性。如果NON-Batch文件不使用这些功能:
然后您可以将任何文件作为"批处理文件"执行。通过这个技巧:
cmd < anyFile.ext
的详细信息
答案 1 :(得分:3)
你首先需要一个&#34;安装&#34;脚本:
@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
都会立即生效,因此您可以在安装&#34;之后立即启动.test
文件。通过直接编辑注册表,您可以获得更多控制权 - &gt; How to create file extension that behaves as .cmd/.bat?。还检查丢弃处理程序 - &gt; http://msdn.microsoft.com/en-us/library/windows/desktop/cc144165%28v=vs.85%29.aspx