Esto parece bastante simple y tal vez solo estoy pasando por alto el indicador adecuado , pero ¿cómo podría, en un comando, copiar un archivo de un directorio a otro y cambiarle el nombre en el directorio de destino? Aquí está mi comando:
if exist "bin\development\whee.config.example"
if not exist "TestConnectionExternal\bin\Debug\whee.config"
xcopy "bin\development\whee.config.example"
"TestConnectionExternal\bin\Debug\whee.config"
Me pide lo siguiente cada vez:
¿TestConnectionExternal \ bin \ Debug \ whee.config especifica un nombre de archivo o nombre de directorio en el destino (F = archivo, D = directorio)?
Quiero suprimir este aviso; La respuesta es siempre F
.
command-line
command-prompt
xcopy
Sarah Vessels
fuente
fuente
cp
nada para copiar archivos / directorios!Respuestas:
No use el
xcopy
, usecopy
en su lugar, no tiene este problema.xcopy
generalmente se usa al realizar copias recursivas de múltiples archivos / carpetas, o cuando necesita las características de verificación / solicitud que ofrece. Para copias de un solo archivo, elcopy
comando funciona bien.fuente
copy
no copiará el archivo si toda la estructura de directorios para el destino aún no existe.xcopy
creará automáticamente todos los directorios necesarios.xcopy
y no solocopy
.yo suelo
para evitarlo
fuente
echo d | xcopy srcdirectory destdirectory /S
echo d | xcopy ...
para mí. Eres brillanteOtra opción es usar un comodín de destino. Tenga en cuenta que esto solo funciona si los nombres de los archivos de origen y destino serán los mismos, por lo que si bien esto no resuelve el ejemplo específico del OP, pensé que valía la pena compartirlo.
Por ejemplo:
creará una copia del archivo "whee.config.example" en el directorio de destino sin solicitar un archivo o directorio.
Actualización : como lo menciona @chapluck:
Puedes cambiar
"* "
a"[newFileName].*"
. Persiste la extensión del archivo pero permite cambiar el nombre. O más hacky:"[newFileName].[newExt]*"
para cambiar la extensiónfuente
Hay algún tipo de función no documentada en XCOPY. puedes usar:
xcopy "bin \ development \ whee.config.example" "c: \ mybackup \ TestConnectionExternal \ bin \ Debug \ whee.config *"
Lo probé hoy. :-)
fuente
whee.config.example
la carpeta de destino, porquewhee.config*
coincidewhee.config.example
.b.txtxt
, y luego inicié el comandoxcopy a.txt b.txt* /F /Y
y el archivoa.txt
se ha copiadob.txt
, como se esperaba. Además de eso, mientras se usan los/F /Y
interruptores, la copia real se muestra en la pantalla, exactamente como se esperaba.Simplemente vaya a http://technet.microsoft.com/en-us/library/bb491035.aspx
Esto es el PROBLEMA PRINCIPAL "... Si el Destino no contiene un directorio existente y no termina con una barra diagonal inversa (), aparece el siguiente mensaje: ...
¿El destino especifica un nombre de archivo o un nombre de directorio en el destino (F = archivo, D = directorio)?
Puede suprimir este mensaje utilizando la opción de línea de comandos / i, lo que hace que xcopy suponga que el destino es un directorio si el origen es más de un archivo o un directorio.
Me tomó un tiempo, pero todo lo que se necesita es RTFM.
fuente
Entonces, hay una solución simple para esto. Es ciertamente incómodo, pero funciona. xcopy no le preguntará si el destino es un directorio o archivo SI el nuevo archivo (nombre de archivo) ya existe. Si precede su comando xcopy con un eco simple al nuevo nombre de archivo, sobrescribirá el archivo vacío. Ejemplo
fuente
Esto es de la respuesta de Bills.
Solo para ser realmente claro para los demás.
Si está copiando UN archivo de un lugar a otro Y desea que se cree la estructura completa del directorio, use el siguiente comando:
Sí, coloque una barra diagonal inversa al final del nombre del archivo y NO le preguntará si es un archivo o directorio. Debido a que solo hay UN archivo en la fuente, asumirá que es un archivo.
fuente
dir "C:\Target Data\\Images\2013\08\12"
09/25/2015 10:48 AM <DIR> 85e4a707-2672-481b-92fb-67ecff20c96b.jpg
xcopy src dest /I
REM This assumes dest is a folder and will create it, if it doesnt exists
fuente
Tuve un problema similar y tanto robocopy como xcopy no ayudaron, ya que quería suprimir los comentarios y usar un nombre de archivo de destino diferente. encontré
trabajando según mis requisitos.
fuente
De vuelta a la pregunta original:
podría hacerse con dos comandos, por ejemplo:
Simplemente agregando "\ .." a la ruta del archivo de destino, se crea el directorio de destino si aún no existe. En este caso
que es el directorio padre del directorio no existente
Al menos para WIN7 mkdir no le importa si el directorio
Realmente existe.
fuente
XCOPY con * al final del destino para copiar archivos si existen o no en el destino XCOPY con \ al final del destino para copiar carpetas y contenidos si existen o no en el destino
Alternativamente
RoboForm SOURCE DEST FILE para archivos RoboForm SOURCE DEST para carpetas
fuente
Sugiero en
robocopy
lugar decopy
oxcopy
. Utilizado como comando o en GUI en clientes o servidores. Tolera las pausas de la red y puede optar por ignorar los atributos del archivo al copiar los atributos de copia por archivo. Ah, y es compatible con máquinas de múltiples núcleos, por lo que los archivos se copian mucho más rápido en "paralelo" entre sí en lugar de secuencialmente.robocopy
se puede encontrar en MS TechNet.fuente
Lo correcto si desea copiar solo el archivo y cambiar su nombre en el destino es:
Y va a funcionar bien
fuente
Para duplicar archivos grandes, xopy con el modificador / J es una buena opción. En este caso, simplemente canalice una F para el archivo o una D para el directorio. Además, puede guardar trabajos en una matriz para futuras referencias. Por ejemplo:
Gracias a Chand con algunas modificaciones: https://stackoverflow.com/users/3705330/chand
fuente
Use copiar en lugar de xcopy al copiar archivos.
por ejemplo, copiar "bin \ development \ whee.config.example" "TestConnectionExternal \ bin \ Debug \ whee.config"
fuente
copy /Y source destination
para pasar la confirmación de sobrescritura.Como en realidad no está cambiando el nombre de archivo, puede extraer el nombre de archivo del destino y no habrá preguntas.
Este enfoque funciona bien cuando se garantiza que el directorio de destino existe, y cuando la fuente puede ser igualmente un archivo o directorio.
fuente
Debug
es probable que el directorio exista.Evite, use ReName ... y asígnele un nombre críptico, luego cámbiele el nombre a su nombre apropiado
C:
CD "C: \ Usuarios \ Público \ Documentos \ Mis sitios web \ AngelFire ~ Zoe \"
XCopy / D / I / V / Y "C: \ Usuarios \ Público \ Documentos \ Mis sitios web \ HostGator ~ ZoeBeans \ cop.htm"
Ren "cop.htm" "christ-our-passover.htm"
fuente
xcopy le permitirá copiar un solo archivo en una carpeta especificada, simplemente no le permitirá definir un nombre de destino. Si necesita el nombre del destino, simplemente cámbiele el nombre antes de copiarlo.
ren "bin \ desarrollo \ whee.config.example" whee.config
xcopy / R / Y "bin \ development \ whee.config" "TestConnectionExternal \ bin \ Debug \"
fuente
ren "bin\development\whee.config" whee.config.example
Coloque un asterisco (*) al final de la ruta de destino para omitir la disputa de D y F.
Ejemplo:
fuente
¿Xxxxxxxxxxxx especifica un nombre de archivo o un nombre de directorio en el destino
fuente
Me encontré con el mismo problema cuando intento copiar el archivo con un nuevo nombre solo si el archivo no existe en el destino o existe (con un nuevo nombre), pero es anterior. La solución es agregar
*
char al final del nombre del archivo de destino. Ejemplo:fuente
No puede especificar que siempre sea un archivo. Si no necesita las otras funciones de xcopy, ¿por qué no usar solo regular
copy
?fuente
copy
, al ser un comando interno, no establece ErrorLevel. Si desea poder influir en la ruta de un archivo por lotes si se produce un error de copia, debe usarloXCOPY
.