Os arquivos em lote não podem passar um caminho com espaços quando ele é elevado

2

Estou tentando criar um arquivo de lote que precisa ser passado por um caminho e tem operações nele que exigem elevação (eu uso mklink nele).

Veja como recriar o problema.

  1. Crie um arquivo .bat que contenha apenas pause
  2. Crie um atalho para esse arquivo em lotes.
  3. Crie 2 pastas, C:\ThisWillWork e C:\This Will Fail
  4. Tente arrastar cada pasta para o atalho. Ambos devem funcionar.
  5. Altere as configurações de atalho e verifique nas opções de opções avançadas que ele exige privilégios de administrador.
  6. Tente arrastar cada pasta novamente, C:\ThisWillWork se comportará da mesma forma, mas C:\This Will Fail piscará no prompt de comando e fechará imediatamente.

Isso está sendo feito no Windows 7 de 64 bits.

O que posso fazer para atingir meu objetivo? Existe uma maneira de permitir que eu use mklink sem elevação? Preciso mudar de usar arquivos em lotes do Windows para outra coisa (PowerShell talvez)? O que mais eu posso usar para poder escrever um script para deletar uma pasta e então recriá-la com um link simbólico de diretório para a pasta que eu coloquei nela?

    
por Scott Chamberlain 11.11.2011 / 20:02

1 resposta

3

Tente criar um atalho como

%Windir%\System32\cmd.exe /C C:\BIN\batchfile.bat 

Se isso não resolver por conta própria, tente o seguinte.

To resolve this problem, change the Start in value in the Command Prompt Properties dialog box or in the Notepad Properties dialog box.

To do so, follow these steps:
Click Start, point to All Programs, and then point to Accessories.
Right-click Command Prompt or Notepad, and then click Properties.
In the Start in box, change the value from %HOMEDRIVE%%HOMEPATH% to a system-wide value such as %WINDIR%.
Click OK.

Consulte o link para obter detalhes completos.

Se você quiser ver mais do que está acontecendo com o seu método original, você pode abrir um prompt de comando como admin e digitar

%windir%\System32\cmd.exe /C "C:\bin\batchfile.bat" "C:\THIS WILL FAIL" 

Isso causará um erro sem carregar o arquivo batch, uma vez que ele falha em alguma análise de linha de comando.

    
por 11.11.2011 / 20:55