"C:\Program Files"와 동일한 단축 이름을 갖도록 C:\에 폴더를 만드는 방법은 무엇입니까?

"C:\Program Files"와 동일한 단축 이름을 갖도록 C:\에 폴더를 만드는 방법은 무엇입니까?

NTFS의 단축 이름은 8.3 파일 이름(<8자 이름>.<3자 확장자>)만 지원하는 DOS 시스템용 호환성 기능입니다. 를 사용하면 현재 디렉터리에 있는 파일/폴더의 짧은 이름을 얻을 수 있습니다 dir /x.

"C:\Program Files"의 단축 이름은 "PROGRA~1"입니다. "PROGRA~1"이 되고 "C:\Program Files"가 "PROGRA~2"가 되도록 폴더 이름을 무엇으로 지정해야 합니까?

"Program Filas", "Program Fil", "Program File"을 시도했지만 소용이 없었습니다. 또한 다음을 사용하여 생성, 수정, 마지막 쓰기 시간을 더 오래된 것으로 설정해 보았습니다.

$(Get-Item "Program Filas").creationtime=$(Get-Date "01/01/2000 00:01 am")
$(Get-Item "Program Filas").lastaccesstime=$(Get-Date "01/01/2000 00:01 am")
$(Get-Item "Program Filas").lastwritetime=$(Get-Date "01/01/2000 00:01 am")

답변1

PROGRA~1해당 이름의 다른 디렉토리가 이미 있는 한 결코 길어지지 않습니다 .

짧은 이름은 다음과 같습니다.지속성 있는– 객체를 생성할 때 선택되고 일반 이름과 마찬가지로 파일 시스템에 저장됩니다. 이름이 할당되면 알파벳 순서나 수정 타임스탬프에 따라 이름이 변경되지 않습니다. (결국 그들은 그래야만 한다.일하다이름이 갑자기 변경되지 않는 것을 포함하는 일반 이름과 같습니다.)

Win32 API에는 다음 기능이 있습니다.파일짧은이름() 설정이를 통해 경로의 8.3 이름을 직접 변경할 수 있으므로 짧은 프로그램을 작성하거나 Python ctypes 등을 사용하여 이 변경을 수행합니다.

("Program Files"의 짧은 이름을 사용자 정의로 변경한 후 프로그램에 필요한 경우 문자 그대로 이름이 지정된 디렉터리를 만들 수 있습니다 PROGRA~1. 알고리즘을 속이기 위해 특별한 이름을 만들 필요가 없습니다.)

또는 "Program Files"의 이름을 "asdf"로 바꾸어 짧은 이름을 확보할 수 있습니다. 그런 다음 디렉터리에서 "PROGRA~1"을 요청하면 실제 이름을 다시 "Program Files"로 바꾸면 ~2가 할당됩니다.

관련 정보