Tome un archivo por lotes terriblemente simple:acceso directo del administrador de archivos por lotes con los parámetros citados dobles
echo hi
pause
Guardar como que test.bat. Ahora, crea un atajo para test.bat. El acceso directo ejecuta el archivo por lotes, que imprime "hola" y luego espera una pulsación de tecla como se esperaba. Ahora, agregue algún argumento al objetivo del atajo. Ahora tiene un acceso directo a:
%path%\test.bat some args
El acceso directo ejecuta el archivo por lotes como antes.
Ahora, ejecute el acceso directo como administrador. (Por cierto, esto está en Windows 7). Puede usar el botón derecho del ratón -> Ejecutar como administrador, o vaya a las propiedades del atajo y marque la casilla en la sección avanzada. Dile a UAC que está bien y una vez más el atajo ejecuta el archivo por lotes como se esperaba.
Ahora, cambiar los argumentos en el destino del acceso directo para agregar comillas dobles:
%path%\test.bat "some args"
Ahora intenta el acceso directo como administrador. ¡No funciona esta vez! Aparece una ventana de comando y desaparece demasiado rápido para ver cualquier error. Intenté agregar> test.log 2> & 1 al acceso directo, pero no se crea ningún registro en este caso.
Intente ejecutar el mismo atajo (con las comillas dobles) pero no como administrador. Ejecuta bien el archivo por lotes. Por lo tanto, parece que el comportamiento no se debe a los parámetros de doble cita, y no es porque se ejecuta como administrador. Es una extraña combinación de los dos.
También intenté ejecutar el mismo comando desde la ventana de comandos de un administrador. Esto ejecutó el archivo por lotes como se esperaba sin error. Al ejecutar el acceso directo desde la ventana de comandos se generó una nueva ventana de comando que brilló y desapareció. Aparentemente, el problema es causado por una combinación de administrador, el acceso directo y las comillas dobles.
Estoy totalmente perplejo, ¿alguien tiene alguna idea de lo que está pasando? También me gustaría una solución.
qué pasa cuando ejecuta el comando real en la línea de comando. '% path% \ test.bat" some args "'. ¿Qué viste? – ghostdog74
cuando se ejecuta desde la línea de comandos, el archivo de proceso por lotes imprime "hola" y luego espera a que se presione la tecla, como era de esperar. – XXB