ko en ko ko ko ja en en zh en pt ko ko ko te ko en ko nl ko en ko ko en nl ko ko ko ko ko ko ko en ko en ko en ko en ko en ko ko ko ko ko ko ko ko ko ko en ko ko en ko ko en ko es ko ko ko ko fr ko ko en ko ko ko nl ko en ko nl en ko nl ko ko en ko ko nl ko en ko en ko nl ko zh ko en ko ko ko ko ko ko zh en en en en pt fr en en kn en sv fr en en en en en es fr en en en fr ja en en en en en en en en en fi en hu pt hbs_lat ru en en en en pl ko ko ko ko ko ko ko zh en en pt en en en uz en en fr eo sv en en en es en en en en en en ja en it hu ja eo en de en ko ko en en
Windows 명령 프롬프트에서 전체 경로와 파일 크기 만 반복적으로 표시하는 파일 나열 것입니다!) 다음 명령은 - How IT
특정 디렉토리와 하위 디렉토리의 모든 파일에 대한 파일 이름 (전체 경로 포함)과 파일 크기가 포함 된 텍스트 파일을 생성하려고합니다 (예 : 재귀). 이상적으로는 파일 크기가 쉼표를 원하지 않습니다 (그러나 나는 그것들을 해결할 것입니다!)
다음 명령은 파일 크기없이 수행합니다.
C:\Users\Martin\Pictures\Table\original\PC120013.JPG 227298 C:\Users\Martin\Pictures\Table\original\PC120014.JPG 123234 C:\Users\Martin\Pictures\Table\original\PC120015.JPG 932344
나는 이것이 dir틀린 것으로 입증되기를 원하지만 이것이 혼자 사용하는 것이 가능하다고 생각하지 않습니다 . 명령 프롬프트에서 사용할 수있는 명령 만 사용하여 다른 방법이 있습니까?
매우 효율적이지 않습니다 … 많은 파일을 포함하는 폴더에 대해 실행하면 스케치가 될 수 있으므로 작은 폴더에서 먼저 시도하십시오.
대안 # 3 : 경로가 큰 따옴표로 묶인 것을 제외하고 FORFILES가 제 선택입니다.
브라이언이나 다른 전문가들은 더 우아한 솔루션을 가지고 있거나 12 가지 다른 솔루션을 제안 할 수 있지만이 3 가지 작업은 가능합니다. FOR TOKENS를 사용해 보았지만 머리글과 바닥 글을 제거해야 # 1로 되돌아갔습니다. 또한 작은 .bat 파일을 만들고 호출하는 것을 고려했지만 다른 파일이 추가되었습니다 (함수와 마찬가지로 더 큰 유연성을 제공하지만).
공백이있는 디렉토리 및 파일 이름, 200 + 문자 파일 이름, 확장명이없는 파일 이름 및 작은 드라이브의 루트 (시간은 조금만-Brian이 제안한 것처럼 약간 느리게)로 모든 대안을 테스트했지만 Windows 탐색기에서 검색 중이므로 모든 검색 앱을 설치 한 것입니다).
대안 # 1 : FOR / R
Best (?) Brian의 솔루션이 왜 효과가 없는지 알아 내려고 노력하면서 HELP FOR를 살펴보고 / R 접근법을 시도하기로 결정했습니다. (파일 생성은 대안 # 2와 동일합니다.)
@echo off & for /R "c:\deletelater\folder with spaces" %A in (*.*) do echo %~fA %~zA
예-작동 (재귀를 보여주기 위해 위와 다른 디렉토리)
@echo off & for /R "c:\deletelater" %A in (*.*) do echo %~fA %~zA c:\DeleteLater\Name with Spaces.txt 19800676 c:\DeleteLater\NoSpacesLongName.txt 21745440 c:\DeleteLater\Folder with Spaces\2nd Name with Spaces.txt 5805492 c:\DeleteLater\Folder with Spaces\2ndNoSpacesLongName.txt 3870322 c:\DeleteLater\FolderNoSpaces\3rd Name with Spaces.txt 27874695 c:\DeleteLater\FolderNoSpaces\3rdNoSpacesLongName.txt 28726032
대안 # 2 : FOR / F
BrianAdkins의 제안 : @echo off & for /f %a in ('dir /s /b') do echo %~fa %~za
수정 대답 입니다 :
@echo off & for /f "delims=*" %A in ('dir /s /b') do echo %~fA %~zA
더 완전한 파일로 억제 디렉토리와 출력 (추가)와 대답은 :
@echo Results on %DATE% for %CD% >> YourDirFile.txt & echo off & for /f "delims=*" %A in ('dir /s /b /a:-d') do echo %~fA %~zA >> YourDirFile.txt
참고 : “delims = *”는 파일 이름에 허용되지 않는 문자를 지정합니다.
참고 : 두 번째 명령은 / a : -d를 통해 디렉토리를 표시하지 않습니다.
참고 : 다른 변수 이름을 선택할 경우 변수와 변수 매개 변수의 구분을 명확히하기 위해 FOR 변수 이름을 대문자로 만들었습니다.
참고 : OP가 파일에 대한 출력을 요청함에 따라 grins만을 위해 파일에 추가되었습니다.
ECHO의 상태를 실제로 확인하고 재설정해야한다고 가정합니다.
Brian의 제안 된 솔루션은 공백이 포함 된 파일 및 폴더 이름을 처리하지 않습니다 (적어도 Vista 구성에는 해당되지 않음).
(delims 없음; OP 당 디렉토리를 억제하지만 강조하기 위해 파일 이름 앞뒤에 크기가 모두 포함됨)
잘린 이름 및 크기 (6 개 중 4 개 파일이 잘못됨) :
@echo off & for /f %A in ('dir /s /b /a:-d') do echo %~zA %~fA %~zA C:\DeleteLater\Name 21745440 C:\DeleteLater\NoSpacesLongName.txt 21745440 C:\DeleteLater\Folder C:\DeleteLater\Folder C:\DeleteLater\FolderNoSpaces\3rd 28726032 C:\DeleteLater\FolderNoSpaces\3rdNoSpacesLongName.txt 28726032
(파일에 추가되지 않고 화면에 출력되는 메모)
@echo off & for /f "delims=*" %A in ('dir /s /b /a:-d') do echo %~fA %~zA C:\DeleteLater\Name with Spaces.txt 19800676 C:\DeleteLater\NoSpacesLongName.txt 21745440 C:\DeleteLater\Folder with Spaces\2nd Name with Spaces.txt 5805492 C:\DeleteLater\Folder with Spaces\2ndNoSpacesLongName.txt 3870322 C:\DeleteLater\FolderNoSpaces\3rd Name with Spaces.txt 27874695 C:\DeleteLater\FolderNoSpaces\3rdNoSpacesLongName.txt 28726032
대안 # 3 : FORFILES (견적 문제)
이 솔루션은 FORFILES 문서 ( forfiles /?) 의 마지막 두 예제와 똑같습니다 .
FORFILES /S /M *.doc /C "cmd /c echo @fsize" FORFILES /M *.txt /C "cmd /c if @isdir==FALSE notepad.exe @file"
이 예제들을 결합하고 파일에 쓰면 답이 (거의) 생깁니다.
forfiles /s /c "cmd /c if @isdir==FALSE echo @path @fsize" >>ForfilesOut.txt
경로는 출력에서 ​​따옴표로 묶여 있습니다. 또는 전환
여부는 중요하지 않습니다 .
각 디렉토리를 구분하는 빈 줄을 추가하면 IF의 간단한 확장이 될 것입니다.echo onecho off
주의 : 마스크/m *.*를사용하면확장자가없는 파일 (예 : 마지막 파일)이 반환되지 않습니다!
forfiles /s /c "cmd /c if @isdir==FALSE echo @path @fsize >>ForfilesSubOut.txt"OP는 원하는 것이 아니라 때로는 편리한디렉토리의 내용으로 각 디렉토리에 파일을 씁니다.
예-작동합니다 (따옴표로 전체 경로가 있음)
forfiles /s /c "cmd /c if @isdir==FALSE echo @path @fsize" "c:\DeleteLater\Name with Spaces.txt" 19800676 "c:\DeleteLater\NoSpacesLongName.txt" 21745440 "c:\DeleteLater\Folder with Spaces\2nd Name with Spaces.txt" 5805492 "c:\DeleteLater\Folder with Spaces\2ndNoSpacesLongName.txt" 3870322 "c:\DeleteLater\FolderNoSpaces\3rd Name with Spaces.txt" 27874695 "c:\DeleteLater\FolderNoSpaces\3rdNoSpacesLongName.txt" 28726032 "c:\DeleteLater\MoreFiles\A really really long file name that goes on and on 123456789 asdfghjkl zxcvnm qwertyuiop and still A really really long file name that goes on and on 123456789 qwertyuiop and still further roughly 225 characters by now.txt" 447 "c:\DeleteLater\MoreFiles\New Text Document no extension" 0
이 예에는 파일 이름이 매우 긴 추가 디렉토리와 확장자가없는 파일 이름이 포함됩니다.
문제 : 견적의 경로
따라서 OP 예제 당 원하지 않는 따옴표를 제거하고 대안 # 3 : FORFILES를 저장하는 쉬운 방법이 있습니까? (수사적 질문 : 따옴표는 기능이나 결함입니까?)
나는 이것이 여분의 utlity를 요구한다는 것을 알고 있지만, sfk 유틸리티를 사용하여 이것을 간결하게 달성 할 수 있습니다 .
sfk cwd +run -yes "sfk list -size -tab $qfile +toclip" sfk fromclip > C:\_temp\sfk_list_output.txt
( 여기서 sfk 명령 체인을 사용하는 접근 방식이 있습니다 )
powershell "dir | select name,length"
이것은 OP 질문에 부정 행위 일 수 있습니다. 그러나이 문제는 더 이상 최신 Windows 기반 시스템과 관련이 없습니다. Dir 별칭은 논리적 링크를 그리는 데 사용되었습니다.
아래는 네트워크 드라이브에서 너무 많은 공간을 차지하는 기타 비디오 파일을 찾고 결과를 로컬 PC의 텍스트 파일에 쓰는 데 사용한 것입니다.
세 가지 이유로 내 답변이 다소 늦었습니다. 하나, 나는 간결한 답변을 좋아합니다. 둘째,이 한 줄의 스크립트는 네트워크를 포함하여 여러 설정에서 작동했습니다. Brian Adkins의 답변에 따르면 Don Vince의 잠재적으로 모호한 의견에 따라 토큰을 사용하면 파일 이름에 공백이있는 파일 이름의 문제를 무시할 수 있습니다.
for /f "tokens=*" %%a in ('dir H:\*.mov H:\*.avi H:\*.wmv H:\*.mp4 /s /b') do echo %%~fa %%~za >> C:\Temp\VideoList.txt
매우 긴 파일 경로 / 파일 이름 (수백 자)으로도 오류가 발생할 수 있지만 검색이 중단되지는 않습니다. 그러나 경로는 대상에 대해 완전히 탐색되지 않았습니다. 일단 언급하면이 오류를 제거하기 위해 폴더 구조를 더 깊이 시작하여 보상 할 수 있습니다.
이 페이지 ss64 는 dir 명령 의 사용법을 잘 보여주고 모든 스위치, 많은 스위치 조합을 나열하고 적절한 구문의 유용한 예를 보여줍니다. 다양한 Stack Exchange 커뮤니티만큼 포괄적이지는 않지만 명령 줄 / 배치 스크립팅에 익숙해지면 프레젠테이션에 명확한 명확성이 있습니다.
다음 명령으로 이에 도달했습니다.
(for /R "\path\to\directory\" %A in (*.*) do echo %~fA %~zA) | findstr /v "echo"
D:\Users\Natasha>(for /R ".\" %A in (*.*) do echo %~fA %~zA) | findstr /v "echo" D:\Users\Natasha\Flowers_ (12).jpg 118886 D:\Users\Natasha\SomeFolder\data.txt 1241 D:\Users\Natasha\SomeFolder\CS\Counter-Strike_1.6.exe 272645624
PS 이것은 BillR (대체 # 1)의 회신을 기반으로합니다. 그러나 제 경우에는와 함께 중단됩니다 @echo off.
“du”명령이 매우 유용하고 Windows와 Unix에서 모두 작동합니다 (Windows PC에서 Linux 웹 서버로 많은 데이터를 전송할 때 모든 파일이 복사되었는지 확인하는 데 사용됨).
du -ah "C:\your_dir" > "C:\file_list.txt"
15 C:\your_dir/.htaccess 608 C:\your_dir/folder/hello.txt 1.0 C:\your_dir/folder/subfolder/test.txt 1.0 C:\your_dir/folder/subfolder 1.2M C:\your_dir/folder/world.txt 1.2M C:\your_dir/folder 9.0 C:\your_dir/no_file_ending 11 C:\your_dir/sample document 1.txt 684K C:\your_dir/sample document 2 - äöüßÄÖÜáà.txt 1.9M C:\your_dir
그러나 메모장 ++이 아닌 메모장에서 특수 문자 만 올바르게 볼 수 있습니다 (지금은 정확하게 분석 할 시간이없는 ANSI / UTF-8 인코딩이어야 함). 또한 파일 이름 뒤에 크기를 표시하는 솔루션을 찾지 못했습니다. “h”대신 “b”또는 “k”옵션을 사용하여 크기를 바이트 또는 킬로바이트 단위로 표시하십시오. 분석하려는 폴더 외부에서 명령을 실행할 때 문제가 발생했습니다. 따라서 올바른 디렉토리에 명령을 입력하고 (이 예에서는 “C : \ your_dir”) 명령에 지정하는 것이 가장 좋습니다.
이 글은 Superuser 카테고리에 분류되었고 command-line, windows 태그가 있으며 소장 마님에 의해 2022-02-07에 작성되었습니다.
← 고용주의 말을 듣고 CASE 도구를 사용해야합니까? 작성한 코드만큼 좋지 않을 것이라고 생각합니다. 민첩한 데이터를 특정 순서로 유지하면서 Excel 데이터를 1 열에서 8 열로 나누는 방법은 무엇입니까? 셀에서 데이터를 이동해야합니다. a1 →
데스크탑 또는 폴더에서 파일에 대한 링크 만들기 탐색기)가 열려
CLI를 통해 WPA2- 엔터프라이즈 연결에 연결 (데스크탑 없음) 연결에 연결하는 데 필요한 설명을
dnsmasq 순환 루프 오류 어딘가에 구성이없는 것을
“연결 프로그램”목록을 제거 / 변경하려면 어떻게합니까? 하나를 제거하고
저는 관리자입니다. 업무 관계 및 프로그래머와의 의사 소통을 어떻게 개선 할 수 있습니까? [닫은] 5 년 동안 여러
Proudly powered by WordPress