2016-08-10 3 views
0

는 내가 PS 명령이 있습니다재귀 디렉토리 목록은

이 내가 그것을 원하지만 한가지주의이 방법을 열거 나에게 디렉토리를 제공하기 위해 노력하고
PowerShell.exe "dir -Verbose -Recurse | Select-Object Mode, Length, Name, Directory | Export-Csv "listing.csv"" 

: 디렉토리 구조 또는 파일 이름이 밖으로 maxes 경우 (나는 그것의 260 문자를 생각합니다) 그것은 결과 CSV 에서이 파일을 나열하지 않으며 그것은 오류를 throw합니다.

누구나 8.3 표기법과 호환되도록 제안이 있습니까? 모든 파일을 가져 오는 유일한 방법이라고 생각합니다.

답변

0

필자는이 번 무리를 다뤘습니다. 8.3 표기법은 파일 이름이 여전히 260자를 넘을 수 있으므로 불행히도 많은 경우에 작동하지 않습니다. 파일 이름을 줄이기 위해 드라이브 마운팅을 사용할 수도 있지만 약간의 고통이 될 수 있습니다. 내가 찾은 가장 좋은 방법은 260 문자 제한이없는 AlphaFS라는 .NET 라이브러리를 사용하여 문제를 우회하는 것입니다. 더 읽을 수 있거나 here을 다운로드 할 수 있습니다. 이전에. NET 클래스로 직접 작업하지 않은 경우 조금 익숙해졌지만 기발한 해킹을 시도하거나 8.3 표기법을 다루는 것보다 훨씬 낫습니다. 어셈블리를로드 한 후에는 dir -verbose -recurse([Alphaleonis.Win32.Filesystem.Directory]::GetFiles((pwd).path,"*","AllDirectories"))으로 바꿉니다. GetFilesGetDirectories

+0

으로 바꾸는 것을 제외하고는 동일한 코드를 사용하는 디렉토리에 대해서만 파일을 가져옵니다. 또 다른 해결 방법은 robocopy와 같은 것을 사용하여 목록을 생성하는 것입니다. 또는 복잡한 API 래퍼 코드를 작성할 수 있습니다. 다행히도이 문제의 끝은 마침내 드러납니다 : https://blogs.msdn.microsoft.com/dotnet/2016/08/02/announcing-net-framework-4-6-2/ (긴 경로 지원). –

+0

나는 진실로이 목표를 달성하는 가장 좋은 방법이므로 답변으로 선택하겠습니다. 불행히도 우리는 너무 적은 수익을 위해 너무 많은 일을 결정한 것처럼 그것을 실행할 수 없습니다. 이 문제와 관련된 복잡성에 대해 알려 주셔서 감사합니다. – VinnyGuitara