디스크의 모든 파일을 나열하는 배치 스크립트

디스크의 모든 파일을 나열하는 배치 스크립트

하나의 디스크 파일에 모든 내용을 나열하는 작은 배치 파일을 만들고 싶습니다. 명령은 다음과 같습니다.

TREE L: / F / A> List.txt

하지만 사용자가 처리할 드라이브 문자를 입력하면 결과가 이름과 현재 날짜가 포함된 파일에 저장되기를 바랍니다. 예:

C:\> makelist.bat
Please, insert the drive letter: L
Done!

결과는 example이라는 이름의 파일에 입력되고 List_2017-03-13.txt데스크탑으로 이동되어야 합니다.

스크립트를 생성하려면 어떤 명령을 사용해야 합니까?

답변1

다음 배치는 wmic를 사용하여

  • 로케일/사용자 설정에 독립적인 날짜를 얻습니다.
  • 사용 가능한 드라이브 문자 목록을 가져옵니다.
  • 그리고 문자를 선택하는 선택

:: makelist.bat
@Echo off&SetLocal EnableExtensions EnableDelayedExpansion
set Started=%date% %time%
:: get locale/user-settings independent date
for /f "delims=." %%A in (
  'wmic os get LocalDateTime^|findstr ^^[0-9]'
) do Set "DT=%%A"
Set MyDate=%DT:~0,4%-%DT:~4,2%-%DT:~6,2%

:: gather available drives
Set "Drives="
FOr /f "delims=:" %%A in (
  'Wmic logicaldisk get name^|findstr "^[A-Z]:"'
) DO Set "Drives=!Drives!%%A"

:: choose drive letter
Choice /C %Drives% /M "Select drive letter for tree"
Set /A "Inp=%Errorlevel%,Pnt=Inp-1"
IF %Inp% equ 0   Echo aborted & pause & exit /B 1
If %Inp% equ 255 Echo aborted & pause & exit /B 1
Set "Drive=!Drives:~%Pnt%,1!"

:: do the tree 
Echo %Started% Tree started
Echo Tree %Drive%:\ /F /A  "%UserProfile%\Desktop\Tree_%Drive%_%MyDate%.txt"
     Tree %Drive%:\ /F /A >"%UserProfile%\Desktop\Tree_%Drive%_%MyDate%.txt"
Echo %date% %time% done
timeout -1

샘플 대화 상자:

Select drive letter for tree [C,D,E,G,H,K,M,N,P,Q,R,T,U,V,W,X,Z]?H
2017-03-13 14:17:05,45 Tree started
Tree H:\ /F /A "C:\Users\UserName\Desktop\Tree_H_2017-03-13.txt"
2017-03-13 14:17:13,70 done

Drücken Sie eine beliebige Taste, um den Vorgang fortzusetzen...

답변2

tree2txt.bat:

@tree %1 / F / A > Tree_%1_%date.TxT

용법: tree2txt X:

결과: X:\ 드라이브의 트리를 Tree_X_20170313.TxT라는 파일로 저장

날짜의 출력 형식은 현지 날짜 형식 설정(yyyy-mm-dd 및 기타 형식)에 따라 달라집니다.

관련 정보