배치 파일 : 파일을 읽는 방법?
배치 파일에서 파일 (텍스트 또는 바이너리)을 어떻게 읽을 수 있습니까? 바이너리 모드 또는 텍스트 모드로 읽는 방법이 있습니까?
for 명령을 사용할 수 있습니다.
FOR /F "eol=; tokens=2,3* delims=, " %i in (myfile.txt) do @echo %i %j %k
유형
for /?
명령 프롬프트에서. 또한 ini 파일을 구문 분석 할 수 있습니다 !
NT 스타일 cmd.exe에서 다음을 사용하여 텍스트 파일 줄을 반복 할 수 있습니다.
FOR /F %i IN (file.txt) DO @echo %i
자세한 내용을 보려면 명령 프롬프트에 "help for"를 입력하십시오. (사용중인 "DOS"에서 작동하는지 알 수 없음)
FOR-LOOP은 일반적으로 작동하지만 몇 가지 문제가 있습니다. FOR는 빈 줄을 허용하지 않으며 ~ 8190 이상의 줄은 문제가 있습니다. 확장은 지연된 확장이 비활성화 된 경우에만 안정적으로 작동합니다.
CR / LF 대 단일 LF의 감지도 약간 복잡해 보입니다.
또한 NUL 문자는 FOR-Loop이 즉시 읽기를 취소하므로 문제가 있습니다.
따라서 직접적인 이진 읽기는 거의 불가능 해 보입니다.
빈 줄의 문제는 트릭으로 해결할 수 있습니다. findstr 명령을 사용하여 각 줄에 줄 번호를 붙이고 읽은 후 접두사를 제거합니다.
@echo off
SETLOCAL DisableDelayedExpansion
FOR /F "usebackq delims=" %%a in (`"findstr /n ^^ t.txt"`) do (
set "var=%%a"
SETLOCAL EnableDelayedExpansion
set "var=!var:*:=!"
echo(!var!
ENDLOCAL
)
활성화하고 장애인 지연 확장 사이에 토글이 켜지지입니다 같은 문자열을 가진 안전 사용에 대한 !
나 ^^^xy!z
.
그 라인 set "var=%%a"
은 DisabledDelayedExpansion으로 만 안전 하기 때문입니다. 그렇지 않으면 느낌표가 제거되고 캐럿이 (보조) 이스케이프 문자로 사용되며 제거됩니다.
그러나 변수를 사용하여 var
만 안전 EnabledDelayedExpansion 도 같이, call %%var%%
같은 콘텐츠와 함께 실패합니다 "&"&
.
편집 : set / p 변형 추가를 사용
하여 파일을 읽는 두 번째 방법이 있습니다 set /p
. 유일한 단점은 줄당 ~ 1024 자로 제한되고 줄 끝에서 제어 문자를 제거한다는 것입니다.
그러나 장점은 지연된 토글이 필요하지 않고 변수에 값을 저장하는 것이 더 쉽다는 것입니다.
@echo off
setlocal EnableDelayedExpansion
set "file=%~1"
for /f "delims=" %%n in ('find /c /v "" %file%') do set "len=%%n"
set "len=!len:*: =!"
<%file% (
for /l %%l in (1 1 !len!) do (
set "line="
set /p "line="
echo(!line!
)
)
육각 표현으로 "바이너리"를 읽기 위해
당신은 볼 수 있었다 SO : 배치 파일을 사용하여 HEX 표현으로 바이너리 파일을 변환
매우 쉬운 방법 중 하나는 다음 명령을 사용하는 것입니다.
set /p mytextfile=< %pathtotextfile%\textfile.txt
echo %mytextfile%
이렇게하면 텍스트 파일의 첫 번째 텍스트 줄만 표시됩니다. 다른 방법은 다음 명령을 사용하는 것입니다.
type %pathtotextfile%\textfile.txt
그러면 텍스트 파일의 모든 데이터가 화면에 표시됩니다. 도움이 되었기를 바랍니다!
Well theres a lot of different ways but if you only want to DISPLAY the text and not STORE it anywhere then you just use: findstr /v "randomtextthatnoonewilluse" filename.txt
Corrected code :
setlocal enabledelayedexpansion
for /f "usebackq eol= tokens=* delims= " %%a in (`findstr /n ^^^^ "name with spaces.txt"`) do (
set line=%%a
set "line=!line:*:=!"
echo(!line!
)
endlocal
pause
Use:
set /p var=< file.ext
It's the simplest way to do it works on most versions of batch.
A code that displays the contents of the myfile.txt file on the screen
set %filecontent%=0
type %filename% >> %filecontent%
echo %filecontent%
if you want just to display it on cmd, you can use this :
cat myfile.txt
참고URL : https://stackoverflow.com/questions/206114/batch-files-how-to-read-a-file
'IT story' 카테고리의 다른 글
Html.Textbox VS Html.TextboxFor (0) | 2020.09.03 |
---|---|
Windows에서 깊은 node_modules 구조로 Node.js 애플리케이션을 배포하는 방법은 무엇입니까? (0) | 2020.09.03 |
페이지의 메모리 사용량을 찾는 jQuery 또는 javascript (0) | 2020.09.03 |
바이너리 트리를 구현하는 방법? (0) | 2020.09.03 |
git add. (0) | 2020.09.03 |