2014-12-04 1 views
1

USB 드라이브 (일반적으로 하나의 드라이브)를 나열하는 배치 파일을 만든 다음 드라이브에 CD를 넣거나 드라이브에서 내용을 복사합니다.일괄 목록 USB 드라이브 및 콘텐츠 복사

wmic를 사용하여 드라이브를 나열하려고하는데 드라이브 문자가 나타납니다. 그러나 wmic에서 얻은 정보를 사용하여 cd 명령을 실행하는 방법을 알지 못합니다.

WMIC 명령을

wmic volume where "drivetype=2" get driveletter /format:table | findstr : 

답변

0

가 왜 그런 다음 디스크를 나열 USB 드라이브를 필터링하고 거기에서 갈 PowerShell을 사용하여?

권장 더 읽기 : http://blogs.technet.com/b/heyscriptingguy/archive/2013/08/26/automating-diskpart-with-windows-powershell-part-1.aspx

PowerShell 스크립트 : https://gallery.technet.microsoft.com/DiskPartexe-Powershell-0f7a1bab

그 명령의 일부를 시도하고 당신과 당신의 파워 쉘 시도를 수행 할 작업에 답장 우리가 그것을 수정 도움이됩니다. 처음에는

0

, 우리가 당신의 wmic 명령을 조금 수정할 수 :

wmic VOLUME WHERE (DriveLetter^>"" AND DriveType=2) GET DriveLetter /VALUE 

DriveLetter>"" 부분은 드라이브 문자가없는 모든 볼륨을 제거하기위한 것입니다.

루프에서 실제 드라이브 문자를 얻을 for /F를 사용하여 다른 작업을 위해 이것을 사용하려면

for /F "tokens=2 delims==" %%V in (' 
    wmic VOLUME WHERE ^(DriveLetter^^^>"" AND DriveType^=2^) GET DriveLetter /VALUE 
') do for /F "delims=" %%L in ("%%V") do (
    echo current drive: %%L 
    rem change to the root of the drive temporarily: 
    pushd %%L\ 
    rem do your actions here, like `copy` for example (give true destination!): 
    copy *.* nul 
    rem change back to previous directory: 
    popd 
) 

여러 특수 문자가 for /F 명령 내에서 사용할 때 이스케이프 할 필요가; 추가 ^자를 설명합니다.

실제로는 외부가 wmic 출력을 처리하는 두 개의 중첩 된 for /F 루프가 있습니다 (자세한 내용은 for /? 참조). wmic은 문제를 일으킬 수있는 추가 캐리지 리턴을 출력하므로 작은 트릭을 사용했습니다. 다른 하나의 루프에 다른 for /F 루프를 중첩 시켰습니다.이 루프는 외부 루프의 반복마다 정확히 한 번 반복됩니다.

내부 샘플 copy 명령 대신 다른 명령을 사용하여 물론 다른 동작을 수행 할 수 있습니다.