recursive exclude examples batch command-line command-prompt xcopy

command line - exclude - archivo xcopy, renombrar, suprimir el mensaje “¿Especifica xxx un nombre de archivo...?”



xcopy vs copy (19)

Esto parece bastante simple y tal vez solo esté pasando por alto el indicador adecuado , pero ¿cómo podría, en un comando, copiar un archivo de un directorio a otro y cambiar su nombre en el directorio de destino? Aquí está mi orden:

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 incita con lo siguiente cada vez:

¿TestConnectionExternal / bin / Debug / whee.config especifica un nombre de archivo o un nombre de directorio en el destino (F = archivo, D = directorio)?

Quiero suprimir este mensaje; la respuesta es siempre F .


Como en realidad no está cambiando el nombre de archivo, puede quitar el nombre de archivo del destino y no habrá preguntas.

xcopy bin/development/whee.config.example TestConnectionExternal/bin/Debug/ /Y

Este enfoque funciona bien cuando se garantiza la existencia del directorio de destino, y cuando la fuente puede ser igualmente un archivo o directorio.


De vuelta a la pregunta original:

xcopy "bin/development/whee.config.example" "TestConnectionExternal/bin/Debug/whee.config"

se podría hacer con dos comandos por ejemplo:

mkdir "c:/mybackup/TestConnectionExternal/bin/Debug/whee.config/.." xcopy "bin/development/whee.config.example" "c:/mybackup/TestConnectionExternal/bin/Debug/whee.config/"

Simplemente agregando "/ .." a la ruta del archivo de destino, se crea el directorio de destino si aún no existe. En este caso

"c:/mybackup/TestConnectionExternal/bin/Debug/"

que es el directorio padre del directorio no existente

"c:/mybackup/TestConnectionExternal/bin/Debug/whee.config/.."

Al menos para WIN7 mkdir no le importa si el directorio

"c:/mybackup/TestConnectionExternal/bin/Debug/whee.config/"

realmente existe


Esto es de Bills respuesta.

Solo para ser realmente claros 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:

xcopy "C:/Data/Images/2013/08/12/85e4a707-2672-481b-92fb-67ecff20c96b.jpg" "C:/Target Data//Images/2013/08/12/85e4a707-2672-481b-92fb-67ecff20c96b.jpg/"

Sí, ponga una barra invertida 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.


Hay algún tipo de característica no documentada en XCOPY. puedes usar:

xcopy "bin / development / whee.config.example" "c: / mybackup / TestConnectionExternal / bin / Debug / whee.config *"

Lo probé hoy mismo. :-)


Lo que hay que hacer si desea copiar solo el archivo y cambiar su nombre en el destino es:

xcopy / f / y "bin / development / example.exe" "TestConnectionExternal / bin / Debug / NewName.exe *"

Y va a funcionar bien


No puedes especificar que siempre es un archivo. Si no necesita las otras funciones de xcopy, ¿por qué no usar una copy normal?


No use xcopy , use copy lugar, no tiene este problema.

xcopy se usa generalmente cuando se realizan copias recursivas de múltiples archivos / carpetas, o cuando necesita las funciones de verificación / solicitud que ofrece. Para copias de un solo archivo, el comando de copy funciona bien.


Otra 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 de destino son los mismos, por lo que aunque no resuelva el ejemplo específico del OP, pensé que valía la pena compartirlo.

Por ejemplo:

xcopy /y "bin/development/whee.config.example" "TestConnectionExternal/bin/Debug/*"

creará una copia del archivo "whee.config.example" en el directorio de destino sin solicitar el archivo o el directorio.

Actualización : Como lo menciona @chapluck:

Puede cambiar "* " a "[newFileName].*" . Persiste la extensión de archivo pero permite cambiar el nombre. O más hacky: "[newFileName].[newExt]*" para cambiar la extensión


Para duplicar archivos grandes, xopy con el interruptor / 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:

$MyScriptBlock = { Param ($SOURCE, $DESTINATION) ''F'' | XCOPY $SOURCE $DESTINATION /J/Y #DESTINATION IS FILE, COPY WITHOUT PROMPT IN DIRECT BUFFER MODE } JOBS +=START-JOB -SCRIPTBLOCK $MyScriptBlock -ARGUMENTLIST $SOURCE,$DESTIBNATION $JOBS | WAIT-JOB | REMOVE-JOB

Gracias a Chand con un poco de modificaciones: https://.com/users/3705330/chand


Por lo tanto, hay una solución simple para esto. Es cierto que es 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 simple eco al nuevo nombre de archivo, se sobrescribirá el archivo vacío. Ejemplo

echo.>newfile.txt xcopy oldfile.txt newfile.txt /Y


Simplemente vaya a http://technet.microsoft.com/en-us/library/bb491035.aspx

Esto es lo que la EDICIÓN PRINCIPAL es "... Si Destino no contiene un directorio existente y no termina con una barra invertida (), aparece el siguiente mensaje: ...

¿Especifica el destino 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, 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 necesita es RTFM.


Sugiero robocopy lugar de copy o xcopy . Se utiliza como comando o en GUI en clientes o servidores. Tolerante a las pausas de red y puede optar por ignorar los atributos de archivo al copiar los atributos de copia por archivo. Ah, y es compatible con máquinas de múltiples núcleos para que los archivos se copien mucho más rápido en "paralelo" entre sí en lugar de secuencialmente. robocopy se puede encontrar en MS TechNet.


Trabaje de un lado a otro, use ReName ... y asígnele un nombre críptico, luego cambie su nombre a su nombre propio

DO:

CD "C: / Users / Public / Documents / Mis sitios web / AngelFire ~ Zoe /"

XCopy / D / I / V / Y "C: / Users / Public / Documents / Mis sitios web / HostGator ~ ZoeBeans / cop.htm"

Ren "cop.htm" "christ-our-passover.htm"


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é

type filename.txt > destfolder/destfilename.txt

trabajando según mis necesidades.


Use copiar en lugar de xcopy cuando copie archivos.

por ejemplo, copie "bin / development / whee.config.example" "TestConnectionExternal / bin / Debug / whee.config"


XCOPY con * al final del destino para copiar los archivos, ya sea que existan o no en el destino XCOPY con / al final del destino, para copiar las carpetas y el contenido, ya sea que existan o no en el destino

Alternativamente

RoboForm SOURCE DEST FILE para archivos RoboForm SOURCE DEST para carpetas


xcopy le permitirá copiar un solo archivo en una carpeta específica que no le permitirá definir un nombre de destino. Si necesita el nombre de destino, simplemente cambie su nombre antes de copiarlo.

ren "bin / development / whee.config.example" whee.config

xcopy / R / Y "bin / development / whee.config" "TestConnectionExternal / bin / Debug /"


yo suelo

echo f | xcopy /f /y srcfile destfile

para superarlo.


xcopy src dest /I

REM This assumes dest is a folder and will create it, if it doesnt exists