Copie el archivo, cambie el nombre, suprima el mensaje “Does xxx specified a file name …”

Esto parece bastante simple y tal vez solo estoy pasando por alto la bandera adecuada , 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 induce con lo siguiente cada vez:

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

Quiero suprimir este mensaje; la respuesta es siempre F

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

xcopy lo general, xcopy se usa al realizar 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.

yo suelo

 echo f | xcopy /f /y srcfile destfile 

para evitarlo

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 serán los mismos, por lo tanto, aunque esto no resuelve el ejemplo específico de 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 un archivo o directorio.

Actualización : Como lo mencionó @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

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é solo hoy. 🙂

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

Esto es lo que el PROBLEMA PRINCIPAL es “… Si el 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.

Entonces, hay una solución simple para esto. Es cierto que es incómodo, pero funciona. xcopy no solicitará que el destino sea un directorio o archivo SI el nuevo archivo (nombre de archivo) ya existe. Si antecede su comando xcopy con un eco simple al nuevo nombre de archivo, sobrescribirá el archivo vacío. Ejemplo

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

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 de directorio completa, 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 diagonal inversa al final del nombre del archivo y NO le preguntará si se trata de un archivo o directorio. Como solo hay UN archivo en la fuente, asumirá que es un archivo.

De vuelta a la pregunta original:

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

podría hacerse 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

Sugiero robocopy lugar de copy o xcopy . Se usa como comando o en GUI en clientes o servidores. Tolerante a las pausas de la red y puede optar por ignorar los atributos del archivo al copiar los atributos de copiar por archivo. Ah, y admite máquinas multinúcleo, 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.

xcopy src dest /I

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

Tuve un problema similar y tanto robocopy como xcopy no me 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 requisitos.

Para duplicar archivos grandes, xopy con el modificador / J es una buena opción. En este caso, simplemente canalice una F para archivo o una D para 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 algunas modificaciones: https://stackoverflow.com/users/3705330/chand

Use copia en lugar de xcopy al copiar archivos.

por ejemplo, copiar “bin \ development \ whee.config.example” “TestConnectionExternal \ bin \ Debug \ whee.config”

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

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

Este enfoque funciona bien cuando se garantiza que el directorio de destino existe, y cuando la fuente también puede ser un archivo o directorio.

Work Around, use ReName … y asígnele un nombre críptico, luego renamelo con 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”

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

ren “bin \ development \ whee.config.example” whee.config

xcopy / R / Y “bin \ development \ whee.config” “TestConnectionExternal \ bin \ Debug \”

Lo correcto a hacer si quiere 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

XCOPY con * al final del objective para copiar archivos ya sea que existan o no en XCOPY de destino con \ al final del destino para copiar carpetas y contenidos, ya existan o no en el destino

Alternativamente

RoboForm SOURCE DEST FILE para archivos RoboForm SOURCE DEST para carpetas

No puede especificar que siempre sea un archivo. Si no necesita las otras funciones de xcopy, ¿por qué no solo utiliza una copy normal?

Intereting Posts