¿Cómo copiar archivos a una memoria USB con un nombre determinado con cmd?

¿Cómo copiar archivos a una memoria USB con un nombre determinado con cmd?

Quiero copiar c:\test\myphoto.jpg a F: si el nombre del disco F: es "Rejepow" de cmd.

¿Cómo puedo hacerlo?

Si es imposible desde cmd ¿podrías explicar cómo hacerlo en c++?

Del comentario de OP:

Lo he probado eliminando @echo offy también lo he cambiado If[%%d]==[F:] to If[%%d]==[G:].

La salida de wmic logicaldisk get caption, volumenamees:

C: 
D: 
E: 
G: REJEPOW

Respuesta1

Quiero copiar c:\test\myphoto.jpg a F: si el nombre del disco F: es "Rejepow"

Solución 1:

Utilice el siguiente archivo por lotes (CopyToRejepow.cmd).

@echo off
setlocal
for /f "tokens=1,2" %%d in ('wmic logicaldisk get caption^, volumename ^| findstr -i "Rejepow"') do (
  copy c:\test\myphoto.jpg %%d
  )
endlocal

Solución 2:

Utilice la siguiente línea de comando.

for /f "tokens=1,2" %d in ('wmic logicaldisk get caption^, volumename ^| findstr -i "Rejepow"') do copy c:\test\myphoto.jpg %d

Notas:

  • Su pregunta especifica explícitamente copiar solo si es la unidad F:.
  • Suponiendo que es un error, modifiqué la respuesta para copiar el archivo a cada disco con la etiqueta REJEPOW (que no es la ortografía que proporcionó en su pregunta).

Otras lecturas

Respuesta2

Probé su código por lotes pero no funcionó, aunque la respuesta de su línea de comando fue verdadera y adivinen lo que hice;) Escribí un programa en C ++ que ejecuta su línea de comando.

#include <iostream>
#include <cstdlib>

using namespace std;
int main() {
system("for /f \"tokens=1,2\" %d in (\'wmic logicaldisk get caption^, volumename ^| findstr -i \"Rejepow\" \') do copy c:\\test\\myphoto.jpg %d);

return 0;
}

información relacionada