2009-03-26 5 views
0

디렉토리는Windows dir에서 '디자인 별'문제를 해결하는 방법은 무엇입니까? 당신은이 (즉, 디렉토리/B를 결합하면/B

그러나 멋진 파일 만 나열

DIR/X에 대한 자세한 목록을 생성 (날짜, 시간, 크기, longname, 짧은 이름)을 생산/x)/x 스위치는 무시됩니다. 이 동작은 this 페이지마다 의도적으로 설계된 것입니다.

파일의 짧은 이름 만 포함 된 간단한 목록을 요구하는 경우 Microsoft (영문)는 천국 규칙에 위배됩니다.

어떻게이 '디자인'문제를 해결할 수 있습니까?

미리 감사드립니다.

p.s. 이것은 내가 this 질문에 설명 된 것을 얻을 수 있도록 돕는 것입니다. 5 명의 친절한 친구들이 매우 감사하는 답변을 올렸지 만 답변이 없기 때문에 내가 원하는 것을 얻을 수있었습니다.

답변

3

이 시도 완전한 경로 이름 :

:

for /f "usebackq delims=" %X in (`dir /b`) do @echo %~fsX 

자세한 내용은 for 도움말을 참조하십시오

배치 파일에서 이러한 명령을 사용하는 경우 % 표지를 두 번 올려야합니다. 예 :

for /f "usebackq delims=" %%X in (`dir /b`) do @echo %%~nsxX 
+0

괄호를 볼 때 두 명령 모두 실패합니다. milad (1) .mp3 및 milad (2) .mp3가있는 경우이 명령은 milad로 두 개의 항목을 생성하고 그 뒤에 오는 항목을 모두 삭제합니다 (점 및 확장자 : .mp3조차도). dir/x가 MILAD를 생성하는 반면 (~ 1.MP3 및 MILAD (~ 2.MP3) –

+0

긴 파일 이름이 공백 문자로 인해 문제가 발생했습니다. 수정하려면 명령에 대한 수정 사항을 업데이트해야합니다. – Spire

+0

좋습니다. 하지만 약간의 변경이 필요합니다. 첫 번째 확장 기능이 없으므로 확장을 추가하고 echo 명령을 숨 깁니다./f "usebackq delims ="% i in ('dir/b')의 경우 @echo % ~ nxsI – brofield

0

실행 파일을 직접 작성할 수도 있습니다. C#에서 무언가를 채우는 데별로 시간이 필요하지 않습니다. Directory.GetFiles()를 사용하여 디렉토리 목록을 검색하고 각각을 "GetShortPathName()"Win32 함수로 전달하십시오.

이 페이지의 C#에서 GetShortPathName()를 호출하는 방법에 괜찮은 예제가 있습니다 DIR/X 텍스트 파일에 그것을 구문 분석 덤핑 http://csharparticles.blogspot.com/2005/07/long-and-short-file-name-conversion-in.html

1

짧은, 내가 제안하는 것이 무엇인지 모르겠어요. 코드에서 수행중인 모든 작업을 실행할 수 있습니까?

더 복잡한 해결책이지만 perl이나 다른 스크립팅 언어를 사용하여 무언가를 작성하십시오. 또는 돼지 전체로 이동하여 C#에서 코드를 작성하십시오. 당신이 완전 장착 할 경우,

for /f "usebackq delims=" %X in (`dir /b`) do @echo %~nsxX 

을 또는 :

난 당신이 이전 문제에있어 답변의 거의 같은 종류를 얻을 거라고 생각

...

+0

친구에게 필요한 정보입니다. 그는 자신의 시스템에 PHP, 펄, 파이썬이 없습니다 ... –