cmd.exe comportamiento extraño. Ya no reconozco el escritorio

0

Estaba intentando agregar un comando tracert a un archivo .bat.

En el cmd.exe estaba escribiendo:

tracert 111.111.111.111 > desktop\tracert.txt

y funcionó bien. He creado un archivo 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

La idea es agregar los datos al nombre de archivo, también me gustaría escribirlos dentro de tracert.txt, pero no sé cómo.

Resultado del 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 qué agrega "1" antes de "& gt;" y eliminando el espacio entre "& gt;" y "escritorio"?

De todos modos, traté de correr el tracert Comando de nuevo directamente en el cmd, pero ahora me está dando el mismo mensaje de error que el archivo bat: The system cannot find the path specified

Edición 1: Bueno, el problema con la ruta que no se encuentra es porque cambié la ruta cmd usando el comando "cd", que simplemente no se encontró la carpeta del escritorio. ¡Me da vergüenza! Lo siento chicos.. Gracias por las repeticiones sobre los "1" y la desaparición de los espacios.

Pedro77
fuente
1
Para eliminar toda la ambigüedad, ¿por qué no especificar la ruta completa, con comillas si es necesario?
Karan
Probablemente use% USERPROFILE% \ Desktop
unknownprotocol
¡Tienes razón! Problema tonto .. lo siento
Pedro77

Respuestas:

1

El lugar que conoces como desktop es una subcarpeta de su perfil de usuario que tiene el mismo nombre. Si su archivo por lotes está almacenado en su escritorio, simplemente elimine el desktop\ parte de la salida. Cuando corres cmd su directorio base es su directorio de perfil de usuario raíz que tiene su carpeta de escritorio debajo de eso. Si crea un archivo por lotes y lo ejecuta, el directorio base que cmd trabaja en es ese Directorio y no su perfil de usuario.

Si desea que su archivo por lotes salga siempre a su escritorio, independientemente de dónde esté almacenado, entonces cmd el medio ambiente tiene una variable USERPROFILE que apunta a su directorio de perfil ( C:\Users\yourUserName ) y se puede combinar con \desktop para enviar archivos a su escritorio.

Donde tienes

tracert 111.111.111.111 > desktop\tracert.txt

Reemplazarlo con

tracert 111.111.111.111 > %USERPROFILE%\desktop\tracert.txt
Mokubai
fuente
Sí, eso es lo que diría. Alternativamente, también se puede crear una variable de entorno para la carpeta de escritorio de este usuario ... para que se pueda acceder a través de for ex: %DESKTOP%
unknownprotocol
3

"Escritorio" en este caso es la ruta relativa. Debe cambiar a la carpeta derecha (comando "cd") o poner la ruta completa al archivo de salida en el archivo .bat.

pbies
fuente
Si la ruta contiene espacios, debe especificar la ruta completa rodeada por "".
pbies
1

1> es STDOUT, a diferencia de STDERR, que es 2>

Creo que el espacio es solo un problema sintáctico, a cmd.exe no le gusta el espacio en blanco, así que lo cambia.

Ver de Microsoft Comando de redireccion página para más información.

En cuanto al error no encontrado, mi primera sugerencia sería verificar los permisos en ese directorio.

PD: Ya no es un usuario ganador, pero ¿es 'escritorio' una forma válida de acceder al escritorio o es un nombre de directorio?

mcalex
fuente
¡Me doy cuenta de que era muy tonto! Lol ... Cuando inicia cmd, se inicia de forma predeterminada en la carpeta Users \ UserName! Cambié la ruta de cmd usando "cd" .. LOL! ¡lo siento!
Pedro77