
Quero copiar c:\test\myphoto.jpg para F: se o nome do disco F: for "Rejepow" do cmd.
Como eu posso fazer isso?
Se for impossível no cmd, você poderia explicar como fazer isso em c++?
Do comentário do OP:
Eu tentei removendo @echo off
, também mudei If[%%d]==[F:] to If[%%d]==[G:]
.
A saída de wmic logicaldisk get caption, volumename
é:
C:
D:
E:
G: REJEPOW
Responder1
Quero copiar c:\test\myphoto.jpg para F: se o nome do disco F: for "Rejepow"
Solução 1:
Use o seguinte arquivo em lote (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
Solução 2:
Use a seguinte linha 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:
- Sua pergunta especifica explicitamente para copiar apenas se for a unidade F:.
- Supondo que seja um erro, modifiquei a resposta para copiar o arquivo para cada disco denominado REJEPOW (que não é a grafia que você forneceu na sua pergunta).
Leitura adicional
- Um índice AZ da linha de comando do Windows CMD- Uma excelente referência para todas as coisas relacionadas à linha cmd do Windows.
- cópia de- Copie um ou mais arquivos para outro local.
- wmic- Comando de instrumentação de gerenciamento do Windows.
- para /f- Comando de loop em relação aos resultados de outro comando.
Responder2
Eu tentei seu código em lote, mas não funcionou, embora sua resposta de linha de comando fosse verdadeira e adivinhe o que fiz;) Escrevi um programa c++ que executa sua linha 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;
}