
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 off
y también lo he cambiado If[%%d]==[F:] to If[%%d]==[G:]
.
La salida de wmic logicaldisk get caption, volumename
es:
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
- Un índice AZ de la línea de comando CMD de Windows- Una excelente referencia para todo lo relacionado con la línea cmd de Windows.
- Copiar- Copie uno o más archivos a otra ubicación.
- wmic- Comando de Instrumental de Gestión de Windows.
- para /f- Comando de bucle contra los resultados de otro comando.
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;
}