Por exemplo, qual é a alternativa para este comando sem aspas:
CD "c:\Documents and Settings"
O motivo completo pelo qual não quero usar aspas é que esse comando funciona:
SVN add mypathname\*.*
mas este comando NÃO funciona:
SVN add "mypathname\*.*"
O problema é que, quando troco meu nome do caminho por um caminho com espaços, preciso citar a coisa toda. Por exemplo:
SVN add "c:\Documents and Settings\username\svn\*.*"
Mas quando eu tento isso, recebo a seguinte mensagem de erro:
svn: warning: 'c:\Documents and Settings\username\svn\*.*' not found
Respostas:
Quase tudo funciona para mim, mas você já tentou a linha5 .. escapando do espaço com um símbolo de sinal de intercalação (^)
Ou, por exemplo, abaixo, onde o cursor realmente faz toda a diferença.
Parece de baixo como o símbolo de sinal de intercalação pode ser sua resposta, consulte a linha 3 abaixo.
fonte
Descobri que colocar aspas em apenas uma parte do local funciona. No seu caso:
Embora isso use aspas, o importante a ser observado é que os asteriscos estão fora das aspas, portanto ainda funcionam corretamente.
fonte
Apesar das respostas que dão a ilusão de que funciona, o fato é que você não pode se infiltrar nos espaços nos argumentos usuais do cmd. É fácil provar:
Salvar "
echo %1
" comotest.bat
. Este arquivo em lotes produzirá o primeiro argumento que o cmd nos passa.Agora, tente executar
test.bat
, definindo o valor de%1
parafoo bar
. (Observe que há um caractere de espaço entrefoo
ebar
.)Tente e tente por alguns anos e perceba que não há como fazê-lo . As pessoas sugerem que você evite usar
^
, mastest.bat foo^ bar
não produziráfoo bar
.Portanto, não há como obter a saída
foo bar
, e o mais próximo que podemos chegar é executando otest.bat foo" "bar
que produzfoo" "bar
ou executando otest.bat "foo bar"
que produz"foo bar"
.Agora, a razão as outras respostas aparecem para trabalhar é porque
cd
faz a sua própria análise adicional, divergindo do comportamento de argumento usual de passagem (o habitual%1
,%2
,%3
e etc em arquivos em lote típicos).Por exemplo, considere o comando peculiar:
Por que isso funciona? Isso se deve ao fato de
cd
ele fazer algo equivalente a unir os 7 argumentos usuais em um argumento lógico. De acordo com o cmd que passa normas, vemos 7 argumentos:c:\documents
and
settings
\some
folder
with
spaces
É como se
cd
juntasse todos os 7 argumentos em um argumento lógico, fazendo algo parecido com oarray.join(" ")
que produz o caminho:Observe que esse comportamento é peculiar
cd
apenas (e algumas outras funções). Não tem nada a ver com a passagem usual de argumentos.De fato,
cd
tem outra peculiaridade. Lembre-se de que afirmamos acima que não conseguimos obter a saídafoo bar
? A saída mais próxima que podemos obter é executando:que produz
foo" "bar
, ou:que produz
"foo bar"
, ou:que produz
"foo "bar
, ou:que produz
foo" bar"
, ou:que produz
"foo b"ar
, ou:que produz
fo"o bar"
, ou:que produz
fo"o ba"r
, ou:que produz
"fo"o" bar"
, ou:que produz
"f""o""o"" ""b""a""r"
, ou até:que produz
""""f"""o""""o"" ""ba"""r""""""""""
.Todos os exemplos acima têm uma semelhança: eles produzirão
foo bar
depois que apararmos os"
caracteres.cd
O autor de deve ter percebido isso também ... se deduzíssemos docd
comportamento peculiar de que apara tudo o"
que recebe , permitindo que todos esses comandos funcionem:cd c:\documents and settings
cd "c:\documents and settings"
cd "c:"\"documents and settings"
cd c:\"documents" "and" "settings"
cd c:\"docu"ments an"d set"tings"
cd c:"\"docu"ments an"d set"ti"""ngs
cd "c"":""\"docu"ments an"d set"ti"""ngs
cd "c"":""\"do""cu"me"nts a"n""d set"ti"""ngs
cd c"""":""""\"""d"""oc""""u"me"""""nt"s a"n""d set"""""""ti""""ngs
fonte
argv[]
ouGetCommandLine()
? pastebin.com/raw/t55iv0JSO nome do arquivo curto parece funcionar como uma brisa.
"E: \ Progra ~ 1 \ Java \ Eclipse \ eclipse.exe" -vmargs -Xms1024m -Xmx2048m
Por aumentar a memória ..;)
fonte
Use o nome curto de arquivo 8.3. Por exemplo:
fonte
Para aqueles que falam sobre a substituição 8.3, observe as duas coisas a seguir:
Então,
c:\docume~1
pode apontar para:Não é seguro, a menos que você obtenha o nome abreviado e o use em operações atômicas.
Embora seja muito incomum que eles mudem, é comum que eles não existam.
Se você deseja saber se o 8.3 existe para uma pasta / arquivo específico, teste-o com o parâmetro
/X
em umdir
comando ou encapsule-ofor
para obter apenas essa parte, etc.Para obter mais informações sobre como habilitar / desabilitar a 8.3 no NTFS, consulte este artigo de suporte da Microsoft:
https://support.microsoft.com/en-us/help/121007/how-to-disable-8-3-file-name- criação em partições NTFS
fonte
Seguindo a postagem de @ Pang e outros discutindo nomes curtos e as armadilhas, aqui está uma maneira de resolver dinamicamente um nome longo para um nome curto:
Então, obviamente, você pode usar o nome abreviado em vez das aspas circundantes.
fonte