Total Commander Knowledge Base

Есть вопрос?

Поищите ответ в самой большой русскоязычной базе знаний по Total Commander!

Создание папки и переход в нее в TC

Q: Требуется быстро создать каталог с произвольным именем, и сразу же зайти в него.
A: Скрипт:

'========================================================
' Создание папки и переход в нее в TC

' В параметрах вызова из TC можно указать название папки,
' иначе будет вызван диалог ввода имени папки
'========================================================

Dim FSO, TCS, WS, TotalCmd, DirName, DirPath, MB
Set FSO = CreateObject("Scripting.FileSystemObject")
Set TCS = CreateObject("TCScript.Helper")
Set WS = WScript.CreateObject("WScript.Shell")
TotalCmd = """" & TCS.TCPath & "\totalcmd.exe"""

if WScript.Arguments.Count > 0 then
DirName = WScript.Arguments(0)
else
DirName = InputBox("Введите имя создаваемой папки:", "Создание папки", "")
end if
if Len(DirName) = 0 then
MB = MsgBox("Не задано имя папки!", vbOKOnly + vbExclamation, "Создание папки")
WScript.Quit
end if
DirPath = TCS.GetSrcPath & "\" & DirName

if not FSO.FolderExists(DirPath) then
FSO.CreateFolder(DirPath)
end if
WS.Run TotalCmd & " /o /s """ & DirPath & """"

Set FSO = Nothing
Set TCS = Nothing
Set WC = Nothing
WScript.Quit

Batya

Q: Возможно ли сделать кнопку "Создание папки с именем из буфера обмена"?
A: Возможно:

Варианты с использованием утилиты Nircmd (с заходом и без):

Код кнопки
TOTALCMD#BAR#DATA:
nircmd execmd md
"%P~$clipboard$" & nircmd sendkeypress ctrl+r
wcmicons.dll,83
Создать папку с именем из буфера
%COMMANDER_PATH%\Utils\nircmd\

-1

Без использования клавиш:

Код кнопки
TOTALCMD#BAR#DATA:
nircmd execmd md
"%P~$clipboard$" & "%%commander_path%%\totalcmd.exe" /o /s /l="%P~$clipboard$"
wcmicons.dll,83
Создать папку с именем из буфера и открыть её
%COMMANDER_PATH%\Utils\nircmd\

-1

Комбинированный vbs-скрипт для создания папки или пустого файла:

'===================================================================================== 
' Cоздание папки/файла c буферным именем и возможностью перехода 

' Условие: путь запуска очистить 
' Возможные параметры: <переходить к элементу: 1> <расширение файла, если - файл> 
' Примеры: <пусто>  |  1  |  "" lst  |  1 txt 
'===================================================================================== 
With WScript.Arguments 
  C = .Count : If C > 0 Then Open = .Item(0) : If C > 1 Then Ext = .Item(1) 
End With
With CreateObject("WScript.Shell") 
  P = "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\3\1407" 
  On Error Resume Next
  A = .RegRead(P) : CD = .CurrentDirectory & "\" 
  If A > 0 Or Err.Number <> 0 Then .RegWrite R, 0, "REG_DWORD" 
  C = Trim(CreateObject("htmlfile").ParentWindow.ClipboardData.GetData("text")) 
  If A > 0 Then .RegWrite P, A, "REG_DWORD"
  On Error Goto 0
End With 
If C <> "" Then 
  If InStr(C, vbLf) > 0 Then C = Left(C, InStr(C, vbCr) - 1) 
  R C, """", "''" : R C, "|", "-" : R C, ":", " -" 
  R C, ";", ","   : R C, "\", "_" : R C, "/", "_" : R C, "?", "_" 
  With CreateObject("Scripting.FileSystemObject") 
    Const M = 1 
    If Ext = "" Then 
      Name = C 
      Do While .FolderExists(CD & Name) 
        l = l + 1 : If l < 10^M Then PFx = Right(String(M, "0") & l, M) Else PFx = l 
        Name = C & " (" & PFx & ")" 
      Loop : .CreateFolder(CD & Name) 
    Else 
      Name = C & "." & Ext 
      Do While .FileExists(CD & Name) 
        l = l + 1 : If l < 10^M Then PFx = Right(String(M, "0") & l, M) Else PFx = l 
        Name = C & " (" & PFx & ")." & Ext 
      Loop : .CreateTextFile(CD & Name) 
    End If 
  End With 
  If Open = "" Then CreateObject("WScript.Shell").SendKeys "^R" Else _ 
CreateObject("WScript.Shell").Exec "%COMMANDER_EXE% /O /S /L=""" & CD & Name & "\'""" 
End If : Sub R(N, A, B) : N = Replace(N, A, B) : End Sub

Flasher
12.11.2014