使用assoc-command在Windows批处理中重新定向stdout和stderr

时间:2015-12-16 12:54:01

标签: windows batch-file stdout stderr

由于assoc无法正确管理%ERRORLEVEL%,我使用以下方法作为解决方法:

assoc .myext=myext >NUL 2>NUL
ftype myext="%~dp0mybatch.bat" "%%1" >NUL 2>NUL
assoc .myext | find "myext" >NUL 2>NUL
if %errorlevel% NEQ 0 (
    echo Association failed
    goto err
)
ftype otrkey | find "otrmenu" > NUL
if %errorlevel% NEQ 0 (
    echo Association failed
    goto err
)
exit /b 0
:err
exit /b 1

我想保持输出清洁,因为用户不需要来自assoc和ftype命令的实际输出,这就是为什么stdout和stderr被重定向到NUL。脚本运行正常,但关联并没有真正起作用。如果我尝试打开.myext文件,我会得到一个未知文件扩展的对话窗口。

如果我从批处理中删除输出重定向,则关联起作用。如何解决这个问题?

更新:准确地说,我可以将所有重定向放在哪里,但需要从第一行<{1}}中删除两个重定向 - 来制作它有效。

0 个答案:

没有答案