3

TC показывает "размер на диске" в столбце "размер". Я могу, например, использовать ShellDetails , но мне также нужно отображение динамического размера (xx k/M/G), которое не предоставляется оболочкой.

2 ответа2

2

Вы имеете в виду, что вы настроили собственное представление и хотите, чтобы в столбце размера были динамические размеры? Я сделал это по размеру настроек [=tc.size.bkMG2]

1

Вы можете использовать плагин WinScriptAdv. Это проверено с Total Commander 9.12 x64.

Создать пользовательский столбец с проводником округленного размера дисплея.

  1. Скачайте и установите плагин
  2. Найдите каталог плагинов и измените options.ini
  3. Добавьте в ActiveScripts «| SizeOnDisk», если ActiveScripts не пуст, если он пуст, то «ActiveScripts = SizeOnDisk»

Код:

[Script] 
ActiveScripts=MinutesAgo|CheckEncoding|Signature|SizeOnDisk

; List of scripts that will work together, returning their info in columns in one panel. 
; Separated by "|" - script1|script2 etc. One script can have multiple columns and display info with other
; scripts that also can be with multiple columns, all in one group of columns.
; You can add all scripts to ActiveScripts - it does not affect the performance (but takes more memory to 
; load and save script code), cause script runs only if you have the corresponding visible column in TC.  

[SizeOnDisk]
; File Size with explorer rounding in kB 
Script=SizeOnDisk.vbs
content=sizeondisk
extensions=*
FoldersPaths=0
  1. Создайте файл с именем SizeOnDisk.vbs в скриптах подпапок и вставьте следующий код в этот файл. Я не программист VBS, так что никаких гарантий, может быть, кто-то со знанием VBS может улучшить его

Код VBS:

'==============================================================================
'Script for WinScriptAdv content plugin
'   content  - Size on Disk (Like Explorer column)
'==============================================================================
Set FSO  = CreateObject("Scripting.FileSystemObject")
content  = Result(filename)
Set FSO  = Nothing

Function Result(pPath)
   If FSO.FileExists(pPath) Then

    Dim F : F = FSO.GetFile(pPath)
    Dim oShell, oFSO, oEnv, oNet
    Set oShell = CreateObject("Wscript.Shell")
    Set oFSO = CreateObject("Scripting.FileSystemObject")
    Set oEnv = oShell.Environment("Process")
    Set oNet = CreateObject("WScript.Network")
    Dim sTempFile, aText, i, aInfo
    sTempFile = oFSO.GetAbsolutePathName(oFSO.GetTempName)
    oShell.Run "%comspec% /c compact " & Chr(34) & F & Chr(34) & " > " & Chr(34) & sTempFile & Chr(34), 0, True
    aText = Split(oFSO.OpenTextFile(sTempFile,1).ReadAll,vbCrLf)
    If oFSO.FileExists(sTempFile) Then oFSO.DeleteFile sTempFile, True 
    For i = 0 To UBound(aText)
        If InStr(aText(i),oFSO.GetBaseName(F)) Then
            aInfo = Split(Replace(aText(i),"=",":"), ":")
            If IsNumeric(Trim(aInfo(1))) Then
                Result = Trim(aInfo(1))
            End If
        End If 
    Next

      set F  = Nothing
   End If
End Function
  1. Затем настройте пользовательские столбцы Пользовательские столбцы

  2. Добавить новую пользовательскую конфигурацию столбцов Пользовательская конфигурация столбца

  3. Затем добавьте новый столбец и поместите в поле заголовка " sizeondisk " и в поле "Содержимое поля " следующий текст " [= winscriptsadv.sizeondisk] ".

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .