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
Çü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
, , * CON
AUX
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.
Nasıl Node.js komut satırı geçmesi?...
Nasıl PostgreSQL komut satırı yardımcı...
Nasıl komisyon bir görev için komut sa...
Nasıl bir toplu iş dosyası komut satır...
Nasıl bash komut satırı argümanları ay...