2017-12-19 6 views
3

내가 eachothers의 크기를 비교하는 두 파일의 크기를 검색하기 위해 노력하고있어 공간을 포함하는 파일을.윈도우 CMD : 루프에 대한 자신의 경로

SET pathToFile1="C:\Program Files\file1ToCompare" 
SET pathToFile2="C:\Users\file2ToCompare" 

FOR /F "usebackq" %%A ('%pathToFile1%') DO SET file1Size=%%~zA 
FOR /F "usebackq" %%B ('%pathToFile2%') DO SET file2Size=%%~zB 

IF %file1Size% LSS %file2Size% (
    :: do things 
) 

두 번째 파일의 크기가 올바르게 설정되어 있지만 첫 번째 파일의 크기는 검색되지 않습니다 문제는 두 파일 중 하나가 자신의 경로에 공백을 포함,이다, 코드는 같다 ... 지금은 하루에 대한 답을 찾고 있었어요,하지만 (이 경우 죄송 어쩌면 내가 제대로 찾고 있지 않다) 하나

당신의 크기를 얻을 생각을 가지고 있습니까을 찾을 수 없습니다 첫 번째 파일?

+0

'/ F "usebackq delims ="FOR %% (...'참조 HTTPS에 A : // ss64 .com/nt/for_f.html – JosefZ

답변

1

파일에서 읽거나 직접 지정한 하나 이상의 문자열을 구문 분석하기위한 옵션을 사용하지 마십시오. 백그라운드에서 별도의 명령 프로세스에서 실행 된 명령의 캡처 된 출력에서 ​​직접 읽을 수도 있습니다.

사용은 지정된 파일을 처리하는 옵션없이에 대한 명령. 더 나은 이유 How to set environment variables with spaces?

SET "pathToFile1=C:\Program Files\file1ToCompare" 
SET "pathToFile2=C:\Users\file2ToCompare" 

IF NOT EXIST "%pathToFile1%" GOTO :EOF 
IF NOT EXIST "%pathToFile2%" GOTO :EOF 

FOR %%A IN ("%pathToFile1%") DO SET "file1Size=%%~zA" 
FOR %%B IN ("%pathToFile2%") DO SET "file2Size=%%~zB" 

IF %file1Size% LSS %file2Size% (
    rem do things 
) 

읽기 대답은 구문 set "variable=value"을 사용하고 따옴표 하나 이상의 환경 변수 참조를 포함하여 전체 문자열을 묶어야합니다. Where does GOTO :EOF return to?

읽기 다음 해답은 두 IF 명령이 첫 번째 파일 SET "file1Size="SET "file1Size=%%~zA" 결과 file1Size 각각 FOR 명령 행 후에 삭제 정의되지 않은 환경 변수를 의미 존재하지 필요하다.

file1Size 또는 file2Size 중 하나가이 명령 라인에 도달에 존재하지 않는 경우 때문에 구문 오류의 배치 파일 처리의 출구 초래 두 개의 파일 크기를 비교 IF 조건.

Windows 명령 인터프리터는 IF 조건에 2 GiB 미만의 파일 크기 만 처리 할 수 ​​있습니다.

사용 된 명령과 그 작동 방법을 이해하려면 명령 프롬프트 창을 열고 다음 명령을 실행하고 각 명령에 대해 표시된 모든 도움말 페이지를 모두주의 깊게 읽어야합니다.

  • for /?
  • goto /?
  • if /?
  • rem /?
  • set /?