Я, к сожалению, должен время от времени работать с cmd.exe, и это обычно не прослушивает меня слишком много кроме тех случаев, когда я редактирую файл в энергии и затем пытаюсь петлять с заполнением клавишей Tab.
Если у меня есть файл foo.py
открытый в энергии, .foo.py.swp
также существует в каталоге. Поведение, которое я вижу:
C:\foo> f[TAB]
C:\foo> .foo.py.swp[TAB]
C:\foo> foo.py
Это является довольно приводящим в бешенство, и я задаюсь вопросом, существует ли какой-либо способ предотвратить это поведение за исключением полного обходного решения как изменение моего файла подкачки называющий или использующий PowerShell. Я заметил, что PowerShell не эмулирует это поведение, но я действительно не хочу использовать его.
Windows ведет себя точно, как Вы ожидали бы, продумываете ли Вы его (и честно говоря, до наблюдения Вашего вопроса, я не думал это полностью через). Имя файла, которое начинается с a'.', рассматривается как файл с пустым именем файла с расширением. Чтобы видеть, как это работает, создайте каталог и затем создайте следующее использование файлов touch
(Я предполагаю, что Вы знакомы с touch
):
touch .a.aaa
touch a.aaa
touch .b.bbb
touch b.bbb
Теперь, в том каталоге, используйте клавишу Tab для cyle через файлы, и Вы будете видеть, что последовательность:
.a.aaa
.b.bbb
a.aaa
b.bbb
Если Вы хотите пройти файлы, то введите перед вкладкой, и Вы получите предсказуемое .a.aaa
, a.aaa
.
Что касается _ символ в имени файла, это точно так же, как любой другой символ и виды после 'Z'.
Семантика FindFirstFile (что использование CMD перечислить соответствие файлам) означает, что шаблон тестируется против длинного имени файла (что требуется видеть), а также против автоматически сгенерированного "8.3" имя файла. Поколение краткого названия - то, что вызывает Ваши побочные соответствия.
Можно отключить 8,3 поколений через FSUTIL, но это останавливает ДАЛЬНЕЙШЕЕ поколение и уже не удаляет существующие имена. Необходимо было бы запустить скрипт, который сделает, переименовывает, чтобы полностью удалить их.
Это опасно, однако, так как некоторые программы невежественны и запишут, автоматически сгенерированный shortnames вниз (скажите использование 16-разрядного установщика, как старые версии MSOFFICE). Если Вы отключаете их поколение, то эти установщики могут перестать работать.