
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 というラベルの付いたすべてのディスクにファイルをコピーするように回答を修正しました (これは質問で指定したスペルではありません)。
参考文献
- Windows CMD コマンドラインの AZ インデックス- Windows コマンド ラインに関連するあらゆることに関する優れたリファレンス。
- コピー- 1 つ以上のファイルを別の場所にコピーします。
- wmic- Windows Management Instrumentation コマンド。
- /fの場合- 別のコマンドの結果に対してコマンドをループします。
答え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;
}