Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Создать папку формата "yyyy-mm-dd" и войти в неё
Goto page 1, 2, 3  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
Cortina



Joined: 19 Jun 2012
Posts: 9

Post (Separately) Posted: Sun Sep 28, 2014 19:23    Post subject: Создать папку формата "yyyy-mm-dd" и войти в неё Reply with quote

Здравствуйте!
Есть скрипт Create_folder_date.vbs
Создать папку формата "dd-mm-yyyy" и войти в неё
Code:
mydate = Right("0" & Day(date), 2) & "-" & Right("0" & Month(date), 2) & "-" & Year(date)
WScript.CreateObject("WScript.Shell").SendKeys "{F7}" & mydate & "{Enter}" & "{Enter}"

Подскажите, пожалуйста, как сделать дату не dd-mm-yyyy, а yyyy-mm-dd?
Методом высоконаучного тыка ничего поменять не смогла. Скрипт взят, по-моему отсюда, но поиском не нашла. Спасибо!
Back to top
View user's profile Send private message
Tol!k



Joined: 01 Apr 2008
Posts: 1727
Location: Арзамас

Post (Separately) Posted: Sun Sep 28, 2014 19:49    Post subject: Reply with quote

Code:
' mydate = Right("0" & Day(date), 2) & "-" & Right("0" & Month(date), 2) & "-" & Year(date)
mydate = Year(date) & "-" & Right("0" & Month(date), 2) & "-" & Right("0" & Day(date), 2)
WScript.CreateObject("WScript.Shell").SendKeys "{F7}" & mydate & "{Enter}" & "{Enter}"
Back to top
View user's profile Send private message
Cortina



Joined: 19 Jun 2012
Posts: 9

Post (Separately) Posted: Sun Sep 28, 2014 19:59    Post subject: Reply with quote

Спасибо!
Back to top
View user's profile Send private message
Tol!k



Joined: 01 Apr 2008
Posts: 1727
Location: Арзамас

Post (Separately) Posted: Sun Sep 28, 2014 20:11    Post subject: Reply with quote

если скрипт взят с этого форума, то похоже отсюда http://forum.wincmd.ru/viewtopic.php?t=682


Code:
WScript.CreateObject("WScript.Shell").SendKeys "{F7}" & mydate & "{Enter}" & "{Enter}"
у этого кода недостаток: если папка уже существует, то входа не происходит
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Sun Sep 28, 2014 20:45    Post subject: Reply with quote

Cortina
Без скриптов (откроет в любом случае):
Code:
TOTALCMD#BAR#DATA
%COMMANDER_PATH%\Utils\nircmd\nircmd.exe execmd md
"%%date:~6%%-%%date:~3,2%%-%%date:~0,2%%" & "%%COMMANDER_EXE%%" /O /S "%P%%date:~6%%-%%date:~3,2%%-%%date:~0,2%%"
wcmicons.dll,83
Создать папку с именем системной даты и перейти в неё

_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
Cortina



Joined: 19 Jun 2012
Posts: 9

Post (Separately) Posted: Sun Sep 28, 2014 22:19    Post subject: Reply with quote

Спасибо! Very Happy
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Mon Jul 17, 2017 21:37    Post subject: Reply with quote

Lavr wrote:
мне будет полезен код, который создаст каталог с текущей датой с автовходом
Поскольку для кнопки выше есть проблема при смене формата даты в региональных настройках, привожу правильный vbs с параметрами и поддержкой длинных путей (260+):
Code:
'============================ VBS ============================
' Создать папку с именем даты формата YYYY-MM-DD и войти в неё
' Параметры: "%P" <разделитель элементов даты> (прим.: "%P" .)
'=============================================================
Set A = WSH.Arguments : P = A(0) & Year(Date) & A(1) & _
Right("0" & Month(Date), 2) & A(1) & Right("0" & Day(Date), 2)
Set WSS = CreateObject("WScript.Shell")
If Len(P) < 260 Then F = P Else F = "\\?\" & P
With CreateObject("Scripting.FileSystemObject")
  If Not .FolderExists(F) Then .CreateFolder F
  V = .GetFileVersion(WSS.ExpandEnvironmentStrings("%COMMANDER_EXE%"))
End With
If Len(P) < 260 Or (Len(P) > 259 And Left(V, InStr(V, ".") - 1) >= 9) Then _
WSS.Exec "%COMMANDER_EXE% /S /O L=""" & P & """"
Если папка уже существовала, то вход осуществится в любом случае.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
sa



Joined: 29 Apr 2009
Posts: 2624

Post (Separately) Posted: Thu Jul 20, 2017 11:41    Post subject: Reply with quote

Скрипт с использованием утилиты TCFS2:
Code:
'================================================
' Создать папку формата YYYY-MM-DD и войти в неё
' Требуется утилита TCFS2
'================================================
 TCFS2 = "%COMMANDER_PATH%\Utils\TCFS2\TCFS2.exe"
'================================================
 ND = Year(Date) & "-" & Right("0" & Month(Date), 2) & "-" & Right("0" & Day(Date), 2)
 WScript.CreateObject("WScript.Shell").Exec TCFS2 _
 & " /ef ""tcm(907,1) eval(send_wait(`~(" & ND & "{ENTER})`, findwnd(`TCOMBOINPUT`)))" _
 & " eval(send_wait({ENTER}, findwnd(`#32770`),0))" _
 & " set_ini(`%COMMANDER_PATH%\usercmd.ini`, em_Temp, cmd, `cd " & ND & "`) tem(`em_Temp`)"""


Last edited by sa on Tue Jul 25, 2017 12:07; edited 2 times in total
Back to top
View user's profile Send private message
addhaloka



Joined: 09 Nov 2010
Posts: 169

Post (Separately) Posted: Tue Jul 25, 2017 03:30    Post subject: Reply with quote

Вот ещё варианты с nircmd:
Code:
TOTALCMD#BAR#DATA
"%COMMANDER_PATH%\nircmd.exe" execmd md ~$currdate.yyyy-MM-dd$ &
"%%COMMANDER_EXE%%" /O /S "%P~$currdate.yyyy-MM-dd$"
wcmicons.dll,29
Создать папку yyyy-MM-dd и перейти в неё


-1

TOTALCMD#BAR#DATA
"%COMMANDER_PATH%\nircmd.exe" execmd md ~$currdate.yyyy-MM-dd$_~$currtime.HH-mm-ss$ &
"%%COMMANDER_EXE%%" /O /S "%P~$currdate.yyyy-MM-dd$_~$currtime.HH-mm-ss$"
wcmicons.dll,29
Создать папку yyyy-MM-dd_HH-mm-ss и перейти в неё


-1

p.s. Что-то варианты с nircmd не работают, если в пути присутствует юникод. Папка создаётся, но входа в неё не происходит, вместо этого переход на уровень выше папки с юникодным именем. Confused
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Tue Jul 25, 2017 10:14    Post subject: Reply with quote

addhaloka
 Это очередной косячок nircmd с Юникодом.
У %ComSpec% /c такой проблемы нет.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
addhaloka



Joined: 09 Nov 2010
Posts: 169

Post (Separately) Posted: Tue Jul 25, 2017 10:49    Post subject: Reply with quote

Flasher wrote:
Это очередной косячок nircmd с Юникодом.

Не знал, что nircmd не дружит с юникодом. Жаль...
Back to top
View user's profile Send private message
sa



Joined: 29 Apr 2009
Posts: 2624

Post (Separately) Posted: Tue Jul 25, 2017 11:17    Post subject: Reply with quote

TC умеет создавать папки и в ZIP-архивах…
Back to top
View user's profile Send private message
ZZZAlexZZZ



Joined: 08 Mar 2014
Posts: 68

Post (Separately) Posted: Wed Oct 04, 2017 12:49    Post subject: Reply with quote

Flasher
В данном скрипте
ссылка
при вызове из папки с длиной пути > 247 символов вылетает ошибка:
---------------------------
Windows Script Host
---------------------------
Сценарий: D:\TC\WSH\create_folder_date_LongPath.vbs
Строка: 10
Символ: 32
Ошибка: Файл не найден
Код: 800A0035
Источник: Ошибка выполнения Microsoft VBScript

---------------------------
ОК
---------------------------
Как исправить ошибку для длинных путей?
Для коротких путей работает без проблем.
Back to top
View user's profile Send private message
Zmy



Joined: 06 Apr 2015
Posts: 78

Post (Separately) Posted: Thu Oct 05, 2017 12:01    Post subject: Reply with quote

У меня этот скрипт работает с более 400 символов.
Back to top
View user's profile Send private message
ZZZAlexZZZ



Joined: 08 Mar 2014
Posts: 68

Post (Separately) Posted: Thu Oct 05, 2017 12:10    Post subject: Reply with quote

Перепроверил.
Скрипт отрабатывает на локальном жестком диске (остановился на 378 символов, работает).
На сетевой папке, подключенной как диск выдает ту же ошибку. Может быть это поможет?
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander All times are GMT + 4 Hours
Goto page 1, 2, 3  Next
Page 1 of 3

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group