2016-08-11 61 views
6

我在新的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腳本。

+0

如果我們使用'啓動script.pl' –

+0

使用'發生什麼事開始script.pl'工作正常。 – jimtut

+0

我卸載了Perl 5.20.2,並安裝了最新的(5.24.0),但沒有更改。我也改變了註冊表中的命令來打開notepad.exe而不是perl.exe,並且它從DOS('script.pl')工作。看起來有些東西與調用perl.exe的關聯搞砸了,儘管只是從DOS而不是Explorer。它有可能以某種方式調用wperl.exe?在註冊表中找不到它... – jimtut

回答

0

確保您的PATHEXT環境變量包含.pl。

+0

是的,它的確如此: 'PATHEXT = .COM; .EXE; .BAT; .CMD; .VBS; .VBE; .JS; .JSE; .WSF; .WSH; .MSC; .PL' – jimtut

+1

PATHEXT is only需要允許你從文件名中刪除擴展名,並且仍然能夠執行它。只需在DOS中輸入文件名即可「運行」任何文件,甚至是JPG文件。 – jimtut

相關問題