Я использую Windows 7 и мне нужно, по не зависящим от меня причинам, создать каталог, заканчивающийся на один пробел. Он будет содержать различные файлы и подкаталоги.
Я пробовал md
и rename
, также с путями UNC, но это не удалось, либо выдавая «неправильный синтаксис», либо, что чаще, просто игнорируя пробел.
Как мне это сделать?
решение1
Чтобы создать каталог в Windows с конечным символом пробела, откройте командную строку и введите следующее:
md "\\?\C:\mydirectory "
Каталог должен быть абсолютным (не относительным) и иметь префикс\\?\
Аналогично вы можете удалить каталог с помощью команды rd
rd "\\?\C:\mydirectory "
но перед удалением с помощью этой команды каталог должен быть пустым.
решение2
cygwin может
$ mkdir 'abcde'
$ mkdir 'abcde '
$ mkdir 'abcde '
$ ls -l
total 0
drwxr-xr-x+ 1 user None 0 May 15 17:11 abcde
drwxr-xr-x+ 1 user None 0 May 15 17:11 abcde
drwxr-xr-x+ 1 user None 0 May 15 17:11 abcde
хорошо, это явно сработало, поскольку у нас есть 3 отдельных каталога, но давайте попробуем получить какие-то дополнительные доказательства
$ echo * | xxd
0000000: 6162 6364 6520 6162 6364 6520 2061 6263 abcde abcde abc
0000010: 6465 2020 0a de .
6162 6364 65 20<---- that's the dir abcde, and echo * put a space in after as there is another item it lists.
6162 6364 6520 20 <-- that's the dir 'abcde ', and echo * displayed it with a space in as there is another item it lists
61 62636465 2020 0a <-- that's the dir 'abcde ', and echo * displayed it followed by new line(0a)
Другой
ls предлагает некоторые параметры форматирования, такие как вертикальный и другие, например, с запятыми
--format=WORD
across -x, commas -m, horizontal -x, long -l, single-column -1,
verbose -l, vertical -C
--
$ ls -m
abcde, abcde , abcde
Обратите внимание на пробел перед запятой, потому что пробел есть в имени файла. ', ' — это форматирование. Но ' ,' показывает, что пробел есть в имени файла.
$ ls -m | xxd
0000000: 6162 6364 652c 2061 6263 6465 202c 2061 abcde, abcde , a
0000010: 6263 6465 2020 0a bcde .
--
очень наглядная демонстрация без необходимости смотреть на какой-либо гексагон для проверки, это-
$ mkdir 'abcde '
$ mkdir z
$ ls -m
abcde, abcde , abcde , abcde , z
$
Другой способ, как упоминает Mafu в комментарии, — это Mingw, в котором есть пакет Msys, который можно установить в менеджере Ming Mackage, а Msys устанавливает много команд, C:\MinGW\msys\1.0\bin>
например, mkdir.exe, а также имеет bash.exe.
решение3
Обратите внимание, что создание файла, не поддерживаемого Windows, может привести к ситуации, когда вы не сможете удалить его обычными способами.
Загрузите установочный файл Linux или Live CD, затем выполните эту команду
mkdir "<mountpoint>/dirname"
Вам понадобятся кавычки.