Mengapa Anda tidak dapat menggunakan karakter khusus dalam nama file, seperti "?" Atau ";"?

17

Ketika saya mencoba untuk menyimpan file, jika saya menggunakan karakter khusus dalam nama (seperti titik dua, tanda tanya, atau tanda seru) di Windows saya mendapatkan pesan yang mengatakan bahwa nama file tidak valid.

Mengapa demikian?

pengguna284989
sumber
Di program mana Anda mencoba untuk menyimpan file, dan apakah karakter yang menyinggung dalam file atau (seperti yang terlihat) dalam nama file?
Jukka K. Korpela

Jawaban:

22

Ada beberapa karakter yang memiliki arti khusus untuk Windows (dan ke DOS, di mana sebagian besar karakter berasal dari)

dari MSDN :

Nama file tidak boleh mengandung karakter berikut:
\ /: *? "<> |

/adalah saklar (dan juga pemisah direktori).
\adalah pemisah direktori.
:adalah penunjuk drive.
*dan ?wildcard digunakan dalam pencarian.
"adalah cara untuk memungkinkan spasi dalam parameter.
<dan >pengalihan yang memungkinkan input dan output dari suatu program berasal, dan pergi ke, sesuatu selain layar / keyboard.
|adalah pipa yang memungkinkan keluaran dari satu program untuk digunakan sebagai input ke program berikutnya.

SeanC
sumber
1
Untuk memperjelas jawaban ini, karakter khusus ini dapat mengganggu penguraian baris perintah (atau jalur) jika mereka menggunakan nama file. Tidak ada persyaratan untuk membatasi nama file dengan cara apa pun (misalnya mengelilinginya dengan tanda kutip atau spasi), sehingga menemukan karakter khusus seperti itu akan menyebabkan penguraian yang salah (yaitu apakah bagian karakter khusus dari nama file atau operator?).
serbuk kayu
1
Namun, dapat diperdebatkan bahwa beberapa pembatasan ini tidak lagi diperlukan karena penanganan nama file yang panjang dan tanda kutip. \ ? *dan "satu-satunya yang benar-benar diperlukan dalam sintaksis saat ini, karena karakter lain hanya berguna di luar tanda kutip. Pengecualiannya adalah: yang hanya berguna sebagai karakter kedua, yang dapat dilarang sementara mengizinkannya di tempat lain. Dengan kata lain, tidak ada file bernama A:A letter's story.txt, tetapi tidak ada masalah dengan file bernamaSarah: My favorite cat.txt
trlkly
<>"dicadangkan karakter wildcard. Windows menggunakannya untuk mengimplementasikan semantik kompleks untuk DOS *?.ketika menerjemahkan ke bahasa asli NT, yang memiliki semantik sederhana untuk *?.. Enam karakter wildcard dicadangkan karena Windows mengimplementasikan pencocokan wildcard dalam sistem file itu sendiri, yaitu langsung dalam NtQueryDirectoryFilepanggilan sistem, tanpa mekanisme melarikan diri. Di Unix, wildcard diimplementasikan pada level aplikasi, biasanya oleh shell yang mendukung pelariannya.
Eryk Sun
Catatan yang :biasanya disediakan dalam nama file, tetapi tidak di jalur file. Ini digunakan untuk nama perangkat dan sebagai pembatas untuk aliran file (misalnya "nama file: streamname: streamtype"). Juga, beberapa sistem file seperti sistem file folder bersama VirtualBox memungkinkan :,, |dan karakter kontrol ASCII (1-31) dalam nama file, tetapi mereka dicadangkan di semua sistem file Microsoft kecuali untuk sistem file pipa bernama.
Eryk Sun