Error de mklink: no se puede crear un archivo cuando ese archivo ya existe

27

Estoy tratando de crear un enlace simbólico en mi máquina win7 de 64 bits para redirigir los datos de respaldo de iTunes a otra unidad. Estoy bastante seguro de que la sintaxis es correcta, pero no puedo entender cómo borrar este error. He probado los dos comandos a continuación que tienen el mismo error. Estoy corriendo en la ventana de comandos del administrador. ¿Podría haber alguna política de grupo corporativo que me impida ejecutar este comando?

mklink /D "C:\Users\odellt1\AppData\Roaming\Apple Computer\MobileSync\Backup" "E:\Apple Computer\MobileSync\Backup" 

o

mklink /J "C:\Users\odellt1\AppData\Roaming\Apple Computer\MobileSync\Backup" "E:\Apple Computer\MobileSync\Backup"

Error

No se puede crear un archivo cuando ese archivo ya existe.

ChiliYago
fuente
¿Cuál es el directorio original?
Akram Berkawy
el directorio original es C: \ Users \ odellt1 \ AppData \ Roaming \ Apple Computer \ MobileSync \ Backup
ChiliYago
¿Existe la carpeta a la que está vinculando en la unidad E? ¿Existe una carpeta con el mismo nombre que el enlace en la unidad C? ¿La unidad E está formateada en NTFS?
Harry Johnston
1
La sintaxis es correcta, antes de ejecutar este comando, realice los siguientes pasos. Mueva todo el contenido de la carpeta de respaldo actual de mobilesync a E: \ Apple Computer \ MobileSync \ Backup. Una vez hecho esto, elimine la subcarpeta de copia de seguridad vacía de "C: \ Users \ odellt1 \ AppData \ Roaming \ Apple Computer \ MobileSync". Una unión solo se puede crear si una subcarpeta con el mismo nombre no existe en la ubicación.
Karanvir Kang

Respuestas:

29

La sintaxis es incorrecta. mklinktiene el siguiente synatx:

mklink [options] <Link> <Target>

Targetes el archivo / carpeta que existe y Linkes el creado que enlaza con el destino.

entonces el comando debería ser:

mklink /D "E:\Apple Computer\MobileSync\Backup"  "C:\Users\odellt1\AppData\Roaming\Apple Computer\MobileSync\Backup"

vea este enlace para el uso de mklink.

Akram Berkawy
fuente
He revisado los documentos y, siendo tan breve, pensarías que no sería un problema ejecutarlo. Sin embargo, no hubo suerte, incluso si se invierte el enlace / objetivo como sugiere, aparece el mismo mensaje de error.
ChiliYago
1
entonces debe verificar que la carpeta E: \ Apple Computer \ MobileSync \ Backup no existe
Akram Berkawy
1
Eso funciono. Noté que eliminar la ruta completa resultó en un error: "El sistema no puede encontrar la ruta especificada". Así que restauré la ruta y eliminé solo la última carpeta en la ruta (Copia de seguridad) y luego funcionó.
ChiliYago
1
Esta no es la respuesta correcta. Esto crea un enlace sim, que no redirige iTunes a otra unidad. Hace exactamente lo contrario: dirige otra unidad a la carpeta de respaldo de iTunes.
Vaiden
8

La forma más simple es eliminar la carpeta Copia de seguridad en la copia de seguridad de la carpeta Apple original (en C: \ driver) Cuando ejecutamos el comando:

mklink /J "%APPDATA%\Apple Computer\MobileSync\Backup" "E:\iTune Backups"

Windows creará un acceso directo de enlace Copia de seguridad en C: \ driver.

Khanh.tq
fuente
2
Esta es la respuesta correcta que hace lo que OP quiso hacer
Vaiden
4

Tuve el mismo problema con el "error de archivo ya existe", hasta que usé el "% AppData% ':

mklink / J "% APPDATA% \ Apple Computer \ MobileSync \ Backup" "E: \ iTune Backups"

Unión creada para C: \ Users \ Me \ AppData \ Roaming \ Apple Computer \ MobileSync \ Backup << === >> E: \ iTune Backups

Nota: Asegúrese de usar comillas rectas, de lo contrario obtendrá un error de comando de sintaxis.

Franco
fuente
Me gusta este método simple para asegurarme de que las carpetas de origen y destino no estén presentes antes de crear la unión. La creación de la unión crea la carpeta de origen, pero no la carpeta de destino. Así que tuve que crear manualmente la carpeta de destino y luego todo funciona como se esperaba.
timoto
Esto lo solucionó para mí, pero sería bueno tener una explicación de por qué% AppData% lo soluciona.
Aureis
2

Solo quería agregar que el error que mencionó en su comentario anterior System cannot find the path specifiedparece suceder cuando se vincula simbólicamente a un subnivel de carpeta que no existe en la fuente original del enlace.

Lo que significa que no puedes vincular

"c:\program files (x86)\some folder1\some folder2\"

apuntar

"d:\programs\some folder1\some folder2\"

No funcionará a menos que al menos

"c:\program files (x86)\some folder1"

existe como parte de la fuente del enlace. Tendrías que vincular

"c:\program files (x86)\some folder1"

a

"g:\programs\some folder1" 

o tendrías que crear al menos una carpeta vacía en

"c:\program files (x86)\some folder1"

y luego crea el enlace

"c:\program files (x86)\some folder1\some folder2" 

a

"g:\programs\some folder1\some folder2"
Kace36
fuente
Esto parece un error por parte de Microsoft, pero esta respuesta es realmente correcta. Cuando se vincula C:\fooa E:` for instance, E: \ foo` debe existir para cd C:\foo; sin embargo, cuando haces cd, te colocan en E:` -- **not** E: \ foo`. Gracias por señalar esto, nunca lo habría descubierto.
Qix