comportamento estranho cmd.exe. Não reconhecendo mais a área de trabalho

0

Eu estava tentando adicionar um comando tracert a um arquivo .bat.

No cmd.exe eu estava escrevendo:

tracert 111.111.111.111 > desktop\tracert.txt

e correu tudo bem. Eu criei um arquivo bat como este:

::@echo off
Cd C:\
cls
echo %DATE%
echo %TIME%
set datetimef=%date:~-4%_%date:~3,2%_%date:~0,2%__%time:~0,2%_%time:~3,2%_%time:~6,2%
echo %datetimef%
::2013_04_20__13_01_47
::tracert 111.111.111.111 > desktop\Tracert_IP1_%datetimef%.txt
tracert 111.111.111.111 > desktop\tracert.txt

A idéia é adicionar os dados ao nome do arquivo, eu também gostaria de escrevê-lo dentro do tracert.txt, mas eu não sei como.

Resultado do código:

C:\>echo 20/04/2013
20/04/2013

C:\>echo 14:18:12,44
14:18:12,44

C:\>set datetimef=2013_04_20__14_18_12

C:\>echo 2013_04_20__14_18_12
2013_04_20__14_18_12

**C:\>tracert 111.111.111.111  1>desktop\tracert.txt**
**The system cannot find the path specified**

Por que ele está adicionando "1" antes do ">" e removendo o espaço entre ">" e "desktop"?

De qualquer forma, eu tentei executar o tracertcomando novamente diretamente no cmd, mas agora ele está me dando a mesma mensagem de erro que o arquivo bat: The system cannot find the path specified

Edit 1: Bem, o problema com o caminho não encontrar é porque eu mudei o caminho cmd usando o comando "cd", que a pasta desktop não foi encontrada! Eu estou envergonhado! Desculpe pessoal .. Obrigado pelos replays sobre os "1" e desaparecendo com espaços.

Pedro77
fonte
1
Para remover toda a ambigüidade, por que não especificar o caminho completo, com aspas, se necessário?
Karan
Eu provavelmente usaria% USERPROFILE% \ Desktop
unknownprotocol
Você está certo! Problema mudo .. desculpe
Pedro77

Respostas:

1

O lugar que você conhece desktopé uma subpasta do seu perfil de usuário com o mesmo nome. Se o seu arquivo de lote estiver armazenado em sua área de trabalho, basta remover a desktop\parte da saída. Quando você executa cmdseu diretório base, é o seu diretório de perfil de usuário root que tem sua pasta desktop abaixo disso. Se você criar um arquivo em lotes e executá-lo, o diretório base em que ele cmdtrabalha será esse diretório e não seu perfil de usuário.

Se você deseja que seu arquivo em lote sempre seja enviado para a sua área de trabalho, independentemente de onde ele esteja armazenado, o cmdambiente tem uma variável USERPROFILEque aponta para o diretório do perfil ( C:\Users\yourUserName) e pode ser combinada com \desktopa saída de arquivos na sua área de trabalho.

Onde você tem

tracert 111.111.111.111 > desktop\tracert.txt

Substitua-o por

tracert 111.111.111.111 > %USERPROFILE%\desktop\tracert.txt
Mokubai
fonte
Sim, é o que eu diria. Como alternativa, também é possível criar uma variável de ambiente para a pasta da área de trabalho desse usuário ... para que possa ser acessada por ex:%DESKTOP%
unknownprotocol
3

"Desktop" neste caso é o caminho relativo. Você deve mudar para a pasta direita (comando "cd") ou colocar todo o caminho para o arquivo de saída no arquivo .bat.

piadas
fonte
Se o caminho contiver espaços, você deverá especificar o caminho inteiro circundado por "".
pbies
1

1> é STDOUT, em oposição a STDERR, que é 2>

Eu acho que o espaço é apenas um problema sintático, cmd.exe não gosta do espaço em branco, então ele muda.

Veja a página de redirecionamento de comandos da Microsoft para mais informações.

Quanto ao erro não encontrado, verificar as permissões nesse diretório seria minha primeira sugestão.

PS: Não é mais um usuário vencedor, mas é 'desktop' uma maneira válida de acessar a área de trabalho, ou é um nome de diretório?

mcalex
fonte
Eu percebi que eu era muito burro! Lol ... Quando você inicia o cmd, ele inicia por padrão na pasta Users \ UserName! Eu mudei o caminho cmd usind "cd" .. LOL! desculpa!
Pedro77