2012-04-16 24 views
9

Tengo un archivo bat copiando archivos de la máquina actual a la unidad de red asignada (una línea, comando xcopy).No se pueden copiar archivos a UNC Destinations si se llama al archivo BAT mediante la tarea programada

Funciona cuando RDP al servidor. Sin embargo, cuando ejecuto una tarea programada y la configuro para que se ejecute con el mismo usuario, inicié sesión, no funciona y proporciono el error 0x4.

¿Hay alguna manera de lograrlo?

También intento dsynchronize y funciona cuando hago clic en sincronizado. Cuando lo ejecuto como servicio mismo problema.

+0

upvoted la que me ayudó a continuación, pero esta respuesta también me ayudó a depurar en mi caso http://stackoverflow.com/questions/8662024/how-do-i-capture-the-output -of-a-script-if-it-is-being-ran-by-the-task-scheduler – lessthanideal

Respuesta

16

Pude resolverlo. Después de archivos por lotes trabaja bajo planificador, así como cuenta del sistema local:

net use m: \\server\share /U:server\user password 
xcopy C:\source m: /E /Y 

Se asigna una unidad de red cada vez y luego copiar a esa unidad

1

¿Quién mapea la unidad de red? ¿Y está utilizando el nombre asignado, en lugar de la ruta nativa UNC subyacente? Porque parece que la unidad asignada está configurada en su secuencia de comandos de inicio de sesión, que no se ejecuta si no ha iniciado sesión. Por lo tanto, en una tarea programada, tiene las credenciales correctas para la ruta UNC, pero no una letra de unidad asignada .

+0

I mapea la unidad de red. Sí, estoy usando un nombre mapeado. La tarea programada genera el mismo error incluso si estoy conectado en – Imran

+2

No importa si ha iniciado sesión para la tarea programada. Utiliza su propia sesión, y el disco no está mapeado en esa sesión. – MSalters

+0

@Marc: Por supuesto que sí, ya que los comentarios confirman. El síntoma no es poder copiar el archivo, la pregunta es por qué. La respuesta es una letra de unidad faltante para una ruta UNC porque no se ejecuta una secuencia de comandos de inicio de sesión. – MSalters

4

tuve problema similar donde quería copiar el archivo (s) desde un servidor a cientos de otros servidores sin asignar una unidad remota a mi PC local. ¡No tenía suficientes letras de unidad para asignar cientos de máquinas remotas a mi PC local! No podía simplemente mapear el disco remoto y copiarlo.

Pensé que podría usar copy, xcopy o robocopy, y especificar mis credos en el comando de copia. Pero ninguno de los comandos de copia tenía opciones para proporcionar credenciales al sistema remoto.

Gracias a la publicación anterior, pude crear un pequeño archivo de proceso por lotes en el que simplemente recorrí mis hosts y seguí reutilizando solo una asignación de unidades para todos mis hosts.

Aquí está mi archivo por lotes ...

echo @off 
for /F %%j in (pchostslist1.txt) do (
    net use z:\\%%j\c$ /user:domain\myusername mypassword 
    mkdir \\%%j\c$\tmp\mynewdir 
    xcopy c:\anyfile.txt \\%%j\c$\tmp\mynewdir 
    net use z: /delete 
) 
6

Es posible copiar archivos a una ruta UNC sin mapeo como una unidad de red. Simplemente intente establecer la ruta UNC entre comillas.

copy * "\\server\share" 

Sin las comillas, tengo un "error de sintaxis" que se ejecuta en la línea de comandos de Windows7.

3

Tuve un problema similar y, en lugar de usar el uso de la red, simplemente necesitaba almacenar la contraseña como parte de la tarea programada. Notará que dice que solo tiene acceso a los recursos locales si está marcado.

Store password

Cuestiones relacionadas