[컴퓨터] 전체폴더경로( 파일명도 포함)의 길이를 구하는 방법,툴 ;문자열 길이계산-소스코드 포함
정보/기술 > 정보통신
[컴퓨터] 전체폴더경로( 파일명도 포함)의 길이를 구하는..
압축파일
2012.10.08
9페이지
1. 파일명 전체 길이 구하는 유틸 + 경로명 전..
Win XP 이하 모든 윈도우 시스템에서 파일을 만들시 파일길이에 항상 주의를 해야 합니다. 왜냐면 윈도우 XP의 NTFS 파일포멧시스템 같은 경우 파일의 길이는 최대 260자 이하로 만들아야합니다. (FAT32 파일포멧의 경우는 255자일 것입니다.) 만약 C:Data 폴더에 있는 모든자료를 외장하드나 다른하드의 D:Data2009-11-28 로 복사시 C:에 있는 복사할 Data폴더의 원본파일들 중에서 파일길이가 250자 이상인 파일은 옮겨지기는 하나 파일명이 에전 DOS 시절의 8.3 형식으로 바뀌어서 백업이 되는 이상 형상이 발상합니다.
Win XP 이하 모든 윈도우 시스템에서 파일을 만들시 파일길이에 항상 주의를 해야 합니다. 왜냐면 윈도우 XP의 NTFS 파일포멧시스템 같은 경우 파일의 길이는 최대 260자 이하로 만들아야합니다. (FAT32 파일포멧의 경우는 255자일 것입니다.)

만약 C:Data 폴더에 있는 모든자료를 외장하드나 다른하드의 D:Data2009-11-28 로 복사시 C:에 있는 복사할 Data폴더의 원본파일들 중에서 파일길이가 250자 이상인 파일은 옮겨지기는 하나 파일명이 에전 DOS 시절의 8.3 형식으로 바뀌어서 백업이 되는 이상 형상이 발상합니다.

여기서 파일명이란 `파일명+확장자`의 길이가 아닙니다. 이 이유을 알고자 하신다면 아래를 더 읽어 보시면 이해가 가실겁니다.

윈도우 XP는 파일폴더경로명 까지 포함하여 파일명을 255~260자로 제한하고 있다. 그 이상의 파일명은 생성될 수가 없습니다.

증명을 해보자면 NTFS 파일포멧시스템의 윈도우 탐색기에서 파일을 만들때 C: 아래에서 일반 파일을 만들어서 `이름바꾸기`를 실행 후 임의의 문자를 계속 입력 할때 최대 256자 정도만 입력이 되고 그이상은 입력해 봐야 입력이 되지않습니다. 모자라는 4개문자는 C: + NULL이라는 문자가 들어갑니다.

파일명을 260자로 제한을 받을때 `드라이버 문자 + Path경로문자 + 파일이름 + 확장자명 + Null문자 1개` 이렇게 5종류의 총합이 260자를 넘어서는 안됩니다.

※ 참고로 자신의 시스템에서 최대허용가능한 파일길이를 알아보려면 첨부된 파일중 Print_MaxPath.exe를 실행하여 보시면 바로 아실수 있습니다.

그러나 Windows XP라도 같은 XP가 아닙니다.
무슨 말이냐면 보통 윈도가 깔리는 C: 를 FAT32로 포멧을 하느냐 NTFS로 포멧을 하느냐에 따라 한글이 포함된 경로+파일명을 260자 까지도 쓸수 있느냐 아니면 127자 까지만 쓸수가 있느냐가 결정이 됩니다.

즉, FAT32 에서 C: 에서 공백이 없이 한글로만된 파일명을 확장자가 없이 만들때 127자 까지만 만들수 있다는 것입니다.
하지만 NTFS로 포멧을 하였을 경우 한글이 포함되어도 `C:한글파일명` 이와 같이 파일을 만들때 최대 259자 까지 만들수 있습니다. 260이 아닌 259인 이유는 마지막에 Null 이라는 문자가 1개 필요하기 때문입니다.

NTFS 파일포멧은 유니코드라는 문자셋을 사용한다고 하더군요. FAT32는 시스템 문자셋을 사용한다 합니다.
혹시 IE에서 `다른이름으로 저장`을 HTML로 하였을 경우 혹시 260자가 넘는 경우가 발생합니다.

그리고 파일명을 너무 길게 만들었을 경우 그 파일들을 포함하는 최상위 폴더를 다른 하드나 폴더로 백업을 할 경우 최종적으로 전체경로(파일명 포함)의 길이가 동일하면 문제가 안되겠지만 다른 곳으로 백업할 곳의 위치가 가령 D:My_DATA_SCRAP_BackupHTML형식스크랩문서폴더2009년-11월-09일 이렇고 원본의 경로가 C:스크랩 이라고 할때 원본의 폴더 경로 보다 백업할 곳의 경로가 더 길게 늘어나서 최종적으로 원본의 파일들중 250자 정도 되는 것이 있다면 아마 백업이 제대로 되지 않고 또 윈도우 탐색기에서 최상위 폴더를 통째로 백업시 긴파일명 때문에 백업불량으로 에러가 1개라도 날시 이하 모든 파일은 백업이 안되는 불상사가 생길 수 있다(FAT32의 경우임, NTFS의 경우는 에러가 나지않고 모든파일이 다 백업니 되나 길이가 260자를 초과하는 파일은 8.3 형식의 짧은 이름형식으로 백업이 됨). 단 에러 이전에 옮겨진것은 백업이 됨.

XP의 NTFS에서는 윈도ME의 FAT32 보다 한층 부드러워졌지만 필자는 윈도ME를 오랜기간 사용을 해보았는데 인터넷 익스플로러의 즐겨찾기의 길이가 너무 길어서 디스크 검사시마다 걸려서 이름이 변경되어져서 C:로 옮겨지는 경우가 많이 있었다. 그래서 필자는 파일명의 길이에 너무나 민감합니다.

그래서 파일의 전체경로명 포함인 파일명의 길이를 구할 수있는 배치파일을 만들어 보려고 하였으나 문자열의 길이를 구하는 방법을 도저히 찾을 수가 없었습니다.

그래서 고심한 끝에 `트스크립트`를 활용하여 파일명을 구할려고 첨부파일에 vbs 파일과 같이 만들었어나 불편한 점이 하나가 있었다. 그것은 INPUT 입력창이 나타나면 여기에 길이를 구하고자 하는 파일의 전체경로명을 넣어 주어야 한다는 불편이 있다는 것입니다.

실행법은 첨부파일을 받아서 더블클릭하면 됩니다.

그래서 이번에는 C++을 공부하여 보았습니다. C++을 전혀 모르는 것은 아니어서 많이 어려운 것은 아니었습니다.
C++로 만든 실행파일은 아주편리하였습니다. 전용유틸이라 말하여도 전혀 어색한 말이 아닐 것입니다. 이것의 사용법은 먼저 첨부파일에서 exe 파일을 받아서 바로가기를 만들어서 Windows XP 사용자는 탐색기 주소표시줄에서

`%USERPROFILE%SendTO`를 입력후 엔터 하여 이동하여서 그 나타난 폴더에 복사한 바로가기를 붙여넣어준다. (비스타라면 %APPDATA%MicrosoftWindowsSendTo 에 넣어 주면 될것입니다. 필자는 XP여서 테스트해 보진 못하였음.)

이렇게 하면 탐색기에서 아무파일이나 우측클릭하면 `보내기`라는 메뉴에 등록이 된것을 볼수 있습니다.
그럼 이것을 클릭선택해 줍니다. 그러면 자동으로 파일의 길이가 DOS의 CMD 창으로 출력이 되어집니다.

여기서 2가지 종류로 출력이 되는데 두번째 것은 한글 한자를 2글자로 취급하는 시스템 문자셋 방식이고 첫번째 것은 1글자로 취급하는 유니코드 문자셋 방식입니다. 요점 여러분이 필요로 하는 것은 첫번째의 것일 겁니다. 일반적을 요즘은 XP 이상의 OS에서 C:를 NTFS로 포멧을 하기 때문에 첫번째의 값으로 최대허용가능한 파일길이를 알아보면 될것입니다.


참고로 C++을 공짜로 무료 배포하는 곳이 있습니다. 볼랜더라는 외국업체입니다. 마소 다음으로 유명하다고 많이들 아실것 같습니다.

본 게시판의 다른글(http://cafe.naver.com/togetherall/1407)을 보면 상세하게 C++을 사용할 수 있는 방법을 소개하고 있습니다.
배치파일, Batch file, BAT, 도스, DOS
[컴퓨터] 컴퓨터 부팅시간,종료시간 알아내어 .. [컴퓨터공학] PMC xml 만들기
컴퓨터를 이용한 사이버 범죄의 동향 웹소스암호화툴
오피스-엑섹] 각종함수 및 여러가지 사용법 간편한 암호화/복호화 VB 6.0 모듈,소스,데모포함
문자열 필터링(한글, 영문, 숫자) VHDL의모든것
c프로그래밍 실습 - 성적입력 프로그램 c프로그래밍 실습 - printf() 의 다양한 출력형식
[정보보호론] DES알고리즘에 대해 [물리화학실험] STM
컴퓨터를이용한유전체연구 STM32 FAT32(SD카드) 포팅 소스와 회로도
 
모르면 당황하는 데이타 모델..
PLC 기술자료
PLC 기술자료
[보고서] A 시스템 성능 테스..
[컴퓨터] 컴퓨터 부팅시간,종..
[DOS] 중수가 되기 위한 DOS ..