Tạo 1 mục lục cho các file trong 1 thư mục bằng lệnh cmd

Administrator


Administrator
Chúng ta có 1 thư mục với nhiều file và thư mục con . Dể thống kê tên tất cả các thứ cho ra 1 list text .
Chỉ cần chạy 1 file.bat với nội dung đơn giản như sau :
dir /b > mucluc.txt
Mở notepad viết lệnh trên lưu lại với tên mucluc.bat , copy file bat vào thư mục nào cần tạo mục lục , chạy file bat nó sẽ cho ta 1 file text với đầy đủ các tên .
Nhược điểm lớn nhất mình chưa biết khắc phục là nó ko hổ trợ unicode (tên file có dấu tiếng Việt bị lỗi )
Chúc tất cả vui với trò chơi này




Thêm lệnh "chcp 65001" sẽ dùng được unicode :D
Mã:
chcp 65001
dir /b > mucluc.txt


Hay quá , bạn có thể thêm 1 lệnh gì đó để khi xuất file text nó tự đánh số thứ tự luôn càng tiện lợi hơn nữa :)
Chịu khó học btach script để cho cho xử lý chuyên nghiệp hơn với các tính huống khác nhau

Còn code trên dir /b>list.txt lấy luôn cả tên folder và tên file danhmuc.txt và file batch vô luôn kêt quả

listfile.cmd (đánh số thứ tự)
Mã:
@echo off
cls
title Get list filename on directory
setlocal enableextensions enabledelayedexpansion
color 1f
mode con lines=40 cols=100

if exist list.txt del list.txt
set /a count=0
set scanfolder=%cd%

echo.
set /p scanfolder=  Path (default current directory):
echo.

cls
echo.
echo   Current: !scanfolder!
echo.
echo   Process:
echo.

if not exist "!scanfolder!" goto miss

for /f "tokens=*" %%i in ('dir /b "!scanfolder!"') do (if not "%%i" == "listfile.cmd" (if not "%%~xi" == "" (set /a count+=1
echo     +^) !count!. %%i
echo !count!. %%i>>list.txt
)
)
)

echo.
echo     Output: list.txt
echo.

goto end

:miss
echo     Directory is missing
echo.

:end
echo   Press any key to exits
pause 1>nul
Trong tệp listfile.cmd
Bổ sung thêm lệnh:
Mã:
chcp 65001
vào sau câu lệnh:
Mã:
mode con lines=40 cols=100
thành:
Mã:
mode con lines=40 cols=100
chcp 65001
là thành công mỹ mãn.
:sogood:

Sửa thành chcp 65001 1>nul cho đẹp

Vẫn chưa hài lòng cho lắm việc hiển thị tên Unicode trong Command Prompt trên XP (Mặc dù đã chuyển sang Font Lucida Console nhưng Font vẫn chưa được chuẩn với các Kí tự có dấu Tiếng Việt cho lắm)

cmdutf8.cmd (kịch bản tự đông patch cmd.exe cho XP, download thêm file bwpatch.exe để chung thư mục, Win 7 trở lên không cần patch, sau khi patch, lưu file với Encoding: ANSI, nếu lưu UTF-8 vẫn chạy nhưng echo off sẽ không còn hiệu lực)
Mã:
@echo off
cls
title Patching cmd.exe XP fix chcp 65001
setlocal enableextensions enabledelayedexpansion
color 1f
mode con lines=40 cols=100

echo.
echo   Process:
echo.
echo     +^) patch cmd.exe with chcp 65001 ^(cmdutf8.exe^)
echo.

echo # Patch XP's CMD.EXE ^(5.1.2600.5512^) to work with UTF-8 batch files.>cmd-utf8-new.patch
echo # Updated 19 may 2014>>cmd-utf8-new.patch
echo. >>cmd-utf8-new.patch
echo File: cmd.exe>>cmd-utf8-new.patch
echo 005E57: E8C49B010090   [ FF155811D04A ]>>cmd-utf8-new.patch
echo 00A477: E8A455010090   [ FF155811D04A ]>>cmd-utf8-new.patch
echo 0162E6: E83597000090   [ FF155811D04A ]>>cmd-utf8-new.patch
echo 01A3A5: E87656000090   [ FF155811D04A ]>>cmd-utf8-new.patch
echo 01C2DD: E83E37000090   [ FF155811D04A ]>>cmd-utf8-new.patch
echo 01FA20: 8B44E40485C07519687C49D04AFF153C  [ 00000000000000000000000000000000 ]>>cmd-utf8-new.patch
echo         11D04A68AC06D24A50FF153811D04AFF  [ 00000000000000000000000000000000 ]>>cmd-utf8-new.patch
echo         D03D35C4000074570F8727            [ 0000000000000000000000 ]>>cmd-utf8-new.patch
echo 01FA4E: 83F82A744C3D2CC4000072153D2EC400  [ 00000000000000000000000000000000 ]>>cmd-utf8-new.patch
echo         00763E3D31C4000074373D33C4000074  [ 00000000000000000000000000000000 ]>>cmd-utf8-new.patch
echo         30FF255811D04A3DC8CE000074233D98  [ 00000000000000000000000000000000 ]>>cmd-utf8-new.patch
echo         D60000741C3DAADE000072E53DB3DE00  [ 00000000000000000000000000000000 ]>>cmd-utf8-new.patch
echo         00760E3DE8FD000072D73DE9FD000077  [ 00000000000000000000000000000000 ]>>cmd-utf8-new.patch
echo         D0C644E40800FF255811D04A00004765  [ 00000000000000000000000000000000 ]>>cmd-utf8-new.patch
echo         74414350                          [ 00000000 ]>>cmd-utf8-new.patch

copy %systemroot%\system32\cmd.exe 1>nul
bwpatchw.exe cmd.exe -f cmd-utf8-new.patch
copy /y cmd.exe %systemroot%\system32\cmdutf8.exe 1>nul 2>nul
del /q cmd-utf8-new.patch 1>nul
del /q cmd.exe 1>nul

echo     +^) register cmdutf8.exe
echo.
reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\cmd.exe" /v "Debugger" /d "%systemroot%\system32\cmdutf8.exe" /f 1>nul

echo     Successful patch
echo.

pause 1>nul
 
Tin công nghệ
Liên Hệ và Hợp Tác

Top