2012-01-30 2 views
0

1GB 이상의 여유 공간이있는 찾기 파티션을 찾는 스크립트를 실행해야합니다. 인쇄는 모든 availble을 파티션을 log.txt에 다른 스크립트에창 배치 파일 : 단어가있는 단어 찾기

@echo on 
set isComplete = 0 
set last = 0; 

DISKPART /s .\script.txt > .\log.txt 

for /f "tokens=3" %%f in ('.\log.txt') do (
FIND /C /I "GB" .\log.txt > %isComplete% 
IF %isComplete% > 0 
%last% = %%f 
) 

분열하다 전화 : 나는 다음과 같은 썼다. Log.txt의 같음을 :

파티션 ### 형 크기 오프셋


파티션 1 차 74기가바이트 1,024킬로바이트

파티션 2 차를 300메가바이트 74기가바이트

지금, 어느 parttion에 1GB 이상의 여유 공간이 있는지 확인하고 싶습니다. 그래서 나는 적 "GB"단어를 찾습니다.

하지만 항상 얻을 수 있습니다.> "예기치 않은 시간이었습니다." 오류. 문제가 무엇인지 파악하는 데 도움이 될 수 있습니까? 또는 저에게 더 나은 방법을 제안합니까?

감사합니다.

답변

0

아야.

많은 문제가 있습니다.

LIST PARTITION의 출력은 각 파티션의 크기와 오프셋을 제공합니다. DISKPART에 익숙하지는 않지만 크기가 파티션 내의 여유 공간을 제공한다고 생각하지 않습니다. 파티션의 크기를 나타내지 만 기존 파일에 이미 할당 된 공간의 양을 알려주지 않습니다. 오프셋은 파티션의 위치를 ​​나타냅니다. 그래서 당신은 가야에서 잘못된 발을 벗어났다.

그런데 스크립트에는 몇 가지 주요 구문 문제가 있습니다.

FOR 문에서 파일을 읽으려고하는 것처럼 보입니다. 그러나 파일 이름을 작은 따옴표로 묶었으므로 구문이 명령을 실행하려고 시도하고 있습니다. 명령 행에서 HELP FOR을 입력하고 FOR 명령에 대한 설명을주의 깊게 읽어야합니다. 파일 이름은 다음

for /f "usebackq tokens=3" %%f in ("file name with spaces.txt") do (

귀하의 라인 FIND /C /I "GB" .\log.txt > %isComplete%은 FIND 명령의 출력을 작성하려고합니다, (당신이하는 어떤되지 않음) 공백이 포함 된 경우

당신은 어느

for /f "tokens=3" %%f in (log.txt) do (

원하거나 "0"이라는 이름의 파일에 저장하십시오. 나는 그것이 당신의 의도라고 의심합니다. FIND 명령은 검색 문자열 "GB"를 포함하는 모든 행의 전체 텍스트를 인쇄합니다. 일치하는 줄이 하나라도 있으면 ERRORLEVEL을 0으로 설정하고 일치하는 줄을 찾지 못하면 1로 설정합니다. 네가하려는 일을 잘 모르겠다.

IF 문은 엉망입니다. 여기서 다시 명령 행에서 HELP IF을 입력하고 사용법을 자세히 읽어야합니다.기존 시도 당신은 당신이하지 않는 중 하나를 사용하여 행 계속 ^ 또는 괄호 여러 줄을 건너 IF 문을 확장 할 수 없습니다 많은 오류

  • 있습니다. 당신은 비교 연산자로 >을 사용할 수 없습니다

  • , 당신은 당신이 만들려고 노력 정확히 비교 알아낼 수 없습니다 GTR

  • 를 사용해야합니다.

전체적인 임무가 무엇인지 이해할 수 없기 때문에 올바른 방향으로 어떻게 가리키게 될지 모르겠다. 아마도 당신이하려는 일을보다 자세하게 기술한다면, 누군가는 그 일을 성취 할 수있는 스크립트를 제공 할 수 있으며, 그 예에서 배울 수 있습니다.

DISKPART는 잠재적으로 위험한 도구입니다. 나는 당신이 LIST 명령으로 어떻게 해를 끼칠 수 있는지 보지 못한다. 그러나 잘못 사용하면 다른 명령이 문제를 일으킬 수있다. 배치 스크립팅의 기초를 배우는 동안 DISKPART를 피하는 것이 좋습니다. 배치 프로그래밍 실수로 인해 실수로 하드 드라이브가 손상되는 것을 싫어합니다.