Como criar um nome de pasta ou arquivo com caracteres especiais como \ /: *? "<> | [duplicado]

9

Meu problema é que, não posso fornecer o nome da minha pasta ou arquivo com caracteres especiais como \ /: *? "<> | no sistema operacional baseado em Windows Isso é muito importante para mim, o nome do arquivo / pasta que contém esse tipo de caracteres.

Eu já pesquiso e refiro tantos sites, para esses problemas, mas todos são inúteis. Eu também li a página de suporte da Microsoft, eles sugerem o uso de outros caracteres. Este é o link, https://support.microsoft.com/en-us/kb/177506

Eu já experimentei o botão Alt + número do código ASCII deste tipo de caracteres especiais, da tecla numpad, apenas renomeie o arquivo / pasta, e pressione Alt + 60 (para <caracteres). Ainda assim, é exibido o seguinte: personagens: \ / : * ? "<> |

Sugira-me uma solução adequada para que eu possa dar o nome do meu arquivo / pasta com este tipo de caracteres especiais.

Kirit_Vanani
fonte
Apenas curioso: para que você precisa?
Kamil Maciorowski
@ kamil Este é o nome do meu arquivo / pasta e uma tarefa desafiadora para mim.
Kirit_Vanani
@ PIMP_JUICE_IT Eu já fiz isso, (literalString -LiteralPath mas ainda não obter sucesso.
Kirit_Vanani
mesmo se você pudesse criar arquivos com esses caracteres, nenhum programa seria capaz de abri-los ou salvá-los.
Keltari
10
- Como posso lamber meu cotovelo? Você não pode. - Mas eu tenho que. - Você pode quebrar seu braço e tentar, mas seu braço será inútil. - Eu não ligo, só preciso lamber meu cotovelo.
Kamil Maciorowski

Respostas:

16

Isso é muito importante para mim, nomear arquivos / pastas que contêm esses caracteres.

Pode ser importante para você, mas você precisará deixar isso para lá e encontrar uma maneira diferente de resolver seu problema.

Esses caracteres não são permitidos pelas chamadas de função do sistema operacional Windows que lidam com nomes de arquivos.

Eles não são especificamente permitidos porque têm outro uso:

  • \- Reservado para uso como separador de caminho e caractere de escape
  • / - Reservado para uso como separador de caminho
  • : - Reservado para uso como um delimitador de nome de unidade
  • *e ?- Reservado para uso como caracteres curinga
  • "- Reservado para uso para citar nomes contendo espaços
  • <, >e |- Reservado para uso como operadores de redirecionamento de comando

Obviamente, você pode criar arquivos com nomes contendo esses caracteres usando um sistema operacional diferente (desde que esse sistema operacional possa ler / gravar um sistema de arquivos do Windows).

No entanto, você não poderá fazer nada com esses arquivos usando nenhum programa do Windows e eles não entenderão os nomes dos arquivos e irão gerar erros.


Nomeando arquivos, caminhos e espaços para nome

Convenções de nomenclatura

As regras fundamentais a seguir permitem que os aplicativos criem e processem nomes válidos para arquivos e diretórios, independentemente do sistema de arquivos:

...

Use qualquer caractere na página de códigos atual para obter um nome, incluindo caracteres Unicode e caracteres no conjunto de caracteres estendidos (128–255), exceto o seguinte:

  • Os seguintes caracteres reservados:

    < (less than)
    > (greater than)
    : (colon)
    " (double quote)
    / (forward slash)
    \ (backslash)
    | (vertical bar or pipe)
    ? (question mark)
    * (asterisk)
    
  • Valor inteiro zero, às vezes chamado de caractere ASCII NUL.
  • Caracteres cujas representações inteiras estão no intervalo de 1 a 31, exceto para fluxos de dados alternativos nos quais esses caracteres são permitidos. Para obter mais informações sobre fluxos de arquivos, consulte Fluxos de Arquivos.
  • Qualquer outro caractere que o sistema de arquivos de destino não permita.

Arquivos de nomeação de origem , caminhos e espaços para nome


Mas eu realmente quero fazer isso de qualquer maneira.

Instale o cygwin e use touch.

Não testei todas as possibilidades, mas o seguinte trabalho:

touch :
touch \|
touch \"
touch \>

Exemplo de saída:

DavidPostill@Hal /f/test/impossible
$ ll
total 0
-rw-rw-rw-+ 1 DavidPostill None 0 Aug 10 21:03 '"'
-rw-rw-rw-+ 1 DavidPostill None 0 Aug 10 21:02 :
-rw-rw-rw-+ 1 DavidPostill None 0 Aug 10 21:02 '|'
-rw-rw-rw-+ 1 DavidPostill None 0 Aug 10 21:07 '>'

Como você pode ver, eles não são utilizáveis ​​no Windows:

F:\test\impossible>dir
 Volume in drive F is Expansion
 Volume Serial Number is 3656-BB63

 Directory of F:\test\impossible

10/08/2016  21:07    <DIR>          .
10/08/2016  21:07    <DIR>          ..
10/08/2016  21:03                 0 
10/08/2016  21:02                 0 
10/08/2016  21:07                 0 
10/08/2016  21:02                 0 
               4 File(s)              0 bytes
               2 Dir(s)  1,772,601,536,512 bytes free

insira a descrição da imagem aqui

DavidPostill
fonte
Agradeço sua resposta, é um pouco útil, mas meu problema permanece o mesmo .. Acho que qualquer outra maneira de superusuário renomear com esse caractere especial.
Kart_Vanani
2
@Kirit Você pode criar arquivos com esses caracteres, mas o Windows não pode fazer nada com eles e você receberá erros ao tentar usar esses arquivos no Windows.
DavidPostill
@ DavidPostill Ohh, Como criar um nome de arquivo com esses caracteres. Eu não me importo se ele dar erro, mas agora tarefa é dar a estes tipo de nome do personagem .. Para acessar esse arquivo vou usar outro sistema operacional baseado em Linux
Kirit_Vanani
11
@Kirit Eu já lhe disse na resposta "É claro que você pode criar arquivos com nomes contendo esses caracteres usando um sistema operacional diferente (desde que esse sistema operacional possa ler / gravar um sistema de arquivos do Windows)."
DavidPostill
3
@ Kirit Eu já te disse que não é possível .
DavidPostill
3

Crie seu próprio conjunto de fontes. Substitua alguns dos caracteres que você não usa pelas imagens dos caracteres reservados.

Clayton
fonte
11
Isso ou usando caracteres parecidos. Com o Unicode, tudo é possível. 🎃
Daniel B
@ Craig620 Pode ser que não seja possível, para mim. pode me dar uma dica para isso.
Kirit_Vanani
Não tenho certeza, apenas uma ideia maluca que me veio à mente. Talvez haja um fórum do Stack Exchange para tipografia ou publicação, você poderia perguntar?
Clayton
2

No Windows, você não pode criar arquivos com esses caracteres. Não há solução, esses caracteres são proibidos pela API do Win32.

O Win32 é um subconjunto do espaço para nome POSIX e não diferencia maiúsculas de minúsculas. Ele usa todos os caracteres Unicode, exceto: '"' '*' '/' ':' '<' '>' '?' '\' '|' NB Os nomes não podem terminar com Dot '.' Ou Space ''.

- http://dubeyko.com/development/FileSystems/NTFS/ntfsdoc.pdf

ChrisInEdmonton
fonte
NTFS não é o problema. (De fato, ele permite esses caracteres perfeitamente - era necessário , para suporte ao Interix.) O problema é o próprio Windows, ou seja, as restrições são impostas pelas APIs do Win32, independentemente do FS subjacente.
User1686
@rawrawity, você parece estar correto com base em minhas investigações adicionais. Eu editei minha resposta para refletir isso.
ChrisInEdmonton
Eu acho que NTFS não é problema. Deve ter alguma solução. Quando acesso a unidade NTFS a partir do SO baseado em Linux, posso digitar esses tipos de caracteres.
Kirit_Vanani
"Os nomes não podem terminar com ponto". Incorreta. Você pode arquivar nomes que terminem em .. Você simplesmente não pode fazer muito com eles cmd:)
DavidPostill
11
@Kirit Você já foi informado muitas vezes que isso não é possível .
DavidPostill