Я могу проигнорировать точечные файлы с заполнением клавишей Tab cmd.exe?

Я, к сожалению, должен время от времени работать с cmd.exe, и это обычно не прослушивает меня слишком много кроме тех случаев, когда я редактирую файл в энергии и затем пытаюсь петлять с заполнением клавишей Tab.

Если у меня есть файл foo.py открытый в энергии, .foo.py.swp также существует в каталоге. Поведение, которое я вижу:

C:\foo> f[TAB]
C:\foo> .foo.py.swp[TAB]
C:\foo> foo.py

Это является довольно приводящим в бешенство, и я задаюсь вопросом, существует ли какой-либо способ предотвратить это поведение за исключением полного обходного решения как изменение моего файла подкачки называющий или использующий PowerShell. Я заметил, что PowerShell не эмулирует это поведение, но я действительно не хочу использовать его.

3
задан 22.09.2010, 18:59

2 ответа

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'.

3
ответ дан 08.12.2019, 00:34

Семантика FindFirstFile (что использование CMD перечислить соответствие файлам) означает, что шаблон тестируется против длинного имени файла (что требуется видеть), а также против автоматически сгенерированного "8.3" имя файла. Поколение краткого названия - то, что вызывает Ваши побочные соответствия.

Можно отключить 8,3 поколений через FSUTIL, но это останавливает ДАЛЬНЕЙШЕЕ поколение и уже не удаляет существующие имена. Необходимо было бы запустить скрипт, который сделает, переименовывает, чтобы полностью удалить их.

Это опасно, однако, так как некоторые программы невежественны и запишут, автоматически сгенерированный shortnames вниз (скажите использование 16-разрядного установщика, как старые версии MSOFFICE). Если Вы отключаете их поколение, то эти установщики могут перестать работать.

1
ответ дан 08.12.2019, 00:34

Теги

Похожие вопросы