Pregunta ¿Podemos ejecutar un archivo por lotes (.bat) desde la ruta compartida


tengo un ruta compartida (como // servername / c $ / batches /) donde todos mis archivos por lotes se encuentran ahora estoy escribiendo un aplicación web en C # para ejecutar archivos .bat de esa aplicación. Sé cómo hacerlo cuando tengo un camino físico. Pero aquí no tengo un camino físico. Es posible hacer lo.

EDIT # 1

Ejecuto mis archivos bat simplemente haciendo doble clic en ellos o abro el cmd progam en el servidor físico y luego navego hacia la unidad y ejecuto el archivo bat.

EDIT # 2

cuando pongo ruta UNC el obtener el siguiente error

Obteniendo un error myprogram.exe no se reconoce como un programa operable por comando interno o externo o un archivo por lotes. 9009


9
2017-09-21 17:23


origen


Respuestas:


Los archivos por lotes no admiten rutas UNC como su "directorio actual". Hay un trabajo de hackear por hacer:

pushd "%~dp0"
your batch stuff
popd

% ~ dp0 se expande al actual (d) rive / (p) ath / (0) batchfilename


ejemplo:

De acuerdo. un archivo por lotes simple:

pushd %~dp0
echo "Hello from batch land"
echo %~dp0
popd

ponlo en un servidor en alguna parte, e intenta ejecutarlo a través de una ruta de acceso unc:

C:\> \\server\share\test.bat

Obtendrás como resultado:

C:\>pushd \\server\share\

Z:\>echo Hello from batch land
Hello from batch land

Z:\>echo \\server\share\
\\server\share\

Z:\>popd

C:\>

Raro, pero funciona.


14
2017-09-21 17:28



Eso se llama Trayectoria UNC.
Puedes usarlo como cualquier otra ruta.

Sin embargo, el usuario que ejecuta su código ASP.Net debe tener acceso de lectura al recurso compartido de red.


0
2017-09-21 17:24



Aparentemente, tú hacer tiene un problema de directorio actual.
los .bat archivo está tratando de ejecutar myprogram.exe del directorio actual.

Puede crear un archivo por lotes contenedor en su máquina local que mapee el recurso compartido de red:

pushd \\server\c$\dir
call filename.bat
popd

Puede colocar este archivo envoltorio en cualquier lugar y luego llamarlo desde su código.


0
2017-09-21 17:38