cmd を使用して、指定された名前の USB スティックにファイルをコピーする方法は?

cmd を使用して、指定された名前の USB スティックにファイルをコピーする方法は?

F: ディスクの名前が「Rejepow」の場合、cmd から c:\test\myphoto.jpg を F: にコピーします。

どうすればいいですか?

cmd から不可能な場合は、C++ でそれを実行する方法を説明していただけますか?

OP のコメントより:

を削除して試してみましたが@echo off、変更もしましたIf[%%d]==[F:] to If[%%d]==[G:]

出力は次のようwmic logicaldisk get caption, volumenameになります。

C: 
D: 
E: 
G: REJEPOW

答え1

F: ディスクの名前が「Rejepow」の場合、c:\test\myphoto.jpg を F: にコピーしたい

解決策1:

次のバッチ ファイル (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

解決策2:

次のコマンドラインを使用します。

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

ノート:

  • 質問では、ドライブ F: の場合にのみコピーするように明示的に指定されています。
  • これは間違いだと仮定して、REJEPOW というラベルの付いたすべてのディスクにファイルをコピーするように回答を修正しました (これは質問で指定したスペルではありません)。

参考文献

答え2

あなたのバッチ コードを試してみましたが、機能しませんでした。ただし、コマンド ラインの回答は正しかったので、私が何をしたか推測してみてください。コマンド ラインを実行する C++ プログラムを作成しました。

#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;
}

関連情報