2011-03-03 17 views
5

Tengo un script xcopy simple que estoy ejecutando desde la línea de comandos que lee un archivo CSV de directorios y nombres de archivos. He usado un script muy similar sin problemas antes. Aquí está la secuencia de comandos:¿Por qué xcopy no copia archivos cuando usa estos parámetros?

Z:\HOME\>for /f "delims=, tokens=1,2,3,4" %i in (Z:\HOME\MissingImages.csv) do echo f | xcopy "Y:\%j\%k\%l" "C:\Horizon\%j\%k\%l" >> Z:\HOME\MissingImagesLog.txt

Sin embargo, no es la copia de cualquiera de los archivos a través de aquí es una entrada del archivo de registro:

Does C:\Horizon\K\00\6bef500f.IMG specify a file name or directory name on the target (F = file, D = directory)? f 0 File(s) copied

Se trata de encontrar las imágenes porque si Cambio el directorio raíz a otra cosa, la secuencia de comandos completará el archivo de registro con 0 File(s) copied para todas las entradas, por lo que los archivos están allí y se pueden ver ...

Además, la unidad Z:\ está en una red y no local, pero nuevamente he usado una secuencia de comandos muy similar en una red sin problemas (solo lleva más tiempo).

He intentado con diferentes opciones como /i, /s etc., pero parece que no puedo copiar todos los archivos.

Respuesta

1

Bueno, eso es molesto; Encontré el problema. Parece que cuando generé mi archivo CSV, puso un espacio al final de cada línea, por lo que xcopy estaba buscando archivos que tenían un espacio después de la extensión.

Lo que me estaba tirando era que estaba buscando los archivos, pero no podía copiarlos, haciéndome pensar que era un problema de red o xcopy.

Acabo de ejecutar un script sed para eliminar los espacios eol y el script xcopy funciona ahora como se esperaba.

1

Se pregunta porque no sabe si desea copiar al directorio (se creará) o proporciona la ruta de destino completa. Esto le preguntará:

xcopy pathname1\file.from pathname2\file.to 

Sin embargo, la adición de barra le dirá que copie al directorio:

xcopy pathname1\file.from pathname2\to\ 

pero no he encontrado la manera de decir explícitamente que quiero copiar y cambiar el nombre de archivo , excepto

echo Y | xcopy pathname1\file.from pathname2\file.to 

jugué un poco con su caso (con para, hacer y xcopy) y descubrió que incluso si pregunta ¿SOMEFILE especifica un nombre de archivo o directorio en el destino (F = archivo, D = directorio)? se proporciona con f de echo y se ha copiado correctamente. Por lo tanto, no es un problema con la especificación de archivo/directorio, sino con la copia a través de la red.

+0

¿No es así como debería ser? No es el flujo: se ejecuta el comando 1.Xcopy; 2.prompts para archivo o directorio; 3.echo f se ejecuta para completar el comando xcopy; 4. El siguiente comando de xcopy se ejecuta, etc. ¿Por qué sería problemático que echo f ejecute después de xcopy? – Saggio

+0

Actualizado, está bien con eco f. ¿Cómo se asigna Z al sistema? – pmod

+0

Encontrado el problema; así fue como se creó la csv. ¡Gracias por tu ayuda! – Saggio

9

xcopy también informará 0 File(s) copied si utiliza barras diagonales "/" en las rutas en lugar de barras invertidas "\", aunque SOLAMENTE si ha incluido la ruta entre comillas.

  1. Esta falla con "0 archivo (s) copiado"

    xcopy "pathname1/file" pathname2\file 
    
  2. Esta falla con "Número no válido de parámetros"

    xcopy pathname1/file pathname2\file 
    
  3. Esto funciona bien

    xcopy pathname1\file pathname2\file 
    
Cuestiones relacionadas