Estou usando o Windows 7 e preciso, por motivos alheios ao meu controle, criar um diretório terminando em um único espaço. Ele conterá vários arquivos e subdiretórios.
Eu tentei md
and rename
, também com caminhos UNC, mas falhou, fornecendo 'sintaxe incorreta' ou, mais frequentemente, simplesmente ignorando o espaço.
Como eu posso fazer isso?
Responder1
Para criar um diretório no Windows com um caractere de espaço à direita, abra um prompt de comando e digite o seguinte:
md "\\?\C:\mydirectory "
O diretório deve ser um diretório absoluto (não relativo) e deve ser prefixado com\\?\
Da mesma forma, você pode excluir o diretório com o comando rd
rd "\\?\C:\mydirectory "
mas o diretório deve estar vazio antes de excluí-lo com este comando.
Responder2
Cygwin pode
$ 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
ok, claramente funcionou, já que temos 3 diretórios distintos, mas vamos tentar obter algum tipo de prova adicional
$ 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)
Outro
ls oferece algumas opções de formatação como verical e outras, por exemplo, com vírgulas
--format=WORD
across -x, commas -m, horizontal -x, long -l, single-column -1,
verbose -l, vertical -C
--
$ ls -m
abcde, abcde , abcde
Observe o espaço antes da vírgula porque o espaço está no nome do arquivo. O ',' está formatando. Mas ',' mostra que o espaço está no nome do arquivo.
$ ls -m | xxd
0000000: 6162 6364 652c 2061 6263 6465 202c 2061 abcde, abcde , a
0000010: 6263 6465 2020 0a bcde .
--
uma demonstração muito clara sem a necessidade de olhar para nenhum hexadecimal para verificar, é-
$ mkdir 'abcde '
$ mkdir z
$ ls -m
abcde, abcde , abcde , abcde , z
$
Outra maneira, como Mafu menciona no comentário, é o Mingw, que possui um pacote Msys que você pode instalar no gerenciador ming mackage, e o msys instala muitos comandos, por C:\MinGW\msys\1.0\bin>
exemplo, mkdir.exe, e também possui um bash.exe.
Responder3
Observe que a criação de um arquivo não suportado pelo Windows pode criar uma situação em que você não conseguirá excluí-lo por meios normais.
Inicialize em uma instalação do Linux ou live CD e execute este comando
mkdir "<mountpoint>/dirname"
Você precisará das aspas.