2010-12-12 28 views

Respuesta

660

Desde dentro de su archivo por lotes:

  • %cd% le dará la current working directory (variable)
  • %~dp0 dará que la ruta completa al directorio del archivo por lotes (estática)
+5

@ Јοеу - '% 0' podría dar el nombre de la subrutina actual, pero'% ~ dp0' ** siempre ** dará la ruta completa al archivo por lotes en ejecución. – dbenham

+68

En realidad, parece que% ~ dp0 proporciona la ruta completa al * directorio * en el que se encuentra el archivo por lotes en ejecución.% ~ Dpnx0 (que es equivalente a% ~ f0) proporciona la ruta completa al archivo por lotes. Ver http://www.robvanderwoude.com/parameters.php para más detalles. – deadlydog

+5

Consulte también buenas respuestas detalladas de una pregunta similar: [Obtenga la lista de argumentos pasados ​​en el script por lotes de Windows (.bat)] (http: // stackoverflow.com/q/357315/938111) – olibre

3

Es el directorio desde donde inicia el archivo por lotes. P.ej. si su lote está en c:\dir1\dir2 y lo hace cd c:\dir3, luego ejecute el lote, el directorio actual será c:\dir3.

20

generalmente es el directorio desde el que se inicia el archivo por lotes, pero si inicia el archivo por lotes desde un acceso directo, se podría dar un directorio de inicio diferente. Además, cuando esté en cmd y su directorio actual sea c:\dir3, aún puede iniciar el archivo por lotes usando c:\dir1\dir2\batch.bat, en cuyo caso, el directorio actual será c:\dir3.

2

Digamos que estaba abriendo un archivo en su directorio actual. El comando sería:

start %cd%\filename.filetype 

Espero que haya respondido a su pregunta.

5

En un archivo por lotes,% cd% es el comando más utilizado para el directorio actual, si bien puede configurar su propia variable:

set mypath=%cd% 
echo %mypath% (where %mypath% is the current directory that the batch file is sitting in) 

Así dicen usted quería abrir myprog.exe. Si estuviera en la misma carpeta, usaría el comando:

start %mypath%\Myprog.exe 

Eso abriría Myprog de la carpeta actual.

La otra opción es crear un directorio en C: llamado AutomatePrograms. A continuación, transferir los archivos a esa carpeta a continuación, puede abrirlos con el siguiente comando:

start C:\AutomatePrograms\Myprog1.exe 
start C:\AutomatePrograms\Myprog2.exe 
start C:\AutomatePrograms\Myprog3.exe 
+0

Como se menciona en la respuesta superior aquí, '% cd%' es variable, por lo que ejecutar el archivo por lotes desde el Explorador de Windows como administrador dará 'C: \ WINDOWS \ system32', que seguramente no es lo que desea. '% ~ dp0' es más consistente. – icc97

2

Es el directorio desde el que se ejecuta el comando para ejecutar el archivo por lotes.

Como se mencionó en las respuestas anteriores se puede agregar el comando siguiente para la secuencia de comandos para verificar:

> set current_dir=%cd% 
> echo %current_dir% 
Cuestiones relacionadas