Windows 명령 행 dir 명령 : 8.3 형식으로 파일 이름 만 표시 하시겠습니까?


11

"dir / w"또는 "dir / b"는 파일 이름 만 표시한다는 것을 알고 있습니다. "dir / x"또는 "dir / X"는 8.3 형식을 표시하지만 긴 형식 파일 이름, 날짜 및 크기와 같은 다른 모든 정보를 함께 표시합니다.

dir파일 이름 만 표시하고 (날짜 또는 크기는 표시하지 않음) 8.3 형식으로 표시하는 을 호출 할 수 있습니까?

답변:


10
for /R %A in (*.*) do @echo %~nsA %~nA

서브 디렉토리없이 :

for %A in (*.*) do @echo %~nsA %~nA

숨겨진 파일을 추가하십시오.

for /F "tokens=*" %A in ('dir /B/A:-/S *') do @echo %~nsA %~nA

서브 디렉토리없이 :

for /F "tokens=*" %A in ('dir /B/A:- *') do @echo %~nsA %~nA

그것을 증명하는 출력을 포함시킬 수 있습니까?
barlop

첫 번째 명령의 결과를 텍스트 파일로 가져 오려면 어떻게해야합니까? "사용자 매핑 섹션이 열려있는 파일에서 요청한 작업을 수행 할 수 없습니다."라는 오류가 발생합니다.
bdb484

3

8.3 이름 만 표시하고 다른 것은 표시하지 않으려면 "dir / -n"을 사용하면 각 줄의 시작 부분에 8.3 이름이 표시됩니다. 참고 : 파일 이름과 확장자가 마침표가 아닌 공백으로 구분됩니다.

C:\Users\User>dir /-n
 Volume in drive C has no label.
 Volume Serial Number is 5C60-1B61

 Directory of C:\Users\User

.             <DIR>             01/28/2015  11:26 PM
..            <DIR>             01/28/2015  11:26 PM
Contacts      <DIR>             12/27/2014  04:46 PM
Desktop       <DIR>             01/25/2015  05:06 PM
DOCUME~1      <DIR>             01/27/2015  10:20 PM
DOWNLO~1      <DIR>             01/27/2015  10:10 PM
FAVORI~1      <DIR>             12/27/2014  04:46 PM
GOOGLE~1      <DIR>             01/28/2015  02:08 AM
Links         <DIR>             01/25/2015  05:06 PM
Music         <DIR>             12/27/2014  04:46 PM
Pictures      <DIR>             12/27/2014  04:46 PM
SAVEDG~1      <DIR>             12/27/2014  04:46 PM
Searches      <DIR>             12/27/2014  04:46 PM
TESTIN~1 TXT                  8 01/28/2015  10:32 PM
TESTIN~2 BAT                175 01/28/2015  11:26 PM
TESTIN~1 BAT                164 01/28/2015  11:26 PM
UNIGIN~1      <DIR>             10/28/2014  07:01 PM
Videos        <DIR>             12/27/2014  04:46 PM
               3 File(s)            347 bytes
              16 Dir(s)  3,896,034,717,696 bytes free

그러나 배치 파일 의 for 루프 내에서 "dir / -n"을 사용한 다음 처음 12 자의 하위 문자열추출 하여 나머지 각 줄을 제거 할 수 있습니다. 예 :

@echo off
setlocal EnableDelayedExpansion

for /f "skip=7 tokens=*" %%i in ('dir /-n ^| find /v "File(s)" ^| find /v "Dir(s)"') do (
   set x=%%i
   echo !x:~0,12!
)

"skip = 7"은 파일이나 디렉토리 이름이 아닌 처음 7 행을 건너 뛰고 "dir / -n"의 출력은 두 개의 find 명령을 통해 파이프되어 "dir / -n에 의해 생성 된 마지막 두 행을 제거합니다. "(파이프 기호"| " 는"^ " 로" 이스케이프 처리 "되어야합니다. 하위 문자열 추출은 배치 파일의 for 루프에서 발생하므로"setlocal EnableDelayedExpansion "이 필요하고"! "는"! "와 함께 사용해야합니다. "%"가 아닌 변수 x. 위의 예에서 배치 파일 실행 결과는 다음과 같습니다.

C:\Users\User>testing456
Contacts
Desktop
DOCUME~1
DOWNLO~1
FAVORI~1
GOOGLE~1
Links
Music
Pictures
SAVEDG~1
Searches
TESTIN~1 TXT
TESTIN~2 BAT
TESTIN~1 BAT
UNIGIN~1
Videos

Nitpick : 하나 이상의 공백. abc.txt실제로 작동 하는 파일을 작성 하십시오. 그런 다음 재미있게라는 파일을 만듭니다 abc.docx.
CVn

0

한 시간 동안 이것을 가지고 난 후에 나는 다음을 생각해 냈습니다.

dos 프롬프트에서 :

for /F "tokens=*" %A in ('dir /B/A:-/S c:\Windows') do (@echo %~sA>> "%temp%\file_list_8dot3.txt")

.BAT 또는 .CMD 파일에서 :

for /F "tokens=*" %%A in ('dir /B/A:-/S c:\Windows') do (@echo %%~sA>> "%temp%\file_list_8dot3.txt")

참고 : 이 스크립트는 여전히 긴 파일 이름에 문제가 있지만 계속해서 8dot3 텍스트 파일을 만들어 다른 배치 파일로 펌핑 할 수 있습니다.

다음은 내 전체 테스트 .Bat 파일입니다.

@echo off
cls

set ll=%temp%\file_list_8dot3.txt

if exist "%ll%" del "%ll%"
for /F "tokens=*" %%A in ('dir /B/A:-/S %temp%') do (@echo %%~sA>> "%ll%")

start /wait notepad "%ll%"

if exist "%ll%" del "%ll%"

0

모든 하위 디렉토리에 파일을 나열하려면 다음 중 하나를 시도하십시오.

for /d /r %i in (*.*) do dir "%i" /B > %i/test.txt

 

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.