¿Mover archivos por lotes a otra carpeta / directorio en Windows?

7

Recibo un mensaje de error en el sentido de que no puedo mover archivos a un solo archivo. No estoy tratando de hacer esto. Lo que estoy tratando de hacer es mover archivos de una carpeta a otra carpeta (almacenamiento provisional) y luego eliminar la carpeta original.

Si me puede mostrar una mejor manera de hacer esto, ya que no lo estoy haciendo correctamente.

Aquí está mi .cmdarchivo:

Y:
move "Y:\ABC_files\*.js" "C:\Documents and Settings\user\Desktop\ABC_Stage\ABC_files\"
move "Y:\ABC_files\*.CSS" "C:\Documents and Settings\user\Desktop\ABC_Stage\ABC_files\"
move "Y:\ABC_files\*.png" "C:\Documents and Settings\user\Desktop\ABC_Stage\ABC_files\"
move "Y:\ABC_files\*.htm" "C:\Documents and Settings\user\Desktop\ABC_Stage\ABC_files\"
move "Y:\ABC_files\*.gif" "C:\Documents and Settings\user\Desktop\ABC_Stage\ABC_files\"
move "Y:\ABC.htm "C:\Documents and Settings\user\Desktop\ABC_Stage\"
rmdir "Y:\ABC_files"
C:\"Program Files"\"App X"\App-IDE.exe -r ABC4.run
jdamae
fuente
¿Puedes publicar el error?
n0pe
Heh, siempre puedes instalar Cygwin, así ganar Bash y luego mover archivos con "mv".
James T Snell
¿Estás seguro de que "C:\Documents and Settings\user\Desktop\ABC_Stage\ABC_files"existe? Obtiene el error que mencionó si no es así porque el símbolo del sistema no sabe que ABC_fileses un directorio y cree que lo está utilizando como el nombre de archivo de destino en una operación de cambio de nombre.
Synetech
Además, ¿por qué no solo usar move "Y:\ABC_files\*" "...ABC_files"? No necesita agregar la barra diagonal al final del directorio de destino, y no puede rdel directorio de origen a menos que mueva todos los archivos de todos modos, por lo que no tiene sentido moverlos selectivamente de esa manera (a menos que mueva diferentes tipos de archivos a diferentes directorios )
Synetech

Respuestas:

5

Personalmente, preferiría XCOPY aquí, ya que tiene más opciones que pueden ser útiles, especialmente si cambia el archivo por lotes y luego elimina el directorio y los archivos antiguos con un interruptor.

También volcaría las comillas a menos que haya un espacio real en la ubicación o nombre del archivo. En su último movimiento, realmente dejó caer una cita, y eso probablemente produciría un error. Su última declaración también es incorrecta: solo pone las comillas alrededor del comando ENTERO antes de los cambios, no partes de él. Agregué los interruptores que considero potencialmente útiles: puede ver qué hace cada uno haciendo una copia xcopy /? en un símbolo del sistema. También me preguntaría si su, en su última copia, si abc.htm está realmente en el directorio raíz ... verifique eso y edite en consecuencia, si es necesario. Por último, asegúrese de editar la parte del usuario para reflejar su nombre de usuario. No sé nada más sobre su última línea, ya que es específica de la aplicación.

Y:
xcopy Y:\ABC_files\*.js "C:\Documents and Settings\user\Desktop\ABC_Stage\ABC_files\"
xcopy Y:\ABC_files\*.css "C:\Documents and Settings\user\Desktop\ABC_Stage\ABC_files\"
xcopy Y:\ABC_files\*.png "C:\Documents and Settings\user\Desktop\ABC_Stage\ABC_files\"
xcopy Y:\ABC_files\*.htm "C:\Documents and Settings\user\Desktop\ABC_Stage\ABC_files\"
xcopy Y:\ABC_files\*.gif "C:\Documents and Settings\user\Desktop\ABC_Stage\ABC_files\"
xcopy Y:\ABC.htm "C:\Documents and Settings\user\Desktop\ABC_Stage\"
rd Y:\ABC_files /s /q
del Y:\ABC.htm
"C:\Program Files\App X\App-IDE.exe" -r ABC4.run
KCotreau
fuente
1

Hay dos soluciones que sugieren lo que quieres hacer. Si desea copiar solo los archivos .js, .css, .htm, etc., elija la primera solución. Si realmente quieres todo en las carpetas de origen, ve por el segundo. Tenga en cuenta que ambos le dan la oportunidad de asegurarse de que todo esté bien antes de eliminar los archivos de origen. Además, se supone que el directorio de destino ya existe.

Solución 1:

for %%f in (js css png htm gif) do (
copy Y:\ABC_files\*.%%f "C:\Documents and Settings\user\Desktop\ABC_Stage\ABC_files"
)

copy Y:\ABC.htm "C:\Documents and Settings\user\Desktop\ABC_Stage"

echo Check that your files copied correctly, then
pause
rmdir /s /q Y:\ABC_files
"C:\Program Files\App X\App-IDE.exe" -r ABC4.run

Solución 2:

xcopy Y:\ABC_files\*.* "C:\Documents and Settings\user\Desktop\ABC_Stage\ABC_files" /s /e

echo Check that your files copied correctly, then
pause
rmdir /s /q Y:\ABC_files
"C:\Program Files\App X\App-IDE.exe" -r ABC4.run
BillP3rd
fuente
Esta es una buena solución. Necesito automatizar esto. Lo probé y está pidiendo indicaciones. ¿Cómo puedo forzar esto?
jdamae
1
Simplemente elimine las declaraciones "echo" y "pause" y agregue "/ Y" a "copy" y "xcopy" para suprimir las indicaciones.
BillP3rd
0

¿Por qué no mover todo el directorio? De esta forma, tiene todos sus archivos copiados con un solo comando sin tener que limpiar nada.

Move Y:\ABC_Files "%userprofile%\desktop\staging"

Nota:% userprofile% es una variable para C: \ documentos y configuraciones \ CurrentlyLoggedOnUser \

En archivos por lotes, escriba estos para lograr la reubicación de archivos:

Move /-y "Y:\ABC_Files" "%userprofile%\desktop\staging"
Gary
fuente
0

Prueba el siguiente comando

move "C:\Documents and Settings\amitrajk\Desktop\New Folder\*.*" "C:\Documents and Settings\amitrajk\Desktop\New Folder\InFolder"
usuario1992594
fuente