여기에 내용이 누락되었지만 볼 수 없습니다. 나는 그것이 변수가 호출되는 방식으로 뭔가를 가질 것이라고 확신하지만 그것을 얻지는 못한다.Diskpart 출력의 문자열 비교
내 목표는 파일을 SD 카드에서 이동식 드라이브 쌍으로 복사하는 범용 스크립트를 작성하는 것입니다. 키는 연결된 드라이브와 드라이브 문자에 관계없이 백업이 일관성이 있는지 확인합니다.
필자가 원했던 일종의 스크립트를 함께 자필했지만 필자는 세부 사항을 놓치고 있습니다.
아래 코드는 DiskPart를 사용하여 연결된 드라이브의 파일을 만드는 데이터 덤프를 수행합니다. 그런 다음 파일을보고 드라이브 레이블을 대상으로 사용합니다. 드라이브 레이블에 따라 원본 또는 대상으로 표시됩니다.
조각 아래
내가 DOS를 사용하고 있습니다 "(부분 라벨"CAMX "있는 드라이브를 찾고) 문자열 비교 문자열을 대체 IF의 시점까지 작동하고, 다른 경우 즉,이다 당신이 원하는 것 "이 접근하므로"NEQ "연산자를 사용하십시오.
현재 NEQ는 모든 결과를 볼 수 없으며 동등하지 않습니다. 연산자를 EQU로 변경하면 반환 값이 없습니다.
비교되는 문자열에 대한 두 개의 "반향"은 디버그입니다. 이 값들을 보면, 나는 그들이 기대하는 것과 matchvar : CAMX =! 일하고있다.
여기 여기에 코드를
@echo off
cls
title "Detecting device drive letters..."
setlocal enabledelayedexpansion
echo Detecting device drive letters...
:: Create a script file to be used by diskpart and then dump all volumes to a temp file
echo list volume > %systemdrive%\ListDrives.tmp
diskpart /s %systemdrive%\ListDrives.tmp > %systemdrive%\CurrentDrives.tmp
:: Parse the output from 'Diskpart> list volume' for available volumes
echo Checking drive IDs
FOR /F "tokens=2-4" %%a IN (%systemdrive%\CurrentDrives.tmp) DO (set matchvar="%%c" & set comparevar=!matchvar:CAMX=! & IF /I !comparevar! NEQ !matchvar! @echo Drive %%b was found to be %%c and will SOURCE...%%a & @echo !matchvar! & @echo !comparevar!)
있어 내가
Microsoft DiskPart version 10.0.10586
Copyright (C) 1999-2013 Microsoft Corporation.
On computer: NEWGLOOMWIN10
Volume ### Ltr Label Fs Type Size Status Info
---------- --- ----------- ----- ---------- ------- --------- --------
Volume 0 D DVD-ROM 0 B No Media
Volume 1 E Macintosh H HFS Partition 231 GB Healthy
Volume 2 C BOOTCAMP NTFS Partition 721 GB Healthy System
Volume 3 F TEAMXCAMX FAT Removable 1937 MB Healthy
Volume 4 G TEAM1DRIVE3 NTFS Partition 3725 GB Healthy
생각납니다 조언은 절상 Diskpart는 파일입니다.
편집 : 근본적으로 잘못된 것이 있습니다. @abelenky에 의해 제안 된 문자열 비교에 대한 올바른 구문을 사용하여 코드를 변경하고 같음 연산자를 사용하여 일치하는 문자열에 넣으면 여전히 모든 값을 반환합니다. "IF"는 무시되지 않지만 변수 값은 평가되지 않는 것처럼 보입니다.
IF /I "TEAMXCAMX" == !matchvar!