Supongamos que crea algunos enlaces simbólicos de Windows, como en:eliminar enlaces simbólicos de Windows en una secuencia de comandos perl?
rd /s /q source withlink linkdir
mkdir source
mkdir withlink
echo blah > source/myfile
cd withlink
touch blah
mklink mylink ..\source\myfile
@REM mklink /d linkdir ..\source
cd ..
que puede eliminar el directorio que contiene los enlaces simbólicos en la cáscara con
rd /s /q withlink
tengo la misma tarea que hacer en un script de perl donde actualmente usamos cygwin 'rm -rf'. Desafortunadamente estamos usando cygwin 1.5 y rm y rm -rf no funcionan correctamente en esa versión en los enlaces simbólicos que me gustaría usar (they delete symbolic link contents instead of the symlinks).
si trato:
use File::Path qw(rmtree) ;
rmtree(['withlink']) ;
Esto funciona muy bien, siempre y cuando no tengo ningún directorio de enlaces simbólicos (como el que se REM'ed a cabo en la secuencia de crear-la-links arriba) y luego de Perl rmtree termina comportándose como cygwin, y termino con el contenido del directorio de mi directorio original eliminado.
¿Alguien tiene una sugerencia de un método alternativo de eliminación de directorio perl recursivo que podría utilizar. Pensé en sólo una llamada shell:
system("rd /s /q withlink") ;
pero esto requiere que probar la plataforma y tienen diferentes códigos de Perl para Windows y Unix.
EDIT: Tenga en cuenta que, a diferencia de Unix, desvincular() no funciona para eliminar un enlace simbólico al directorio, al menos con v5.6.0 Perl, que es lo que nuestro sistema de construcción está utilizando actualmente. Sin embargo, rmdir() funciona para eliminar un enlace simbólico de directorio de Windows.
Si intenta ... ¿qué? –
lo siento, edité mi título ligeramente mientras aún estaba haciendo mi pregunta, y envié la pregunta de forma prematura y accidental en un estado incompleto. –
¡Gracias por la actualización! –