2015-02-04 4 views
0

"빈"또는 다른 문자열이 포함 된 파일을 웹 서비스에서 다운로드하려고합니다. "비어있는"경우 파일을 삭제하고 싶습니다. 그렇지 않으면 파일을 옮기고 이름을 변경해야합니다.Windows 박쥐 파일 : 콘텐츠 다운로드 및 비교

이 작업을 수행하려면 wget.exe를 사용하여 파일을 다운로드합니다. 이는 완벽하게 작동합니다.

wget "myurl.com/webservice" -O output.txt  

@echo off 
set /p Build=<output.txt  

if %Build% == "empty" (ECHO "EMPTY")  

PAUSE 

테스트 시나리오 : 내부 빈 문자열로 경우 output.txt라는 파일을

이 내가 가진 것입니다.

어떻게 수정하고 내용을 읽을 수 있습니까? set/p를 사용하면 작동하지 않습니다.

미리 감사드립니다.

답변

2
@echo off 
for /f "delims=" %%a in (output.txt) do echo("%%a" 

이 파일에 포함 정확하게 무엇을 보여 주어야한다 최상 (가정이 한 줄입니다 - ... 더 이상있을 경우이 아닌 모든 빈 줄이 표시됩니다) 하지만"contained in quotes". 따옴표가있는 리터럴 문자열을 구분하는 문자의 사용 여부를

이 문자열이 정확히 따라서 비교되는에 대해 문자열, 길잃은 공간이 나타날 수 있음을

for /f "delims=" %%a in (output.txt) do if "%%a"=="empty" (echo EMPTY) 

주 일치해야합니다, 그것은 분명하지 않다 파일에 포함되어 있으며 대소 문자가 일치하지 않는 경우 if /i "%%a"=="empty"...이 필요합니다./i는 "대소 문자를 구분하지 않는 스위치"입니다.

1

두 가지를 묻는 것 같습니다. 행의 파일을 empty으로 이동 시키려면 모두 findstr을 사용할 수 있습니다. 성공하면 파일을 삭제하십시오. 실패하면, 그것을 옮기십시오.

wget "myurl.com/webservice" -O output.txt 

@echo off 

findstr /i "^empty$" output.txt >NUL && (
    del output.txt 
) || (
    move output.txt "path\to\file.txt" 
) 

이동하기 전에 output.txt의 내용을 조작하려면 변경하려는 항목에 대한 자세한 내용이 필요합니다. output.txt의 내용을 줄 단위로 읽으려면 Magoo가 제안한 for /f 루프를 사용하는 것이 좋습니다.