Vba ẩn file trong foder? (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

gakon_Office

Nguyễn Hoàng Nhi
Tham gia
18/9/11
Bài viết
176
Được thích
26
Xin chào GPE!
Em có 1 foder file (đính kèm)
Và trong file tổng hợp E tạo 2 nút ẩn file và hiện file!
Nghĩa là ẩn toàn bộ các file trong forder đó và hiện toàn bộ các file trong forder.
Trừ file tổng hợp! File này luôn hiện!
Xin hỏi GPE có code nào thực hiện được vấn đề này không ạ?
Tks!
 

File đính kèm

Xin đượcnhắc lại!
Mọi người xem cho em vấn đề trên với!
 
Upvote 0
Xin chào GPE!
Em có 1 foder file (đính kèm)
Và trong file tổng hợp E tạo 2 nút ẩn file và hiện file!
Nghĩa là ẩn toàn bộ các file trong forder đó và hiện toàn bộ các file trong forder.
Trừ file tổng hợp! File này luôn hiện!
Xin hỏi GPE có code nào thực hiện được vấn đề này không ạ?
Tks!
Em thấy chủ đề này anh đưa lên rồi mà sao không tiếp tục đi.
http://www.giaiphapexcel.com/forum/showthread.php?59367-ẩn-file-exel-trong-foder
Chỉ có điều khác với lần trước là lần này ẩn toàn bộ.
Mà Hình như thầy ndu còn nợ cái gì đó ở bài viết thứ#7 nhé ..-\\/. hihi
 
Upvote 0
Xin chào GPE!
Em có 1 foder file (đính kèm)
Và trong file tổng hợp E tạo 2 nút ẩn file và hiện file!
Nghĩa là ẩn toàn bộ các file trong forder đó và hiện toàn bộ các file trong forder.
Trừ file tổng hợp! File này luôn hiện!
Xin hỏi GPE có code nào thực hiện được vấn đề này không ạ?
Tks!
Gửi bạn file dùng để Set Attribute cho file và folder
Bạn theo code trong file mà phát triển riêng cho mình nhé
-----------------------------------------------------------------------
Mà Hình như thầy ndu còn nợ cái gì đó ở bài viết thứ#7 nhé ..
a03.gif
hihi
"Nợ" cái gì giờ xem lại cũng không nhớ đó là cái gì nữa
 

File đính kèm

Upvote 0
"Nợ" cái gì giờ xem lại cũng không nhớ đó là cái gì nữa

Xin hỏi thêm.
Nếu mà window đang để ở chế độ show thì sao?
Có cách nào làm cho nó trở lại chế
độ Do not show được không.
Kèm theo lệnh Refesh nữa.

Theo em hiểu muốn hide file được thì window phải để ở chế độ Do not show đỡ khỏi nhìn thấy mờ mờ đó thầy!
 
Upvote 0
Gửi bạn file dùng để Set Attribute cho file và folder
Bạn theo code trong file mà phát triển riêng cho mình nhé

Em xem cũng chẳng hiểu gì cả...@@! Cứ như Ma trận ý!
Thầy có thể thực hiện trên file Tổng hợp của anh GàKon đưa lên được không ạ?
Em thấy bài này cũng tiện cho khi mà 1 foder chứa quá nhiều file mà mình khi mình cần tìm nhanh 1 file tổng hợp đó mở foder ra là có thể thấy ngay. Nếu cần thiết thì có thể cho nó hiện lên.
Việc ẩn các file con cũng hay nhằm tránh việc thay đổi dữ liệu liên quan đến file tổng hợp!
Tks!
 
Upvote 0
Hic, Tải file của Thầy về thử sử dụng, bây giờ thư mục của em mất tiêu luôn, phục hồi mãi chưa được! khặc khặc cứu em với!!!
Em cảm ơn!

Cái này là "dấu cho khuất mắt" chứ có phải "dấu không moi được" đâu.
Bạn vào Tools (mở forder lên) --> Folder options --> thẻ View --> chọn show hide files
Code thay đổi attribus để thành hide + system (nhìn tên tập tin Excel thì biết). Ở đường dẫn trên thì nó nằm liền với show hide files, tên là Not show hide files (đại loại thế vì tôi không có IE tiếng Anh nên không rõ tên thế nào)
 
Upvote 0
Hic, Tải file của Thầy về thử sử dụng, bây giờ thư mục của em mất tiêu luôn, phục hồi mãi chưa được! khặc khặc cứu em với!!!
Em cảm ơn!

Gì chứ
Bạn cứ mở file ChangeFolderAttiribule.xlsm lên, duyệt đến thư mục cần thay đổi Attribute, rồi bấm Apply là được rồi
Trên form ấy, tôi để mặc định dấu check tại Archive. Vậy bạn không cần check gì cả, chỉ Apply là mọi file, folder sẽ trở lại như trước thôi
 
Upvote 0
Em xem cũng chẳng hiểu gì cả...@@! Cứ như Ma trận ý!
Thầy có thể thực hiện trên file Tổng hợp của anh GàKon đưa lên được không ạ?
Em thấy bài này cũng tiện cho khi mà 1 foder chứa quá nhiều file mà mình khi mình cần tìm nhanh 1 file tổng hợp đó mở foder ra là có thể thấy ngay. Nếu cần thiết thì có thể cho nó hiện lên.
Việc ẩn các file con cũng hay nhằm tránh việc thay đổi dữ liệu liên quan đến file tổng hợp!
Tks!

Code trên là viết tổng quát, giờ viết riêng cho bài này thì.. quá dễ chứ sao nữa
1> Code trong module
PHP:
Private Declare Sub SHChangeNotify Lib "shell32.dll" _
  (ByVal wEventId As Long, ByVal uFlags As Long, dwItem1 As Any, dwItem2 As Any)
Sub ShowHideFiles(ByVal Hidden As Boolean)
  Dim fleItem As Object, lAtt As Long
  Dim sFilePath As String, sFolder As String
  sFilePath = ThisWorkbook.FullName
  sFolder = ThisWorkbook.Path
  On Error Resume Next
  lAtt = IIf(Hidden, vbHidden + vbSystem, vbNormal)
  With CreateObject("Scripting.FileSystemObject")
    For Each fleItem In .GetFolder(sFolder).Files
      If fleItem.Path <> sFilePath Then
        fleItem.Attributes = lAtt
      End If
    Next
  End With
  SHChangeNotify &H8000000, &H0&, 0, 0
End Sub
Lưu ý SHChangeNotify để Refresh (không có cũng được nhưng có nó thì "nhìn" sẽ "sướng" hơn)
2> Code trong sheet1
PHP:
Private Sub cmd_Click()
  With cmd
    ShowHideFiles (cmd.Caption = "Hide Files")
    .Caption = IIf(.Caption = "Show Files", "Hide Files", "Show Files")
  End With
End Sub
Lưu ý: CommandButton tôi đặt tên là cmd nhé
 

File đính kèm

Upvote 0
PHP:
Private Declare Sub SHChangeNotify Lib "shell32.dll" _
  (ByVal wEventId As Long, ByVal uFlags As Long, dwItem1 As Any, dwItem2 As Any)
Sub ShowHideFiles(ByVal Hidden As Boolean)
  Dim fleItem As Object, lAtt As Long
  Dim sFilePath As String, sFolder As String
  sFilePath = ThisWorkbook.FullName
  sFolder = ThisWorkbook.Path
  On Error Resume Next
  lAtt = IIf(Hidden, vbHidden + vbSystem, vbNormal)
  With CreateObject("Scripting.FileSystemObject")
    For Each fleItem In .GetFolder(sFolder).Files
      If fleItem.Path <> sFilePath Then
        fleItem.Attributes = lAtt
      End If
    Next
  End With
  SHChangeNotify &H8000000, &H0&, 0, 0
End Sub

Rất tuyệt vời Thầy ạ!
có thể ẩn hết các file trừ file tổng hợp và foder!
Thầy có thẻ chỉ cho em hay sửa lại code (đơn giản lại từng bước) để em dẽ hình dung và áp dụng hơn không ạ?
Ví dụ Em muốn hiện thêm 1 file nào đó cùng với file tổng hợp có được không ạ? File đó tên là "data.xls" chẳng hạn.
Tks Thầy!
 
Lần chỉnh sửa cuối:
Upvote 0
Rất tuyệt vời Thầy ạ!
có thể ẩn hết các file trừ file tổng hợp và foder!
Thầy có thẻ chỉ cho em hay sửa lại code (đơn giản lại từng bước) để em dẽ hình dung và áp dụng hơn không ạ?
Ví dụ Em muốn hiện thêm 1 file nào đó cùng với file tổng hợp có được không ạ? File đó tên là "data.xls" chẳng hạn.
Tks Thầy!

Tôi cũng chưa test, nhưng với code đó, bạn thử thêm vào chỗ này xem:

Mã:
Sub ShowHideFiles(ByVal Hidden As Boolean)
    Dim fleItem As Object, lAtt As Long
    Dim sFilePath As String, sFolder As String
    [B][COLOR=#ff0000]Dim sDataFilePath As String[/COLOR][/B]
    
    sFilePath = ThisWorkbook.FullName
    sFolder = ThisWorkbook.Path
   [B][COLOR=#ff0000] sDataFilePath = sFolder & "\data.xls"[/COLOR][/B]
    
    On Error Resume Next
    lAtt = IIf(Hidden, vbHidden + vbSystem, vbNormal)
    With CreateObject("Scripting.FileSystemObject")
        For Each fleItem In .GetFolder(sFolder).Files
            If fleItem.Path <> sFilePath [B][COLOR=#ff0000]Or fleItem.Path <> sDataFilePath [/COLOR][/B]Then
                fleItem.Attributes = lAtt
            End If
        Next
    End With
    SHChangeNotify &H8000000, &H0&, 0, 0
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Tôi cũng chưa test, nhưng với code đó, bạn thử thêm vào chỗ này xem:

Mã:
Sub ShowHideFiles(ByVal Hidden As Boolean)
    Dim fleItem As Object, lAtt As Long
    Dim sFilePath As String, sFolder As String
    [B][COLOR=#ff0000]Dim sDataFilePath As String[/COLOR][/B]
    
    sFilePath = ThisWorkbook.FullName
    sFolder = ThisWorkbook.Path
   [B][COLOR=#ff0000] sDataFilePath = sFolder & "\data.xls"[/COLOR][/B]
    
    On Error Resume Next
    lAtt = IIf(Hidden, vbHidden + vbSystem, vbNormal)
    With CreateObject("Scripting.FileSystemObject")
        For Each fleItem In .GetFolder(sFolder).Files
            If fleItem.Path <> sFilePath [B][COLOR=#000080]Or[/COLOR][COLOR=#ff0000] fleItem.Path <> sDataFilePath [/COLOR][/B]Then
                fleItem.Attributes = lAtt
            End If
        Next
    End With
    SHChangeNotify &H8000000, &H0&, 0, 0
End Sub
Cái chổ Or màu xanh ấy lý ra phải là And mới đúng chứ nhỉ
Ngoài ra phải lưu ý rằng
sDataFilePath = sFolder & "\data.xls"
khác với
sDataFilePath = sFolder & "\Data.xls"
và cũng khác với
sDataFilePath = sFolder & "\DATA.xls"
 
Upvote 0
Hấp dẫn đấy!
Vậy thì muốn cho ản cả các foder nằm tròng foder có file tổng hợp này thì thêm dòng lệnh nào nữa hả các Bác!
 
Upvote 0
Hấp dẫn đấy!
Vậy thì muốn cho ản cả các foder nằm tròng foder có file tổng hợp này thì thêm dòng lệnh nào nữa hả các Bác!

Vậy thì tội vạ gì viết code nữa! Cứ tải cái file ở bài #4 này về và sử dụng thôi:

http://www.giaiphapexcel.com/forum/showthread.php?72828-Vba-ẩn-file-trong-foder&p=445516#post445516

Muốn ẩn file, folder gì cũng chơi ráo trội hết!
 
Upvote 0
PHP:
Private Declare Sub SHChangeNotify Lib "shell32.dll" _
  (ByVal wEventId As Long, ByVal uFlags As Long, dwItem1 As Any, dwItem2 As Any)
Sub ShowHideFiles(ByVal Hidden As Boolean)
  Dim fleItem As Object, lAtt As Long
  Dim sFilePath As String, sFolder As String
  sFilePath = ThisWorkbook.FullName
  sFolder = ThisWorkbook.Path
  On Error Resume Next
  lAtt = IIf(Hidden, vbHidden + vbSystem, vbNormal)
  With CreateObject("Scripting.FileSystemObject")
    For Each fleItem In .GetFolder(sFolder).Files
      If fleItem.Path <> sFilePath Then
        fleItem.Attributes = lAtt
      End If
    Next
  End With
  SHChangeNotify &H8000000, &H0&, 0, 0
End Sub

Ồh! Vấn đề hiện thêm file Em đã hiểu rồi!
Nhưng ý Em nói Thầy có thể tách code trên ra làm 2 được không?
Code nào là ẩn code là hiện.(để em nhìn nhận dễ hơn).Kiểu như là bài của Anh GàKon đưa ra 2 nút và Thầy ndu đã gộp vào 1 nút!
Đúng là rất ngắn gọn. Nhưng với nhưng code cao cấp kiểu này... Em không thể nào mà lĩnh hội được.-+*/
 
Upvote 0
Ồh! Vấn đề hiện thêm file Em đã hiểu rồi!
Nhưng ý Em nói Thầy có thể tách code trên ra làm 2 được không?
Code nào là ẩn code là hiện.(để em nhìn nhận dễ hơn).Kiểu như là bài của Anh GàKon đưa ra 2 nút và Thầy ndu đã gộp vào 1 nút!
Đúng là rất ngắn gọn. Nhưng với nhưng code cao cấp kiểu này... Em không thể nào mà lĩnh hội được.-+*/

Thì chổ này nè:
fleItem.Attributes = lAtt
Mà ta có:
vbNormal = 0 <==> Bình thường
vbReadOnly = 1
<==> Chỉ đọc
vbHidden = 2 <===> Ẩn
vbSystem =4 <===> Hệ thống
vbArchive =32
<===> Lưu trử
Vậy muốn ẩn hiện thế nào thì cứ gán vào biến lAtt là xong!
Ví dụ:
- Set thuộc tính ẩn + system, ta dùng:
Mã:
lAtt = [COLOR=#0000cd][I]vbHidden[/I][/COLOR] + [I][COLOR=#0000cd]vbSystem[/COLOR][/I]
fleItem.Attributes = lAtt
- Set thuộc tính ReadOnly cho file:
Mã:
lAtt = [COLOR=#0000cd][I]vbReadOnly[/I][/COLOR]
fleItem.Attributes = lAtt
- Cho file trở lại bình thường
Mã:
lAtt = [COLOR=#0000cd][I]vbNormal[/I][/COLOR]
fleItem.Attributes = lAtt
vân vân
-----------
Bạn để ý phía trên tôi viết thế này:
lAtt = IIf(Hidden, vbHidden + vbSystem, vbNormal)
Tức nếu biến Hidden =TRUE thì biến lAtt sẽ = vbHidden + vbSystem, ngược lại thì lAtt sẽ = vbNormal
Nói chung: ẩn hay hiện sẽ tùy thuộc vào việc ta truyền vào biến Hidden này là TRUE hay FALSE
Cách viết code như trên là thuộc dạng Sub có tham số truyền (cũng như viết Function)
Bay giờ, từ Sub tổng quát trên, ta viết code cho CommandButton để nó vừa có tác dụng ẩn, vừa có tác dụng hiện là chổ này đây:
PHP:
Private Sub cmd_Click()
  With cmd
    ShowHideFiles (cmd.Caption = "Hide Files")
    .Caption = IIf(.Caption = "Show Files", "Hide Files", "Show Files")
  End With
End Sub
Cái này là dựa vào Caption của cmd để truyền TRUE, FALSE cho biến Hidden ---> là chổ này ShowHideFiles (cmd.Caption = "Hide Files")
Nghĩa là:
- Nếu cmd.Caption = "Hide Files" là ĐÚNG thì dòng lệnh sẽ tương đương ShowHideFiles TRUE ---> Ẩn file
- Nếu cmd.Caption = "Hide Files" là SAI thì dòng lệnh sẽ tương đương ShowHideFiles FALSE ---> Hiện file
------------------------
Nếu tách thành 2 Sub riêng thì càng dễ
ẨN:
PHP:
Private Sub An_Click()
    ShowHideFiles TRUE
End Sub
và HIỆN:
PHP:
Private Sub HIEN_Click()
    ShowHideFiles FALSE
End Sub
Vậy thôi
 
Lần chỉnh sửa cuối:
Upvote 0
Hì ! Làm phiền Thầy nhiều quá!
Kính,Cảm ơn Thầy!
 
Upvote 0
Hì ! Làm phiền Thầy nhiều quá!
Kính,Cảm ơn Thầy!

Ấy! Không phiền
Bạn càng hỏi nhiều thì.. càng tốt ---> Chứng tỏ bạn có quan tâm đến lập trình. Và cũng thông qua đó để người khác đọc luôn
Tôi thì chẳng tài giỏi gì, chỉ hướng dẫn thông qua kinh nghiệm, những gì tôi tiếp thu được từ trước đến giờ (có thể không bài bản lắm)
 
Upvote 0
Vậy thì tội vạ gì viết code nữa! Cứ tải cái file ở bài #4 này về và sử dụng thôi:

http://www.giaiphapexcel.com/forum/showthread.php?72828-Vba-%E1%BA%A9n-file-trong-foder&p=445516#post445516

Muốn ẩn file, folder gì cũng chơi ráo trội hết!

Ẩn để khó mà "lôi" ra thì hơi khó chứ ẩn để cho khuất mắt nhưng bất kỳ ai muốn cũng có thể dễ dàng "lôi" ra thì chả cần code gì cả.
Cứ Tools --> folder options --> thẻ View --> not show hide files (tên đại loại thế)
Sau đó muốn ẩn thư mục hoặc tập tin A: chuột phải lên A --> properties --> đánh dấu "hide"
 
Upvote 0
Ẩn để khó mà "lôi" ra thì hơi khó chứ ẩn để cho khuất mắt nhưng bất kỳ ai muốn cũng có thể dễ dàng "lôi" ra thì chả cần code gì cả.
Cứ Tools --> folder options --> thẻ View --> not show hide files (tên đại loại thế)
Sau đó muốn ẩn thư mục hoặc tập tin A: chuột phải lên A --> properties --> đánh dấu "hide"

Vậy nhờ Anh chia sẽ cho mọi người biết cách nào để cho cái folder/file là "khó lôi" ra đi ạ.

Trân trọng cám ơn Anh.
 
Upvote 0
Vậy nhờ Anh chia sẽ cho mọi người biết cách nào để cho cái folder/file là "khó lôi" ra đi ạ.

Trân trọng cám ơn Anh.
Thử "quái chiêu" này xem
Bạn tại file Tuan.rar về, giải nén rồi mở file TongHop.xls lên
Xong, bạn bấm nút Ẩn Files rồi thử tìm cách "moi" mấy file đã ẩn ra xem có được không nha
---------------
Code chỉ có vầy:
Mã:
Public Const Spec = "{20D04FE0-3AEA-1069-A2D8-08002B30309D}"
Sub HideFiles()
  Dim fldOldName As String, fldNewName As String
  Dim fldName As String, fleItem, fleNewPath As String
  On Error GoTo ExitSub
  fldName = ThisWorkbook.Path
  With CreateObject("Scripting.FileSystemObject")
    If .GetFolder(fldName).Files.Count > 1 Then
      fldOldName = .GetTempName
      Sheet1.Range("IV1").Value = fldOldName
     .CreateFolder fldName & "\" & fldOldName
      For Each fleItem In .GetFolder(fldName).Files
        If fleItem.Path <> ThisWorkbook.FullName Then
          fleNewPath = fldName & "\" & fldOldName & "\" & fleItem.Name
          .MoveFile fleItem.Path, fleNewPath
        End If
      Next
      fldName = ThisWorkbook.Path & "\" & fldOldName
      With .GetFolder(fldName)
        fldNewName = .Name & "." & Spec
        .Name = fldNewName
      End With
    End If
  End With
ExitSub:
End Sub
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Thử "quái chiêu" này xem
Bạn tại file Tuan.rar về, giải nén rồi mở file TongHop.xls lên
Xong, bạn bấm nút Ẩn Files rồi thử tìm cách "moi" mấy file đã ẩn ra xem có được không nha
---------------
Code chỉ có vầy:
Mã:
Public Const Spec = "{20D04FE0-3AEA-1069-A2D8-08002B30309D}"
Sub HideFiles()
  Dim fldOldName As String, fldNewName As String
  Dim fldName As String, fleItem, fleNewPath As String
  On Error GoTo ExitSub
  fldName = ThisWorkbook.Path
  With CreateObject("Scripting.FileSystemObject")
    If .GetFolder(fldName).Files.Count > 1 Then
      fldOldName = .GetTempName
      Sheet1.Range("IV1").Value = fldOldName
     .CreateFolder fldName & "\" & fldOldName
      For Each fleItem In .GetFolder(fldName).Files
        If fleItem.Path <> ThisWorkbook.FullName Then
          fleNewPath = fldName & "\" & fldOldName & "\" & fleItem.Name
          .MoveFile fleItem.Path, fleNewPath
        End If
      Next
      fldName = ThisWorkbook.Path & "\" & fldOldName
      With .GetFolder(fldName)
        fldNewName = .Name & "." & Spec
        .Name = fldNewName
      End With
    End If
  End With
ExitSub:
End Sub

Kinh nhờ,Đúng là ác thật! Vậy Đại Ca cho hỏi lôi ra bằng cách nào, Tks!
 
Upvote 0
Kinh nhờ,Đúng là ác thật! Vậy Đại Ca cho hỏi lôi ra bằng cách nào, Tks!

Thì cứ tìm cách đi
Nói chung đã thấy code rồi thì sẽ có cách lấy ra thôi (cũng bằng code)
Code này chủ yếu "giấu" để tránh người không biết xài thôi ---> Muốn dùng "tay" để "moi" ra chưa chắc ai cũng biết
Ẹc... Ẹc...
 
Upvote 0
Thì cứ tìm cách đi
Nói chung đã thấy code rồi thì sẽ có cách lấy ra thôi (cũng bằng code)
Code này chủ yếu "giấu" để tránh người không biết xài thôi ---> Muốn dùng "tay" để "moi" ra chưa chắc ai cũng biết
Ẹc... Ẹc...

~^^~ Mong Đại Ca Viết thêm cho em 1 cái code hiện lại! và có thể chỉ thêm cách lấy = tay được không?
Em lỡ ném cái file báo cáo vào, giờ Search mãi không thấy ... hix hix!
 
Upvote 0
~^^~ Mong Đại Ca Viết thêm cho em 1 cái code hiện lại! và có thể chỉ thêm cách lấy = tay được không?
Em lỡ ném cái file báo cáo vào, giờ Search mãi không thấy ... hix hix!

Nếu bạn biết về code và muốn tự hiểu nó, bạn tự mày mò trong code đó sẽ ra giải pháp.

=============================
Tôi thiết nghĩ: Bạn nên đổi Avatar của bạn đi để tránh nhầm lẫn một cây đại thụ với một cây cỏ dại nào đó.

Trân trọng.
 
Upvote 0
Nếu bạn biết về code và muốn tự hiểu nó, bạn tự mày mò trong code đó sẽ ra giải pháp.

=============================
Tôi thiết nghĩ: Bạn nên đổi Avatar của bạn đi để tránh nhầm lẫn một cây đại thụ với một cây cỏ dại nào đó.

Trân trọng.

Cảm ơn Nhị Ca! Chỉ vì ngưỡng mộ Đại Ca quá nên Em mới lấy Avatar của Đại Ca. Còn nhầm lẫn thì sao có thể được.
Đại Ca Có Tận mấy cái Huy Chương!
Code đúng là Em không biết... mong Nhị Ca chỉ giáo!
 
Upvote 0
~^^~ Mong Đại Ca Viết thêm cho em 1 cái code hiện lại! và có thể chỉ thêm cách lấy = tay được không?
Em lỡ ném cái file báo cáo vào, giờ Search mãi không thấy ... hix hix!

Trong file đã có sẵn 1 code, giờ cho thêm code này vào:
Mã:
Sub ShowFiles()
  Dim fldOldName As String, fldNewName As String, fleItem
  On Error GoTo ExitSub
  fldOldName = ThisWorkbook.Path & "\" & Sheet1.Range("IV1").Value
  fldNewName = fldOldName & "." & Spec
  With CreateObject("Scripting.FileSystemObject")
    If .FolderExists(fldNewName) Then
      For Each fleItem In .GetFolder(fldNewName).Files
        .MoveFile fleItem.Path, ThisWorkbook.Path & "\" & fleItem.Name
      Next
      .DeleteFolder fldNewName
    End If
  End With
ExitSub:
End Sub
Chạy nó và kiểm tra kết quả
----------------------
Show bằng tay thì cũng không có gì ---> Dùng lệnh DOS
- Start\Run gõ lệnh CMD
- Trong cửa sổ DOS, bạn gõ lệnh RENAME rồi cách 1 khoảng trắng
- Xong dùng chuột nắm lấy thằng thư mục có biểu tượng Computer rồi kéo thả vào cửa sổ DOS (ngay sau dòng lệnh RENAME ) ---> Tiếp theo cách 1 khoảng trắng và gõ tên thư mục mới tùy ý rồi Enter
----------------------------
Tôi thiết nghĩ: Bạn nên đổi Avatar của bạn đi để tránh nhầm lẫn một cây đại thụ với một cây cỏ dại nào đó.

Trân trọng.
Ôi, chẳng có vấn đề gì --> Tôi không quan tâm, ai thích làm gì cứ.. thoải mái đi
Ẹc... Ẹc...
 
Upvote 0
Cảm ơn Nhị Ca! Chỉ vì ngưỡng mộ Đại Ca quá nên Em mới lấy Avatar của Đại Ca. Còn nhầm lẫn thì sao có thể được.
Đại Ca Có Tận mấy cái Huy Chương!
Code đúng là Em không biết... mong Nhị Ca chỉ giáo!

Tôi cũng vô cùng kính trọng Thầy NDU, tôi học được ở Thầy rất rất nhiều, nhưng tôi không bao giờ lấy hình ảnh của Thầy làm avatar! Bạn nên nhớ Hãy luôn là chính mình thì hay hơn.

Với các thành viên, Avatar như là thương hiệu, là logo của một cty, vì vậy nếu trùng avatar dễ gây ra những ngộ nhận.
 
Upvote 0
Thử "quái chiêu" này xem
Bạn tại file Tuan.rar về, giải nén rồi mở file TongHop.xls lên
Xong, bạn bấm nút Ẩn Files rồi thử tìm cách "moi" mấy file đã ẩn ra xem có được không nha
---------------
Code chỉ có vầy:
Mã:
Public Const Spec = "{20D04FE0-3AEA-1069-A2D8-08002B30309D}"
Sub HideFiles()
  Dim fldOldName As String, fldNewName As String
  Dim fldName As String, fleItem, fleNewPath As String
  On Error GoTo ExitSub
  fldName = ThisWorkbook.Path
  With CreateObject("Scripting.FileSystemObject")
    If .GetFolder(fldName).Files.Count > 1 Then
      fldOldName = .GetTempName
      Sheet1.Range("IV1").Value = fldOldName
     .CreateFolder fldName & "\" & fldOldName
      For Each fleItem In .GetFolder(fldName).Files
        If fleItem.Path <> ThisWorkbook.FullName Then
          fleNewPath = fldName & "\" & fldOldName & "\" & fleItem.Name
          .MoveFile fleItem.Path, fleNewPath
        End If
      Next
      fldName = ThisWorkbook.Path & "\" & fldOldName
      With .GetFolder(fldName)
        fldNewName = .Name & "." & Spec
        .Name = fldNewName
      End With
    End If
  End With
ExitSub:
End Sub

Khi chạy code này, tại thư mục chứa file, nó hiện ra một file có tên: rad1639E.tmp nếu xóa nó có ảnh hưởng gì đến các file kia không thưa Thầy?
 
Upvote 0
Trong file đã có sẵn 1 code, giờ cho thêm code này vào:
Mã:
Sub ShowFiles()
  Dim fldOldName As String, fldNewName As String, fleItem
  On Error GoTo ExitSub
  fldOldName = ThisWorkbook.Path & "\" & Sheet1.Range("IV1").Value
  fldNewName = fldOldName & "." & Spec
  With CreateObject("Scripting.FileSystemObject")
    If .FolderExists(fldNewName) Then
      For Each fleItem In .GetFolder(fldNewName).Files
        .MoveFile fleItem.Path, ThisWorkbook.Path & "\" & fleItem.Name
      Next
      .DeleteFolder fldNewName
    End If
  End With
ExitSub:
End Sub
Chạy nó và kiểm tra kết quả
----------------------
Show bằng tay thì cũng không có gì ---> Dùng lệnh DOS
- Start\Run gõ lệnh CMD
- Trong cửa sổ DOS, bạn gõ lệnh RENAME rồi cách 1 khoảng trắng
- Xong dùng chuột nắm lấy thằng thư mục có biểu tượng Computer rồi kéo thả vào cửa sổ DOS (ngay sau dòng lệnh RENAME ) ---> Tiếp theo cách 1 khoảng trắng và gõ tên thư mục mới tùy ý rồi Enter
----------------------------

Ôi, chẳng có vấn đề gì --> Tôi không quan tâm, ai thích làm gì cứ.. thoải mái đi
Ẹc... Ẹc...

Đại Ca xem Em làm thế này có đúng không ạ? Nhưng Mà chưa được!
-----------------------------------------------
Với các thành viên, Avatar như là thương hiệu, là logo của một cty, vì vậy nếu trùng avatar dễ gây ra những ngộ nhận.

Hì! Tùy sở thích mỗi người Huynh àh! Ở diễn đàn này với Em Đại Ca NDU là số 1.
 

File đính kèm

Upvote 0
Đại Ca xem Em làm thế này có đúng không ạ? Nhưng Mà chưa được!

Bài trước tôi dùng cell IV1 để lưu tên folder. Cũng hơi nguy hiểm chút, thôi thì sửa thành vầy cho chắc:
Mã:
Public Const Spec = "{20D04FE0-3AEA-1069-A2D8-08002B30309D}"
Sub HideFiles()
  Dim fldOldName As String, fldNewName As String
  Dim fldName As String, fleItem, fleNewPath As String
  On Error GoTo ExitSub
  fldName = ThisWorkbook.Path
  With CreateObject("Scripting.FileSystemObject")
    If .GetFolder(fldName).Files.Count > 1 Then
      fldOldName = .GetTempName
     .CreateFolder fldName & "\" & fldOldName
      For Each fleItem In .GetFolder(fldName).Files
        If fleItem.Path <> ThisWorkbook.FullName Then
          fleNewPath = fldName & "\" & fldOldName & "\" & fleItem.Name
          .MoveFile fleItem.Path, fleNewPath
        End If
      Next
      fldName = ThisWorkbook.Path & "\" & fldOldName
      With .GetFolder(fldName)
        fldNewName = .Name & "." & Spec
        .Name = fldNewName
      End With
    End If
  End With
ExitSub:
End Sub
Mã:
Sub ShowFiles()
  Dim fldNewName As String, fleItem, fldItem
  On Error GoTo ExitSub
  With CreateObject("Scripting.FileSystemObject")
    For Each fldItem In .GetFolder(ThisWorkbook.Path).SubFolders
      If InStr(fldItem.Name, Spec) Then
        fldNewName = fldItem.Path
        Exit For
      End If
    Next
    If .FolderExists(fldNewName) Then
      For Each fleItem In .GetFolder(fldNewName).Files
        .MoveFile fleItem.Path, ThisWorkbook.Path & "\" & fleItem.Name
      Next
      .DeleteFolder fldNewName
    End If
  End With
ExitSub:
End Sub
Tức là dò tìm tên thư mục, thấy thằng em nào mà trong tên của nó có chứa chuổi {20D04FE0-3AEA-1069-A2D8-08002B30309D} thì.. "mần"
 
Lần chỉnh sửa cuối:
Upvote 0
Khi chạy code này, tại thư mục chứa file, nó hiện ra một file có tên: rad1639E.tmp nếu xóa nó có ảnh hưởng gì đến các file kia không thưa Thầy?

Mỗi lần ẩn file nó tạo một file với tên khác nhau, thử dời cái file này qua thư mục khác thì chạy code show không hiệu nghiệm, trả lại file đó về thư mục ban đầu rồi bấm show thì các file ẩn được hiện lên. Vậy cũng khá nguy hiểm nếu ta hoặc ai đó clean & clear các file temp này thì mệt mõi lắm!
 
Upvote 0
Mỗi lần ẩn file nó tạo một file với tên khác nhau, thử dời cái file này qua thư mục khác thì chạy code show không hiệu nghiệm, trả lại file đó về thư mục ban đầu rồi bấm show thì các file ẩn được hiện lên. Vậy cũng khá nguy hiểm nếu ta hoặc ai đó clean & clear các file temp này thì mệt mõi lắm!

Đó không phải là tmp file, đó là 1 folder bạn à. Vì thế mà Clear file rác sẽ không có tác dụng với nó đâu
Chuyện táy máy di dời hay xóa gì gì đó thì... ráng chịu thôi ---> Các file trong thư mục Windows, System32 là thuộc dạng CẤM nhưng nếu bạn táy máy cũng có thể xóa được và hậu quả thì.. ráng chịu chứ trách ai
 
Upvote 0
Đó không phải là tmp file, đó là 1 folder bạn à. Vì thế mà Clear file rác sẽ không có tác dụng với nó đâu
Chuyện táy máy di dời hay xóa gì gì đó thì... ráng chịu thôi ---> Các file trong thư mục Windows, System32 là thuộc dạng CẤM nhưng nếu bạn táy máy cũng có thể xóa được và hậu quả thì.. ráng chịu chứ trách ai


Nếu máy của ta, ta xài cần gì phải Hide, nhưng nếu máy chung có khi ai đó mở thử cái folder đó ra và thấy chẳng có gì trong đó thì biết đâu họ thấy không có tác dụng gì thì họ xóa cũng là chuyện thường.

Vậy nên phải thêm 1 công đoạn nữa là hide (thường) chú em này luôn. Nhưng khổ nổi chú em này lại đổi tên liên tục sau mỗi lần tạo nên "bó cái chân" luôn!
 
Upvote 0
Nếu máy của ta, ta xài cần gì phải Hide, nhưng nếu máy chung có khi ai đó mở thử cái folder đó ra và thấy chẳng có gì trong đó thì biết đâu họ thấy không có tác dụng gì thì họ xóa cũng là chuyện thường.

Vậy nên phải thêm 1 công đoạn nữa là hide (thường) chú em này luôn. Nhưng khổ nổi chú em này lại đổi tên liên tục sau mỗi lần tạo nên "bó cái chân" luôn!

Muốn "biệt tích" luôn cũng được... Dù nó có đổi tên liên tục cũng vẫn có cách để tìm
Mã:
Public Declare Sub SHChangeNotify Lib "shell32.dll" _
  (ByVal wEventId As Long, ByVal uFlags As Long, dwItem1 As Any, dwItem2 As Any)
Public Const Spec = "{20D04FE0-3AEA-1069-A2D8-08002B30309D}"
Sub HideFiles()
  Dim fldOldName As String, fldNewName As String
  Dim fldName As String, fleItem, fleNewPath As String
  On Error GoTo ExitSub
  fldName = ThisWorkbook.Path
  With New Scripting.FileSystemObject
    If .GetFolder(fldName).Files.Count > 1 Then
      fldOldName = .GetTempName
     .CreateFolder fldName & "\" & fldOldName
      For Each fleItem In .GetFolder(fldName).Files
        If fleItem.Path <> ThisWorkbook.FullName Then
          fleNewPath = fldName & "\" & fldOldName & "\" & fleItem.Name
          .MoveFile fleItem.Path, fleNewPath
        End If
      Next
      fldName = ThisWorkbook.Path & "\" & fldOldName
      With .GetFolder(fldName)
        fldNewName = .Name & "." & Spec
        .Name = fldNewName
        .Attributes = vbHidden + vbSystem
      End With
    End If
  End With
ExitSub:
  SHChangeNotify &H8000000, &H0&, 0, 0
End Sub
Mã:
Sub ShowFiles()
  Dim fldNewName As String, fleItem, fldItem
  On Error GoTo ExitSub
  With New Scripting.FileSystemObject
    For Each fldItem In .GetFolder(ThisWorkbook.Path).SubFolders
      If InStr(fldItem.Name, Spec) Then
        fldNewName = fldItem.Path
        Exit For
      End If
    Next
    If .FolderExists(fldNewName) Then
      For Each fleItem In .GetFolder(fldNewName).Files
        .MoveFile fleItem.Path, ThisWorkbook.Path & "\" & fleItem.Name
      Next
      .DeleteFolder fldNewName
    End If
  End With
ExitSub:
End Sub
Thí nghiệm xem
Ẹc... Ẹc...
 
Upvote 0
Muốn "biệt tích" luôn cũng được... Dù nó có đổi tên liên tục cũng vẫn có cách để tìm
Mã:
Public Declare Sub SHChangeNotify Lib "shell32.dll" _
  (ByVal wEventId As Long, ByVal uFlags As Long, dwItem1 As Any, dwItem2 As Any)
Public Const Spec = "{20D04FE0-3AEA-1069-A2D8-08002B30309D}"
Sub HideFiles()
  Dim fldOldName As String, fldNewName As String
  Dim fldName As String, fleItem, fleNewPath As String
  On Error GoTo ExitSub
  fldName = ThisWorkbook.Path
  With New Scripting.FileSystemObject
    If .GetFolder(fldName).Files.Count > 1 Then
      fldOldName = .GetTempName
     .CreateFolder fldName & "\" & fldOldName
      For Each fleItem In .GetFolder(fldName).Files
        If fleItem.Path <> ThisWorkbook.FullName Then
          fleNewPath = fldName & "\" & fldOldName & "\" & fleItem.Name
          .MoveFile fleItem.Path, fleNewPath
        End If
      Next
      fldName = ThisWorkbook.Path & "\" & fldOldName
      With .GetFolder(fldName)
        fldNewName = .Name & "." & Spec
        .Name = fldNewName
        .Attributes = vbHidden + vbSystem
      End With
    End If
  End With
ExitSub:
  SHChangeNotify &H8000000, &H0&, 0, 0
End Sub
Mã:
Sub ShowFiles()
  Dim fldNewName As String, fleItem, fldItem
  On Error GoTo ExitSub
  With New Scripting.FileSystemObject
    For Each fldItem In .GetFolder(ThisWorkbook.Path).SubFolders
      If InStr(fldItem.Name, Spec) Then
        fldNewName = fldItem.Path
        Exit For
      End If
    Next
    If .FolderExists(fldNewName) Then
      For Each fleItem In .GetFolder(fldNewName).Files
        .MoveFile fleItem.Path, ThisWorkbook.Path & "\" & fleItem.Name
      Next
      .DeleteFolder fldNewName
    End If
  End With
ExitSub:
End Sub
Thí nghiệm xem
Ẹc... Ẹc...

OH YEAH!!! Đúng là không có gì làm khó Thầy mình được hết! Rất là tuyệt vời! Cám ơn Thầy nhiều!
 
Upvote 0
Trong file đã có sẵn 1 code, giờ cho thêm code này vào:
Mã:
Sub ShowFiles()
  Dim fldOldName As String, fldNewName As String, fleItem
  On Error GoTo ExitSub
  fldOldName = ThisWorkbook.Path & "\" & Sheet1.Range("IV1").Value
  fldNewName = fldOldName & "." & Spec
  With CreateObject("Scripting.FileSystemObject")
    If .FolderExists(fldNewName) Then
      For Each fleItem In .GetFolder(fldNewName).Files
        .MoveFile fleItem.Path, ThisWorkbook.Path & "\" & fleItem.Name
      Next
      .DeleteFolder fldNewName
    End If
  End With
ExitSub:
End Sub
Chạy nó và kiểm tra kết quả
----------------------
Show bằng tay thì cũng không có gì ---> Dùng lệnh DOS
- Start\Run gõ lệnh CMD
- Trong cửa sổ DOS, bạn gõ lệnh RENAME rồi cách 1 khoảng trắng
- Xong dùng chuột nắm lấy thằng thư mục có biểu tượng Computer rồi kéo thả vào cửa sổ DOS (ngay sau dòng lệnh RENAME ) ---> Tiếp theo cách 1 khoảng trắng và gõ tên thư mục mới tùy ý rồi Enter


Ghê quá, hướng folfer vào My Computer?
Nếu là tôi thì tôi hướng luôn ...
Public Const Spec = "{645FF040-5081-101B-9F08-00AA002F954E}"
--------------------
Không cần nhọc công như thế đâu Tuấn ạ. Chỉ cần chuột phải lên folder --> Rename --> gõ hic --> Xong
Hoặc Rename --> bỏ đoạn cuối ".{20D04FE0-3AEA-1069-A2D8-08002B30309D}"
 
Upvote 0
Ghê quá, hướng folfer vào My Computer?
Nếu là tôi thì tôi hướng luôn ...
Public Const Spec = "{645FF040-5081-101B-9F08-00AA002F954E}"
--------------------
Không cần nhọc công như thế đâu Tuấn ạ. Chỉ cần chuột phải lên folder --> Rename --> gõ hic --> Xong
Hoặc Rename --> bỏ đoạn cuối ".{20D04FE0-3AEA-1069-A2D8-08002B30309D}"

Trong Windows Explorer, anh có thể rename 1 folder giả dạng 1 folder hệ thống nhưng làm ngược lại thì không được à nghen
Anh phải gõ lệnh DOS mới xong
Ở đây em muốn tự động hóa bằng code chứ làm bằng tay thì nhiều cách lắm
 
Upvote 0
Trong Windows Explorer, anh có thể rename 1 folder giả dạng 1 folder hệ thống nhưng làm ngược lại thì không được à nghen
Anh phải gõ lệnh DOS mới xong
Ở đây em muốn tự động hóa bằng code chứ làm bằng tay thì nhiều cách lắm

Làm bằng code thì nhanh hơn bằng tay rồi. Ý tôi là khi mở lại bằng tay thì không phải DOS với kéo thả bằng tay gì cả.
Mà "nhưng làm ngược lại thì không được à nghen" có nghĩa là thế nào?
Giả sử ta có folder "bla"
1. Ẩn (đây là xuôi hay ngược?): chuột phải lên "bla" --> rename --> dán thêm ".{20D04FE0-3AEA-1069-A2D8-08002B30309D}" vào đuôi để thành "bla.{20D04FE0-3AEA-1069-A2D8-08002B30309D}" --> xong
2. Hiện (đây là ngược hay xuôi?): chuột phải lên "bla.{20D04FE0-3AEA-1069-A2D8-08002B30309D}" --> rename --> bỏ đuôi ".{20D04FE0-3AEA-1069-A2D8-08002B30309D}" --> xong
Dù là xuôi hay ngược thì cũng chả cần DOS với kéo thả đâu. Cả xuôi ngược đều có thể làm bằng tay như trên nhưng ta viết code cho nó nhanh thôi.
 
Upvote 0
Làm bằng code thì nhanh hơn bằng tay rồi. Ý tôi là khi mở lại bằng tay thì không phải DOS với kéo thả bằng tay gì cả.
Mà "nhưng làm ngược lại thì không được à nghen" có nghĩa là thế nào?

Ý em nói ngược lại làm không được nghĩa là Rename ngược lại trong môi trường Windows Explorer đó anh
Anh rename từ 1 folder bình thường thành folder hệ thống thì anh dùng cái gì cũng được (bằng DOS hoặc F2 ngay trong cửa sổ Explorer). nhưng nếu folder ấy đã thành folder hệ thống rồi thì anh không thể đổi ngược lại trong explorer (có thể rename trong DOS hoặc WinRAR cũng được)
Ẹc... Ẹc...
Dù là xuôi hay ngược thì cũng chả cần DOS với kéo thả đâu. Cả xuôi ngược đều có thể làm bằng tay như trên nhưng ta viết code cho nó nhanh thôi.
Không biết máy anh thế nào chứ từ hồi đó đến giờ em thử rất nhiều máy, chả có máy nào cho phép Rename ngược lại theo kiểu bấm F2 cả.
Không biết các bạn khác thì sao?
 
Upvote 0
Ý em nói ngược lại làm không được nghĩa là Rename ngược lại trong môi trường Windows Explorer đó anh
Anh rename từ 1 folder bình thường thành folder hệ thống thì anh dùng cái gì cũng được (bằng DOS hoặc F2 ngay trong cửa sổ Explorer). nhưng nếu folder ấy đã thành folder hệ thống rồi thì anh không thể đổi ngược lại trong explorer (có thể rename trong DOS hoặc WinRAR cũng được)
Ẹc... Ẹc...

Không biết máy anh thế nào chứ từ hồi đó đến giờ em thử rất nhiều máy, chả có máy nào cho phép Rename ngược lại theo kiểu bấm F2 cả.
Không biết các bạn khác thì sao?

http://www.mediafire.com/?vl5kw9cu2kykheq

Trên máy tôi có Win XP Home.
Nếu đã có "bla.{20D04FE0-3AEA-1069-A2D8-08002B30309D}" thì:
chuột phải lên "bla.{20D04FE0-3AEA-1069-A2D8-08002B30309D}" --> rename --> bỏ đuôi ".{20D04FE0-3AEA-1069-A2D8-08002B30309D}" --> xong

[video=youtube;-0ltZAh57_w]http://www.youtube.com/watch?v=-0ltZAh57_w&amp;feature=youtu.be[/video]

Tôi quên không thử trên Win 7 và các hđh khác
 
Lần chỉnh sửa cuối:
Upvote 0
Trên máy tôi có Win XP Home.
Nếu đã có "bla.{20D04FE0-3AEA-1069-A2D8-08002B30309D}" thì:
chuột phải lên "bla.{20D04FE0-3AEA-1069-A2D8-08002B30309D}" --> rename --> bỏ đuôi ".{20D04FE0-3AEA-1069-A2D8-08002B30309D}" --> xong

[video=youtube;-0ltZAh57_w]http://www.youtube.com/watch?v=-0ltZAh57_w&amp;feature=youtu.be[/video]

Tôi quên không thử trên Win 7 và các hđh khác

ồh, đơn giản quá! Như vậy còn gọi gì là khó lôi nữa nhỉ.
Vậy Huynh siwtom còn chiêu nào khác không?
 
Upvote 0
Muốn "biệt tích" luôn cũng được... Dù nó có đổi tên liên tục cũng vẫn có cách để tìm
Mã:
Public Declare Sub SHChangeNotify Lib "shell32.dll" _
  (ByVal wEventId As Long, ByVal uFlags As Long, dwItem1 As Any, dwItem2 As Any)
Public Const Spec = "{20D04FE0-3AEA-1069-A2D8-08002B30309D}"
Sub HideFiles()
  Dim fldOldName As String, fldNewName As String
  Dim fldName As String, fleItem, fleNewPath As String
  On Error GoTo ExitSub
  fldName = ThisWorkbook.Path
  With New Scripting.FileSystemObject
    If .GetFolder(fldName).Files.Count > 1 Then
      fldOldName = .GetTempName
     .CreateFolder fldName & "\" & fldOldName
      For Each fleItem In .GetFolder(fldName).Files
        If fleItem.Path <> ThisWorkbook.FullName Then
          fleNewPath = fldName & "\" & fldOldName & "\" & fleItem.Name
          .MoveFile fleItem.Path, fleNewPath
        End If
      Next
      fldName = ThisWorkbook.Path & "\" & fldOldName
      With .GetFolder(fldName)
        fldNewName = .Name & "." & Spec
        .Name = fldNewName
        .Attributes = vbHidden + vbSystem
      End With
    End If
  End With
ExitSub:
  SHChangeNotify &H8000000, &H0&, 0, 0
End Sub
Mã:
Sub ShowFiles()
  Dim fldNewName As String, fleItem, fldItem
  On Error GoTo ExitSub
  With New Scripting.FileSystemObject
    For Each fldItem In .GetFolder(ThisWorkbook.Path).SubFolders
      If InStr(fldItem.Name, Spec) Then
        fldNewName = fldItem.Path
        Exit For
      End If
    Next
    If .FolderExists(fldNewName) Then
      For Each fleItem In .GetFolder(fldNewName).Files
        .MoveFile fleItem.Path, ThisWorkbook.Path & "\" & fleItem.Name
      Next
      .DeleteFolder fldNewName
    End If
  End With
ExitSub:
End Sub
Thí nghiệm xem
Ẹc... Ẹc...

Đại ca xem lại code ở bài này nè. Làm theo video của Huynh siwtom
Sau khi cái hinh computer ẩn đi em show lên rồi sửa lại tên thì được.
http://upfile.vn/Yxx
Còn code ở các bài trước đúng là em làm theo cách đấy không được!
 
Lần chỉnh sửa cuối:
Upvote 0
Thế bạn test thế nào?
Nói thật là tôi test không được như vậy cả trên máy dùng Win XP và Win 7

Tuấn làm thế này nhé: Folder option --> thẻ View --> Bỏ chọn ở:
1. Hide protected system files (cái này nhất thiết phải có)
2. Hide extension ... files (cái này thực ra không cần)

Đại loại phải nhìn được hết là:

rad4C874.tmp.{20D04FE0-3AEA-1069-A2D8-08002B30309D}

Nếu chỉ nhìn được là

rad4C874.tmp

Thì dù đổi tên thế nào thì nó vẫn có "đuôi" {20D04FE0-3AEA-1069-A2D8-08002B30309D}, tức không hiệu quả

Vì lúc đó Tuấn chỉ đổi tên của "rad4C874.tmp"

Th1: rad4C874.tmp.{20D04FE0-3AEA-1069-A2D8-08002B30309D} --> hic

Th2: rad4C874.tmp --> hic, nhưng đuôi bị ẩn vẫn còn
 
Lần chỉnh sửa cuối:
Upvote 0
Tuấn làm thế này nhé: Folder option --> thẻ View --> Bỏ chọn ở:
1. Hide protected system files (cái này nhất thiết phải có)
2. Hide extension ... files (cái này thực ra không cần)

Đại loại phải nhìn được hết là:

rad4C874.tmp.{20D04FE0-3AEA-1069-A2D8-08002B30309D}

Nếu chỉ nhìn được là

rad4C874.tmp

Thì dù đổi tên thế nào thì nó vẫn có "đuôi" {20D04FE0-3AEA-1069-A2D8-08002B30309D}, tức không hiệu quả

Vì lúc đó Tuấn chỉ đổi tên của "rad4C874.tmp"

Th1: rad4C874.tmp.{20D04FE0-3AEA-1069-A2D8-08002B30309D} --> hic

Th2: rad4C874.tmp --> hic, nhưng đuôi bị ẩn vẫn còn
Đây, nói có bằng chứng:
1> Thử nghiệm trên Win XP SP3:

[video=youtube;0bjbHtIhTKA]http://www.youtube.com/watch?v=0bjbHtIhTKA&feature=youtu.be[/video]
 
Upvote 0
2> Thử nghiệm trên Win 7:

[video=youtube;8C_T1zQqpTE]http://www.youtube.com/watch?v=8C_T1zQqpTE&feature=youtu.be[/video]

Vậy có thể là còn 1 setting nào đó ta chưa để ý đến
Em biết chiêu này từ rất lâu nhưng chưa lần nào thử nghiệm giống được như anh cả
-------------------
Em Test y hệt như video của Huynh siwtom gửi!
Chỉ cần gõ tên linh tinh là lấy được file ẩn
Win của Em là XP3
Bạn thử vào Folder Options, check mục "Hide protected operating system files" rồi khởi động lại máy tính. Xong thử nghiệm lại xem
 
Lần chỉnh sửa cuối:
Upvote 0
2> Thử nghiệm trên Win 7:

[video=youtube;8C_T1zQqpTE]http://www.youtube.com/watch?v=8C_T1zQqpTE&feature=youtu.be[/video]

Vậy có thể là còn 1 setting nào đó ta chưa để ý đến
Em biết chiêu này từ rất lâu nhưng chưa lần nào thử nghiệm giống được như anh cả
-------------------

Bạn thử vào Folder Options, check mục "Hide protected operating system files" rồi khởi động lại máy tính. Xong thử nghiệm lại xem

Không phải thử đâu Tuấn à.
Trên XP của tôi nếu check mục "Hide protected operating system files" thì đổi tên chắc chắn không thành công. Khỏi phải kiểm tra mất công.
Vì lúc đó chỉ có tên rad4C874.tmp hiển thị nên dù đổi sang hic rồi kiểm tra properties thì nó vẫn là
hic.{20D04FE0-3AEA-1069-A2D8-08002B30309D}
Nhưng nếu bỏ check mục "Hide protected operating system files"
thì tên được hiển thị đầy đủ là
rad4C874.tmp.{20D04FE0-3AEA-1069-A2D8-08002B30309D}
và sau khi đổi tên thành hic thì cả cụm
rad4C874.tmp.{20D04FE0-3AEA-1069-A2D8-08002B30309D}
biến thành hic. Nhìn thấy icon của folder và properties cũng chỉ hiện tên hic.
Tôi cũng đã thử trên Win 7 thì thất bại. Nguyên nhân là cho dù check ... hay bỏ check ... thì Win 7 vẫn chỉ hiển thị ad4C874.tmp chứ không chịu hiển thị đầy đủ
rad4C874.tmp.{20D04FE0-3AEA-1069-A2D8-08002B30309D}
như trên XP, vì thế sau khi đổi tên vẫn còn cái đuôi .{20D04FE0-3AEA-1069-A2D8-08002B30309D}
-----
Kết luận:
1. trên Win 7 không thành công
2, Trên XP thì phải bỏ check ... để nhìn được toàn bộ
rad4C874.tmp.{20D04FE0-3AEA-1069-A2D8-08002B30309D}
rồi mới đổi tên. Nếu check ... thì chỉ nhìn thấy rad4C874.tmp và đổi tên không thành công.
 
Upvote 0
-----
Kết luận:
1. trên Win 7 không thành công
2, Trên XP thì phải bỏ check ... để nhìn được toàn bộ
rad4C874.tmp.{20D04FE0-3AEA-1069-A2D8-08002B30309D}
rồi mới đổi tên. Nếu check ... thì chỉ nhìn thấy rad4C874.tmp và đổi tên không thành công.

Em thì cho rằng.. tuỳ máy (hoặc tuỳ 1 setting nào đó ta chưa biết)
Vì sáng giờ em đã thử trên 3 máy tính dùng Win XP... chẳng có trường hợp nào giống như anh đã mô tả cả ---> Anh xem video clip thứ nhất của em đó thì biết
Ôi mà thôi.. kệ đi, tạm cho qua trường hợp này. Giờ anh có cách nào ẩn file hay hay gửi lên cho mọi người tham khảo với
Ẹc... Ẹc...
 
Upvote 0
Em thì cho rằng.. tuỳ máy (hoặc tuỳ 1 setting nào đó ta chưa biết)
Vì sáng giờ em đã thử trên 3 máy tính dùng Win XP... chẳng có trường hợp nào giống như anh đã mô tả cả ---> Anh xem video clip thứ nhất của em đó thì biết
Ôi mà thôi.. kệ đi, tạm cho qua trường hợp này. Giờ anh có cách nào ẩn file hay hay gửi lên cho mọi người tham khảo với
Ẹc... Ẹc...

Nếu nói đến "cấm" và khó (không?) "bẻ được bằng tay" mà chỉ bằng code thì phải dùng security của system.
Cũng cần nói về một nguy hiểm. Nếu có thể phục hồi bằng tay thì không nguy hiểm gì. Nếu chỉ có thể phục hồi bằng code thì có nguy hiểm là khi sẩy ra sự cố trong system và không thể thực thi code thì thư mục sẽ bị "cấm tới ngàn thu". Vậy thư mục có các tài liệu quan trong thì không nên khóa kiểu này. Chỉ có các thư mục có tài liệu bình thường nhưng muốn khóa vì nhiều lý do nào đó (nhậy cảm?)
Sau khi khóa thì thư mục vẫn nằm tơ hơ, không bị ẩn nhưng khi muốn mở thì ... Access denied

Sau khi bấm nút thì chọn thư mục để thiết lập hoặc gỡ bỏ Access denied.

Code mới chỉ test cho vài thư mục trên XP home.
ndu có vẻ thích món test nên tôi nhường cho món này.
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Đó không phải là tmp file, đó là 1 folder bạn à. Vì thế mà Clear file rác sẽ không có tác dụng với nó đâu
Chuyện táy máy di dời hay xóa gì gì đó thì... ráng chịu thôi ---> Các file trong thư mục Windows, System32 là thuộc dạng CẤM nhưng nếu bạn táy máy cũng có thể xóa được và hậu quả thì.. ráng chịu chứ trách ai

Nếu mà như Thầy nói thì có cách nào sau khi cho nó ẩn rồi có thể move nó ra ngoài khỏi foder chứa file TongHop đấy được không? Hoặc là move ra hẳn ngoài : D:\
Điều này sẽ an toàn hơn vì khi ẩn đi nếu ai vô tình không biết tưởng còn mỗi file TongHop không rồi del forder đi thì mệt lắm.
 
Upvote 0
Nếu nói đến "cấm" và khó (không?) "bẻ được bằng tay" mà chỉ bằng code thì phải dùng security của system.
Cũng cần nói về một nguy hiểm. Nếu có thể phục hồi bằng tay thì không nguy hiểm gì. Nếu chỉ có thể phục hồi bằng code thì có nguy hiểm là khi sẩy ra sự cố trong system và không thể thực thi code thì thư mục sẽ bị "cấm tới ngàn thu". Vậy thư mục có các tài liệu quan trong thì không nên khóa kiểu này. Chỉ có các thư mục có tài liệu bình thường nhưng muốn khóa vì nhiều lý do nào đó (nhậy cảm?)
Sau khi khóa thì thư mục vẫn nằm tơ hơ, không bị ẩn nhưng khi muốn mở thì ... Access denied

Sau khi bấm nút thì chọn thư mục để thiết lập hoặc gỡ bỏ Access denied.

Code mới chỉ test cho vài thư mục trên XP home.
ndu có vẻ thích món test nên tôi nhường cho món này.
Cho em hỏi, nếu mình không access được, vậy virus nó có thể xâm nhập được vào thư mục này không ạ?
 
Upvote 0
Cho em hỏi, nếu mình không access được, vậy virus nó có thể xâm nhập được vào thư mục này không ạ?

Thực ra tôi viết code để giấu thư mục khỏi con mắt tò mò của dân thường dân đen thôi chứ không nghĩ tới virus. Nhưng bạn cứ thử suy nghĩ chút xem. Có cả code để mở lại thư mục. Vậy thì virus cũng có thể dùng code để mở. Nó có thể có code khác vượt hẳn code của tôi ấy chứ. Tất nhiên có thể virus không lường được là thư mục bị khóa nên không "mang theo đồ nghề". Vậy câu hỏi là nếu virus chỉ đơn thuần truy cập vào thư mục, sao chép , chuyển chỗ hay xóa các tập tin thì có được không. Thì bạn hãy tự đặt mình vào vị trí của con virus và thử viết code làm những việc trên xem sao. Code làm những việc liệt kê, sao chép, chuyển chỗ, đổi tên hay xóa các tập tin thì sức bạn có dư để viết. Thử xem sao.
 
Upvote 0
Em đã test trên Win 7 thấy Ok mức độ cấm cao quá
Thưa chú siwtom Cháu sợ khi sẩy ra sự cố trong system và không thể thực thi code thì thư mục sẽ bị "cấm tới ngàn thu".
Sự cố trong system không biết chú nói là sự cố đại loại như thế nào
Khi sự cố ấy sảy ra cháu cài lại máy tính cùng phiên bản trước khi chạy Code sau đó chạy lại Code thì thư mục ấy có mở ra được không?
Cháu tạo bản ghost khi sảy ra sự cố thì Ghost lại thì Sự cố trong system không còn nữa nhỉ?
Sẽ phải dành nhiều thời gian để test trước khi sử dụng thật.
 
Upvote 0
Bạn ơi, thủ thuật không cho truy nhập này chỉ là việc thiết lập quyền thao tác của người dùng với thư mục trong Windows thôi mà. Những thiết lập này có thể điều chỉnh lại nếu bạn chính là người đã thực hiện hoặc người có quyền Admin. Trừ trường hợp bạn để chế độ mã hóa file (trong code của bác Siwtom không thấy làm điều này) thì có vấn đề. Nếu chỉ điều chỉnh quyền truy cập thì bạn có thể cấp lại quyền một cách đơn giản! Bác Siwtom cũng nói rõ điều này rồi mà, thậm chí bạn có thể dùng dòng lệnh để khôi phục quyền truy cập.

Lưu ý: những thiết lập này không có tác dụng với các ổ cứng vẫn dùng file hệ thống dạng FAT (chỉ có hiệu quả đối với NTFS).

Cách 1: Dùng lệnh trong màn hình CMD
(Ví dụ với trường hợp của tôi, trong Windows 7 tôi chỉ cần lệnh này trong màn hình CMD)

CACLS e:\dhcp /t /e /g paulsteigel:F

Cú pháp mẫu như sau:
CACLS [File hoặc thư mục] /e /p [Tên người dùng trong windows cần cấp quyền]:[F: quản lý toàn quyền, R: chỉ đọc...]

Cách 2: thao tác trong Windows
Chạy chương trình của bác Tôm
pic1.jpg
Bắt đầu chỉnh lại
Nhấn phải chuột thư mục bị khóa, chọn Properties, chọn tiếp Security
pic2.jpg
Bước 2
Nhấn Advanced
pic3.jpg
Bước 3
Chọn Change Permission
pic4.jpg
Bước 4
Chọn người dùng có chữ Deny và nhấn Edit
pic5.jpg
Bước 5
Chọn Full Control trong cột Allow. Nhấn OK, OK .... và xong!
pic6.jpg
 
Lần chỉnh sửa cuối:
Upvote 0
Bạn ơi, thủ thuật không cho truy nhập này chỉ là việc thiết lập quyền thao tác của người dùng với thư mục trong Windows thôi mà. Những thiết lập này có thể điều chỉnh lại nếu bạn chính là người đã thực hiện hoặc người có quyền Admin. Trừ trường hợp bạn để chế độ mã hóa file (trong code của bác Siwtom không thấy làm điều này) thì có vấn đề.
Đúng như bạn nghĩ, code không mã hóa gì cả.
Một là viết chơi (vọc), hai là chống "dân thường, dân đen"
Bản thân tôi không dùng code trên mà tắt cả mọi tập tin riêng tư, nhạy cảm ... tôi cho vào 1 thư mục. Thư mục thì mở được nhưng nó chỉ chứa các tập tin đã được mã hóa. Muốn dùng thì nhập mật khẩu thì phần mềm sẽ giải mã. Cũng là loại nén như WinRAR + password thôi. THế là đủ cho nhu cầu cá nhân.

Lưu ý: những thiết lập này không có tác dụng với các ổ cứng vẫn dùng file hệ thống dạng FAT (chỉ có hiệu quả đối với NTFS).

Chính xác. Nếu là FAT16, FAT32 thì không có chuyện bảo mật gì cả.
 
Upvote 0

Bài viết mới nhất

Back
Top Bottom