¿Cómo puedo copiar un archivo usando comandos de DOS en una estructura de directorio que aún no existe? Necesito poder forzar la creación de la ruta del directorio a la ubicación del archivo de destino si esa ubicación aún no existe.
Por ejemplo, ya hay un archivo.txt en esta ubicación:
C:\file.txt
Y quiero copiarlo a
C:\example\new\path\to\copy\of\file\file.txt
pero en este momento
C:\example\
y todos los subdirectorios pueden o no existir todavía.
Básicamente, estoy buscando un comando "copiar y crear la ruta de destino si es necesario". ¿Cuál recomendaría es la mejor manera de lograr esto?
Windows command line
en el título / cuerpo, junto con las ventanas de etiquetas y la línea de comandos (tenga en cuenta que cmd.exe es un sinónimo de etiqueta de línea de comandos ). La etiqueta ms-dos debe eliminarse; y la etiqueta dos no debe usarse en ningún caso bajo ninguna circunstancia.Respuestas:
Sí, eso es xcopy . Así es como se verá:
Información de XCOPY en
También es posible que desee ver ROBOCOPY , en el kit de recursos XP y estándar en Vista, Windows 7 y Server 2008.
fuente
echo f |
con xcopy para responder este aviso automáticamente.Intenté usar algo como:
Pero me preguntaría si era un archivo o directorio. Como tenía eso en un archivo por lotes con 40000 archivos, no sería práctico. Esta solución solo resuelve parcialmente mi problema: crea la estructura de directorios, pero requiere la interacción del usuario. Encontré la solución a mi problema aquí:
https://stackoverflow.com/questions/4283312/batch-file-asks-for-file-or-folder
Lo que básicamente es agregar un "*" al final del archivo de destino:
EDITAR: como lo señala @romkyns, puede tener resultados no deseados si tiene archivos que tienen el mismo nombre y algo más (como 'file.txt.bak'). En el mismo hilo publicado anteriormente, otra solución que funciona es canalizar "echo f" a su comando:
Donde debería sustituir la "f" por cualquier letra que su sistema use para el archivo, en caso de que la esté usando en otro idioma.
fuente
file.txt.bak
en el directorio, por supuesto. Aún así, esto podría funcionar en algunos escenarios.echo f |
, ya no necesita el seguimiento*
.DOS, ¡guau! De todos modos, usa el comando XCOPY .
fuente
Ya sea que use
copy
oxCopy
, para evitar un errorcopy
o una solicitud dexCopy
, pruebe la existencia de la carpeta necesaria y créelo si es necesario:o combine los comandos con
&&
en una línea de comando:Se puede hacer lo mismo con en
move
lugar decopy
. Aprendí sobre esta técnica de una respuesta de StackOverflow sobre cómo hacerlomove
.fuente