【发布时间】:2023-03-22 15:19:01
【问题描述】:
我已经在我的新 Windows 10 PC 上安装了 ActiveState Perl。我已经在我自己的几台 PC 上安装了完全相同版本的 Perl,并且它安装在我公司的 100 台其他用户的 PC 上。完全相同的安装,由我创建。
这是第一次在 Windows 10 上尝试此操作。在资源管理器中双击 Perl 脚本 (*.pl) 的基本操作会导致控制台窗口打开并让 Perl 运行脚本。
另外,在 Windows 命令提示符中,我可以输入perl.exe script.pl,脚本运行良好。但是,当我输入script.pl 时,什么也没有发生。没有输出,没有错误,在任务管理器中看不到 perl.exe 进程。
我第一次运行 Perl 脚本时(我相信,来自 Windows 命令提示符,只使用 script.pl 语法),Windows 弹出一个窗口,询问我想用什么程序打开这个文件。 Perl 是默认设置,我点击了确定。
我从未在 Windows 7 或 8 中看到过该窗口,所以我认为它是 Windows 10 特有的,并且它以某种方式阻止我输入 script.pl。因为,在启动script.pl 时,我需要文件关联来选择正确的程序,但是当我输入perl.exe script.pl 时,perl.exe 会直接启动。但是,当从命令提示符运行时,Windows 10“选择你的默认程序”的事情会因为弄乱文件关联而受到阻碍。
虽然不能 100% 确定它为什么可以在 Explorer 中运行,但我很确定我需要清除该默认程序。我删除了HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts 下.pl 文件的注册表项,但这没有帮助。
这似乎是 Windows 10 的一个更普遍的问题,或者可能只是我安装的问题,或者我不知道的组策略。
以下命令(在管理员命令提示符下运行)在 Windows 8.1 中运行良好,但在 Windows 10 中运行良好:
assoc .foo=Foobar
ftype Foobar=C:\WINDOWS\system32\foo.bat %1
echo @echo off > foo.bat
echo echo The filename is %1 >> foo.bat
echo hi > foo.foo
foo.foo
结果应该是输出:
The filename is C:\WINDOWS\system32\foo.foo
但是 Windows 10 什么都不做。它似乎只允许以这种方式关联内置应用程序,而不是下载/安装的 EXE 的 BAT 脚本。
【问题讨论】:
-
如果我们使用
start script.pl会发生什么 -
使用
start script.pl工作正常。 -
我卸载了 Perl 5.20.2,并安装了最新的 (5.24.0),但没有任何变化。我还更改了注册表中的命令以打开 notepad.exe 而不是 perl.exe,并且可以在 DOS (
script.pl) 中正常工作。调用 perl.exe 的关联似乎有些混乱,尽管仅来自 DOS,而不是资源管理器。它有可能以某种方式调用 wperl.exe 吗?但是在注册表中找不到它... -
我认为这不是 Perl 特有的。我创建了一个新的扩展名 (.bar) 并将其与一个简单的 BAT 脚本相关联,该脚本回显“hi”然后暂停。在资源管理器中工作正常,但“script.bar”什么也不做。所以我不认为 Perl 会影响这一点,而是我不能创建与“记事本”以外的任何东西以及 C:\Windows 中的其他项目的关联。这是其他 Windows 10 或 GPO 限制吗?
标签: perl cmd windows-10 file-association