Compartir a través de


Cambiar el directorio actual

El directorio al final de la ruta de acceso activa se denomina directorio actual; es el directorio en el que se inició la aplicación activa, a menos que se haya cambiado explícitamente. Una aplicación puede determinar qué directorio es actual llamando a la función GetCurrentDirectory . A veces es necesario usar la función GetFullPathName para asegurarse de que se incluye la letra de unidad si la aplicación lo requiere.

Nota:

Aunque cada proceso solo puede tener un directorio actual, si la aplicación cambia los volúmenes mediante la función SetCurrentDirectory , el sistema recuerda la última ruta de acceso actual para cada volumen (letra de unidad). Este comportamiento solo se manifestará al especificar una letra de unidad sin una ruta de acceso completa al cambiar el punto de referencia del directorio actual a un volumen diferente. Esto se aplica a las operaciones Get o Set.

 

Una aplicación puede cambiar el directorio actual llamando a la función SetCurrentDirectory .

En el ejemplo siguiente se muestra el uso de GetCurrentDirectory y SetCurrentDirectory.

#include <windows.h> 
#include <stdio.h>
#include <tchar.h>

#define BUFSIZE MAX_PATH
 
void _tmain(int argc, TCHAR **argv) 
{ 
   TCHAR Buffer[BUFSIZE];
   DWORD dwRet;

   if(argc != 2)
   {
      _tprintf(TEXT("Usage: %s <dir>\n"), argv[0]);
      return;
   }

   dwRet = GetCurrentDirectory(BUFSIZE, Buffer);

   if( dwRet == 0 )
   {
      printf("GetCurrentDirectory failed (%d)\n", GetLastError());
      return;
   }
   if(dwRet > BUFSIZE)
   {
      printf("Buffer too small; need %d characters\n", dwRet);
      return;
   }

   if( !SetCurrentDirectory(argv[1]))
   {
      printf("SetCurrentDirectory failed (%d)\n", GetLastError());
      return;
   }
   _tprintf(TEXT("Set current directory to %s\n"), argv[1]);

   if( !SetCurrentDirectory(Buffer) )
   {
      printf("SetCurrentDirectory failed (%d)\n", GetLastError());
      return;
   }
   _tprintf(TEXT("Restored previous directory (%s)\n"), Buffer);
}