nulpause"Test.exe" çalışmıyor, ben bu mesajı alıyorum:ERROR: The process "test.exe" not found.Neden bu hata mesajı çıktı NULL yeniden var olsa bile, görüntülenen, olur mu?" /> nulpause"Test.exe" çalışmıyor, ben bu mesajı alıyorum:ERROR: The process "test.exe" not found.Neden bu hata mesajı çıktı NULL yeniden var olsa bile, görüntülenen, olur mu?" />
SORU
11 AĞUSTOS 2009, Salı


Bastırmak komut satırı çıktı

Böyle basit bir toplu iş dosyası var:

echo off

taskkill /im "test.exe" /f > nul

pause

"Test.exe" çalışmıyor, ben bu mesajı alıyorum:

ERROR: The process "test.exe" not found.

Neden bu hata mesajı çıktı NULL yeniden var olsa bile, görüntülenen, olur mu?

Nasıl bu çıkışı bastırmak?

CEVAP
11 AĞUSTOS 2009, Salı


Çünkü hata mesajları genellikle stdout stderr git.

Bu invokation değiştirin:

taskkill /im "test.exe" /f >nul 2>&1

ve her şey daha iyi olacak.

O stdout 1 stderr kongre tarafından açıklayıcı 2 dosya dosya tanımlayıcı olduğu için çalışır. (0 stdin, Bu arada.) 2>&1 kopya çıktı sadece boş cihazına yönlendirildi 1, yeni değeri açıklayıcı 2 dosya.

Bu sözdizimi (gevşek) pek çok Unıx kabukları alınmış, ama kabuk sözdizimi ve CMD.EXE arasında küçük farklar vardır, çünkü dikkatli olmak zorunda.

Güncelleme:Biliyorum OP anlar özel doğa "dosya" adlı NUL yazıyorum buraya, ama bir yorumcu yoktu ve o yüzden hadi bana sapmak biraz daha ayrıntı o yönü.

Tüm yol MSDOS eski sürümleri geri dönüyor, belirli bir dosya adı dosya sistemi çekirdek tarafından askıya alınan ve cihazları ifade etmek için kullanılır. Bu isimlerin en erken listesi 10*, PRN, , * CONAUX COM4 COM1 dahil. NUL boş bir cihaz. Her zaman okuma veya yazma için açılan bir miktar üzerinde yazılı olabilir, ve her zaman başarılı ama hiçbir veri geri okur. Diğerleri paralel yazıcı bağlantı konsolu ve dört seri bağlantı noktaları vardır. MSDOS 5, olarak daha çekingen birkaç isim, ama temel sözleşme çok iyi kurulmuştur.

Windows oluşturulduğunda, oldukça ince bir uygulama MSDOS çekirdek üstüne katman anahtarlama olarak başladı, ve böylece aynı dosya adı kısıtlamaları vardı. Windows NT kendi içinde gerçek bir işletim sistemi olarak oluşturulduğunda, NUL COM1 gibi isimler yaygın olarak iş yaptıkları eleme izni kabul edildi. Ancak, yeni cihazlar her zaman gerçek dosyaların isimleri gelecek kullanıcı blok isimlerini fikrini açıkça mantıksız.

Windows NT tüm sürümleri takip (2K, XP, 7, 8) bütün uyun, çok daha özenli NT Namespace çekirdek kod ve dikkatli bir şekilde inşa edilmiş ve son derece taşınabilir olmayan kullanıcı alan kodu. Bu isim alanı içinde, aygıt sürücüleri \Device klasörü görünür. Gerekli geriye dönük uyumluluk desteklemek için özel bir mekanizma klasörü herhangi bir dosya sistemi içinde ayrılmış dosya adları listesini uygulayan \DosDevices klasörünü kullanarak. Kullanıcı kodu her zamanki win 32 API aşağıda bu iç adını alan bir API katmanı kullanarak kaşları; çekirdek ad keşfetmek için iyi bir araç, Microsoft Nano grubu WinObj.

Kuralları dosyalarının yasal adlarını çevreleyen (ve aygıtları) eksiksiz bir açıklaması için Windows, this page at MSDN hem bilgilendirici hem de zor olacak. Kuralları birçokolmalı, ve aslında imkansız bazı basit soruları cevaplamak için daha fazla karmaşık "ne kadar tam uzun yasal yol adı?" gibi.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Mega64

    Mega64

    24 ŞUBAT 2006
  • Michael Zhang

    Michael Zhan

    8 EYLÜL 2012
  • MrDevin521

    MrDevin521

    18 Temmuz 2010