
我想將 c:\test\myphoto.jpg 複製到 F: 如果 F: 磁碟的名稱是 cmd 中的「Rejepow」。
我該怎麼做?
如果從 cmd 不可能,你能解釋一下如何在 C++ 上做到這一點嗎?
來自OP的評論:
我已經嘗試過刪除@echo off
,我也改變了If[%%d]==[F:] to If[%%d]==[G:]
。
的輸出wmic logicaldisk get caption, volumename
是:
C:
D:
E:
G: REJEPOW
答案1
我想將c:\test\myphoto.jpg複製到F:盤,如果F:盤的名稱是“Rejepow”
解決方案一:
使用下列批次檔 (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 cmd 行相關的所有內容的絕佳參考。
- 複製- 將一個或多個檔案複製到另一個位置。
- 沃米克- Windows 管理規範命令。
- 對於 /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;
}