Boru Windows 7'de cmd.exe'de çalışmıyor


6

Pipe komutunda bazı garip sorunları görmeye başladım. Bunun gibi komutlar:

 echo test | more  

sorunsuz çalışırlardı, ancak şimdi aşağıdaki hata iletisiyle başarısız oluyorlar:

'.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC' is not recognized as an internal or external command, operable program or batch file.  

Ayrıca, borunun sol ve sağ tarafında ne olduğu önemli değildir, içinde bir boru bulunan herhangi bir komut satırı komutu başarısız olur. Borunun sağ tarafının uygun bir şekilde çalıştırılabilir olmaması da bir fark yaratmaz.

Örneğin, her ikisi de aynı başarısız davranışı sergiler:

type file1 | findstr blah
dir | thisdoesnotexist

Bunların hepsi bir hafta önce iyi çalıştı ve neyin değişebileceğinden emin değilim. Muhtemelen çalışmayı durdurduğu sırada meydana gelen bir Windows güncellemesi vardı, fakat kesin olarak bilmiyorum.

Benim %PATH%ve %PATHEXT%ortam değişkenlerinin ikisi de iyi görünüyor. İçindekiler aşağıdakine benzer:

Path=C:\Program Files\Common Files\Microsoft Shared\Microsoft Online Services;
C:\Program Files (x86)\Common Files\Microsoft Shared\Microsoft Online Services;
C:\Windows\system32;
C:\Windows;
C:\Windows\System32\Wbem;
C:\Windows\System32\WindowsPowerShell\v1.0\;
C:\Program Files (x86)\Common Files\Roxio Shared\DLLShared\;
C:\Program Files (x86)\Common Files\Roxio Shared\10.0\DLLShared\;
C:\Programs\WinMerge;
C:\Programs\TortoiseHg\;
C:\Programs\MySQL\MySQL Server 5.1\bin;
C:\Programs\Aldec\Active-HDL 9.1\bin;
C:\Programs\Tcl\bin;
C:\Programs\modeltech_pe_10.0b\win32pe;
C:\Programs\Atlassian\atlassian-plugin-sdk-3.2.3\bin;
C:\Xilinx\12.4\ISE_DS\ISE\bin\nt64;
C:\altera\12.1\quartus\bin64

PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC  

Bu komutlardan herhangi birini boru olmadan kullanmak gayet iyi çalışıyor ve dosyaya / dosyadan yönlendirmek de gayet iyi çalışıyor. Olay kayıtlarının herhangi birinde görünen hiçbir şey olmadığından, programlar doğru şekilde çıkıyor gibi görünüyor.

Böyle bir sorunun nedeninin ne olabileceğini bilen var mı?

Yanıtlar:


9

ComSpec değişken tanımınız yanlış tanımlanmış gibi görünüyor. ComSpec değişkeni, tam mutlak yolu CMD.EXE'ye tutmalıdır. Borunun her iki tarafı, ComSpec'in tanımıyla başlatılan yeni bir CMD ipliği tarafından yürütülür. Borunuz ComSpec geçerli değilse, durumunuzda olduğu gibi başarısız olacaktır.

ComSpec geçerli bir yürütülebilir dosyayı göstermiyorsa, neden bu hata iletisinin göründüğünü anlamadım. Ancak, yanlış ComSpec ayarladıysam ve daha sonra da bir pipo kullanmaya çalışırsam Vista'da aynı mesajı aldığımı doğruladım.


2
PATHEXT için uygun bir değer gibi görünmek için tanımlanması bile gerekmez. Cmd.exe'ye giden yol doğru bir şekilde belirtilmediği sürece bu hata meydana gelir. İyi yakalama! +1
Karan,

1
@Karan -Oooh, ilginç. Yorumunuza kadar test etmeyi hiç düşünmedim, ancak Vista'da ComSpec tanımlanmışsa aynı hata iletisini alıyorum, ancak geçerli bir yürütülebilir dosyayı göstermiyorsa. ComSpec hiç tanımlanmadığında CMD oturumum kilitleniyor.
dbenham

Harika cevap, teşekkürler! Sorunu çözdüm. Yeterli sayıda temsilcim olsaydı sizi affederdim.
marcush

1
@Karan, keşfini yansıtacak şekilde cevabı değiştirdim. Teşekkürler.
dbenham

@ marcush: Sizin için bir oy daha, siz de yanıtı oylayabilirsiniz.
0xC0000022L
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.