File – thư mục trên windows có gì vui?

😀 Có chứ nhiều cái vui lắm chứ 😀

Á nói rùi, 😂 xém nói lại hí hí 😂


Nếu bạn đã đọc bài này 😘

🥰 File – thư mục trên linux có gì vui? 🥰

Bạn sẽ có 1 thắc mắc hồn nhiên như cô tiên là 🙄 trên windows có zậy hôn? 🙄

🙄 Tên thư mục (folder), file trên Windows dài tối đa bao nhiêu kí tự? 🙄


Muốn ăn thì lăn vào bếp – ông bà ta đã nói zậy thì mình phải 🍱 đi nấu nướng thoai 🍱

Lên mạng tìm coi Microsoft nói gì

https://docs.microsoft.com/en-us/windows/win32/fileio/maximum-file-path-limitation?tabs=cmd

Rùi hiểu nhen – tên file, thư mục không quá 260 kí tự 😥


😘 Bạn mở windows powershell lên nhớ chạy zới administrator 😘


🤣 Sau đó đừng làm, nhìn tui làm thoai 🤣

Tui hổng rành powershell nên test thử vài cái coi sao

cd → thử như linux để về home hay thư mục gốc → hông được
cd \ → okela
// thử nối chuỗi như linux → okela
$devops = ‘itv2021’
$devops += ‘.edu.vn’
$devops
// xem chiều dài của biến = $variable.length → okela
$devops.length

Chạy thiệt được òi đó

// tạo chuỗi rỗng
$longname = ”
// lặp đi lặp lại tới 261 kí tự cho tui – lt = less than
for ($i = 1; $i -lt 262; $i++)
{
$longname += “1”
}
// thử coi giá trị biến → okela
$longname
// coi đủ vốn lẫn lời chưa → okela
$longname.length
// tạo thư mục 261 kí tự cho tui
New-Item -ItemType “directory” $longname

  • New-Item -ItemType “directory” $longname
  • ~~~~~~~~
    • CategoryInfo : WriteError: (C:\111111111111…111111111111111:String) [New-Item], PathTooLongException
    • FullyQualifiedErrorId : CreateDirectoryIOError,Microsoft.PowerShell.Commands.NewItemCommand

New-Item : The specified path, file name, or both are too long. The fully qualified file name must be less than 260
characters, and the directory name must be less than 248 characters.
At line:1 char:1


Ôi chu choa ơi, lỗi roài, báo lỗi là thấy mình đọc tài liệu ba chớp ba nháng rồi

Tên thư mục (directory name) mà fully qualified á chỉ có 247 kí tự thoai (nhỏ hơn 248)

Tên file (file name) mà fully qualified á chỉ có 259 kí tự thoai (nhỏ hơn 260)

 fully qualified là gì ta? là tính cả c:\ luôn hả?

→ giống đường dẫn tuyệt đối trên linux hả ta?




Tên thư mục 247 kí tự , tên file 259 kí tự hổng được

→ zậy là hiểu có tính C:\ không rùi hen!!!

cd \
$longname = ”
for ($i = 1; $i -lt 245; $i++)
{
$longname += “1”
}
$longname.length
New-Item -ItemType “directory” $longname


cd \
$longname = ”
for ($i = 1; $i -lt 256; $i++)
{
$longname += “2”
}
$longname.length
New-Item -ItemType “file” $longname


Các bạn tự làm trường hợp $longname.length = 255 nha

→ ở đây chỉ có ngoan hiền thoai 🤣

E hèm, không mất tính tổng quát ta có

Tên file dài tối đa 258 kí tự → hệ thống tự thêm vào kí tự null259

→ tính từ c:\… hay d:\…

Tên thư mục dài tối đa 247 kí tự

→ cũng tính từ c:\… hay d:\…

→ gọi là fully qualified path → giống đường dẫn tuyệt đối trên linux


Hừm từ Windows 10 version 1607Long Paths cho path dài mị mị tới 32767 kí tự 🤩🤩🤩

Xong bước 2 ở dưới tốt nhất là 😅😅😅 restart win cho chắc ăn nhen 😅😅😅

Command Prompt: cmd → ver

winver

New-ItemProperty -Path “HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem” `
-Name “LongPathsEnabled” -Value 1 -PropertyType DWORD -Force

regedit (registry editor)

Computer\HKEY_LOCAL_MACHINE\SYSTEM\
CurrentControlSet\Control\FileSystem\LongPathsEnabled

Computer Configuration → Administrative Templates → System → Filesystem → Enable Win32 long paths

gpupdate /force

Updating policy…

Computer Policy update has completed sucessfully

32766 + 3 (C:\) = 32769 > 32767 → lỗi

$longname = ”
for ($i = 1; $i -lt 16384; $i++)
{
$longname += “3\”
}
$longname.length
New-Item -ItemType “directory” $longname

New-Item : The specified path, file name, or both are too long. The fully qualified file name must be less than 260
characters, and the directory name must be less than 248 characters.

At line:1 char:1

+ New-Item -ItemType “directory” $longname

+ ~~~~~~~~

  • CategoryInfo : WriteError: (C:\3\3\3\3\3\3…\3\3\3\3\3\3\3\:String) [New-Item], PathTooLongException
  • FullyQualifiedErrorId : CreateDirectoryIOError,Microsoft.PowerShell.Commands.NewItemCommand

32764 + 3 (C:\) = 32767 maximum → okela

$longname = ”
for ($i = 1; $i -lt 16383; $i++)
{
$longname += “3\”
}
$longname.length
New-Item -ItemType “directory” $longname


Chia sẻ zới các bạn 😘 1 kiến thức, 1 cách học thú vị 😘

😍 Học kiểu hacking này vui hơn nhiều 😍

🥰 Tốc độ hiểu biết cũng nhanh hơn nhiều 🥰

😎 Khả năng suy nghĩ để giải quyết vấn đề càng lúc càng sắc bén 😎

Bài trước chạy 😉 test case cho linux 😉, giờ chạy 😉 test case cho windows 😉 nha các bạn há há