我在新的Windows 10 PC上安裝了ActiveState Perl。我已經在我自己的幾臺PC上安裝了相同的Perl版本,並且安裝在我公司其他用戶的100臺PC上。完全相同的安裝,由我創建。Windows 10上的Perl腳本從資源管理器運行,但沒有命令提示符
這是第一次在Windows 10上嘗試此操作。在資源管理器中雙擊Perl腳本(* .pl)的基本操作會導致打開控制檯窗口並運行Perl以運行該腳本。
此外,在Windows命令提示符下,我可以輸入perl.exe script.pl
,腳本運行良好。但是,當我輸入script.pl
時,沒有任何反應。沒有輸出,沒有錯誤,沒有在任務管理器中可見的perl.exe進程。
我第一次運行一個Perl腳本(從Windows命令提示符,我相信只使用script.pl
語法),Windows彈出一個窗口詢問我想用什麼程序打開這個文件。 Perl是默認的,我點擊OK。
我從來沒有在Windows 7或8中看到過這個窗口,所以我認爲它是Windows 10特有的東西,而且它是某種程度上阻止我只輸入script.pl
的東西。因爲啓動script.pl
時,我要求文件關聯選擇正確的程序,但是當我鍵入perl.exe script.pl
時,perl.exe將直接啓動。但是,當Windows 10「挑選你的默認程序」時,會通過搞亂文件關聯從命令提示符運行。
不是100%確定爲什麼它從資源管理器,但我敢肯定,我需要清除該默認程序的事情。我刪除了.pl
文件的註冊表項HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts
,但這沒有幫助。
這似乎是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腳本。
如果我們使用'啓動script.pl' –
使用'發生什麼事開始script.pl'工作正常。 – jimtut
我卸載了Perl 5.20.2,並安裝了最新的(5.24.0),但沒有更改。我也改變了註冊表中的命令來打開notepad.exe而不是perl.exe,並且它從DOS('script.pl')工作。看起來有些東西與調用perl.exe的關聯搞砸了,儘管只是從DOS而不是Explorer。它有可能以某種方式調用wperl.exe?在註冊表中找不到它... – jimtut