Copiar ficheros

Hola!, supongo que la pregunta será fácil, pero no se porqué:
    Tengo una página asp y cuando se da a un botón me hace este código:
        Set obj_Shell = Server.CreateObject ("Wscript.Shell")
        obj_Shell.run "cmd /K copy c:\a\*.csv c:\b\ & exit"
        Inicial mente tenía Set obj_Shell = CreateObject ("Wscript.Shell"), sin "Server." y me daba un error de que: "El componenete ActiveX no puede crear el objeto:'Wscript.Shell'"
        Después le puse el server y me daba el error: "Se requiere un objeto: ''"
        Metí la primera linea entre <% ... %> y me empezó a dar el mismo error anterior pero en la segunda linea.
        Metí la segunda linea entre <% ... %> y se me queda en blanco la página, no me muestra el botón. Si me meto en el código fuente me da: "Error de Microsoft VBScript en tiempo de ejecución, Permiso denegado"
        Y he vuelto a la ultima versión que es la que te escribí.
    ¿Cómo puedo hacer que se me quite el error y que funcione?.
    La página está en un servidor con IIS. Si no entiendes algo dímelo.
Muchas gracias de todas maneras.
Respuesta
1
A ver, por partes para cada uno de los errores:
1.- El error de "Se requiere un objeto" suele dar porque el servidor no tiene la librería correspondiente registrada, por lo que no puede crear una referencia del objeto que necesitas. PAra poder hacerlo, debes ver cual es la DLL que usa Wscript. Shell y registrarla en el servidor por ejemplo, mediante un regsvr32.
2.-Luego tienes el error del código fuente, que es un permiso denegado. Esto se debe a que desde un código ASP en el servidor, estas intentando realizar una operación a través de un shell contra el disco duro del usuario que ejecuta al página, y apra esto logicamenteno tienes permiso.
Ahora bien, si me explicas cual es la operación que quieres realizar, intentare ayudarte en los posible..
Me explico!, la idea es que quiero copiar o mover ficheros localmente en el equipo desde el que navego, y no en el servidor ASP.
He probado con:
                Set obj_Shell = Server.CreateObject ("scripting.FileSystemObject")
                obj_Shell.MoveFile "C:\edi\TextilCargo\*.csv", "C:\edi\TextilCargo\old\"
                Set obj_Shell = Nothing
Y con:
                     Set obj_Shell = Server.CreateObject ("Wscript.Shell")
                     obj_Shell.run "cmd /K CD C:\edi\TextilCargo\ & copy C:\edi\TextilCargo\*.csv C:\edi\TextilCargo\old\ & exit"
                     Set obj_Shell = Nothing
y me funciona en el servidor ASP(si creo esa carpeta en el servidor y creo ficheros CSV, me los mueve a old), pero no en el equipo local del cual hago la petición.
La pregunta es, ¿Se pueden mover o copiar ficheros desde el PC del usuario con páginas ASP?. Si no me explico bien, dígamelo. Muchas gracias por el interés.
Por cuestiones de sseguridad, por defecto no vas a tener la posibilidad de realizar esta operación. Para que te hagas una idea, tienes que ser el servidor que tienes instalado (el IIS) como un contenedor o una caja dentro de la cual puedes realizar una serie de operaciones, pero siempre dentro de la "caja".
Pro esto puedes realizar este tipo de operaciones con ficheros internos al servidor, porque no te sales de ese limite que tienes definido. Pero en cuanto intentas hacer algo con ficheros externos a el, te da el error que comentas.
Es posible que puedas hacer algo dando permisos de administrador al usuario IWAM en tu maquina (creo que era IWAM), de forma que el usuario con el que accede el explorador tenga permisos para realizar la oepracion que quiera en la maquina.
Puedes ver este enlace para obtener información al respecto.
http://support.microsoft.com/kb/271071

1 respuesta más de otro experto

Respuesta
1
¿Cuan es la finalidad? ¿Qué es lo que quieres que haga el botón?
Cuando es dan errores de acceso denegado es que faltan permisos para realizar algunas acciones, estos permisos los debe dar el administrador del servidor.
La finalidad es copiar, mover o borrar ficheros desde el equipo local desde el que se ejecuta la página. También lo intenté con:
             Set obj_Shell = Server.CreateObject ("scripting.FileSystemObject")
             obj_Shell.MoveFile "c:\a\*.csv", "c:\b\"
Pero me da el mismo error. La idea es que si lo ejecuto como una página html normal si me lo hace. Ya se me ha ocurrido el como voy a probar ahora. Voy a lanzar páginas independientes html desde la página ASP, para cada uno de los procesos que necesito.
Prueba con esto:
<%
dim fs
set obj_Shell=Server.CreateObject("Scripting.FileSystemObject")
obj_Shell.MoveFile server.mappath("../../ruta/pagina.htm"),
server.mappath("../../ruta2/pagina.htm")
set fs=nothing
%>

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas