Страница 1 из 3
Создать папку формата "yyyy-mm-dd" и войти в неё
Добавлено: Вс сен 28, 2014 19:23
Cortina
Здравствуйте!
Есть скрипт Create_folder_date.vbs
Создать папку формата "dd-mm-yyyy" и войти в неё
Код: Выделить всё
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?
Методом высоконаучного тыка ничего поменять не смогла. Скрипт взят, по-моему отсюда, но поиском не нашла. Спасибо!
Добавлено: Вс сен 28, 2014 19:49
Tol!k
Код: Выделить всё
' 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}"
Добавлено: Вс сен 28, 2014 19:59
Cortina
Спасибо!
Добавлено: Вс сен 28, 2014 20:11
Tol!k
если скрипт взят с этого форума, то похоже отсюда http://forum.wincmd.ru/viewtopic.php?t=682
Код: Выделить всё
WScript.CreateObject("WScript.Shell").SendKeys "{F7}" & mydate & "{Enter}" & "{Enter}"
у этого кода недостаток: если папка уже существует, то входа не происходит
Добавлено: Вс сен 28, 2014 20:45
Flasher
Cortina
Без скриптов (откроет в любом случае):
Код: Выделить всё
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
Создать папку с именем системной даты и перейти в неё
Добавлено: Вс сен 28, 2014 22:19
Cortina
Спасибо!

Добавлено: Пн июл 17, 2017 20:37
Flasher
Поскольку для кнопки выше есть проблема при смене формата даты в региональных настройках, привожу правильный vbs с параметрами и поддержкой длинных путей (260+):
Код: Выделить всё
'============================ 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 & """"
Если папка уже существовала, то вход осуществится в любом случае.
Добавлено: Чт июл 20, 2017 10:41
sa
Скрипт с использованием утилиты
TCFS2:
Код: Выделить всё
'================================================
' Создать папку формата 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`)"""
Добавлено: Вт июл 25, 2017 02:30
addhaloka
Вот ещё варианты с nircmd:
Код: Выделить всё
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 не работают, если в пути присутствует юникод. Папка создаётся, но входа в неё не происходит, вместо этого переход на уровень выше папки с юникодным именем.

Добавлено: Вт июл 25, 2017 09:14
Flasher
addhaloka
Это очередной косячок nircmd с Юникодом.
Код: Выделить всё
TOTALCMD#BAR#DATA
%COMMANDER_PATH%\Utils\NirCmd\nircmd.exe exec show "%COMMANDER_EXE%" /O /S
"%P"
wcmicons.dll,80
Открыть эту же папку
У %ComSpec% /c такой проблемы нет.
Добавлено: Вт июл 25, 2017 09:49
addhaloka
Flasher писал(а):Это очередной косячок nircmd с Юникодом.
Не знал, что nircmd не дружит с юникодом. Жаль...
Добавлено: Вт июл 25, 2017 10:17
sa
TC умеет создавать папки и в ZIP-архивах…
Добавлено: Ср окт 04, 2017 11:49
ZZZAlexZZZ
Flasher
В данном скрипте
ссылка
при вызове из папки с длиной пути > 247 символов вылетает ошибка:
---------------------------
Windows Script Host
---------------------------
Сценарий: D:\TC\WSH\create_folder_date_LongPath.vbs
Строка: 10
Символ: 32
Ошибка: Файл не найден
Код: 800A0035
Источник: Ошибка выполнения Microsoft VBScript
---------------------------
ОК
---------------------------
Как исправить ошибку для длинных путей?
Для коротких путей работает без проблем.
Добавлено: Чт окт 05, 2017 11:01
Zmy
У меня этот скрипт работает с более 400 символов.
Добавлено: Чт окт 05, 2017 11:10
ZZZAlexZZZ
Перепроверил.
Скрипт отрабатывает на локальном жестком диске (остановился на 378 символов, работает).
На сетевой папке, подключенной как диск выдает ту же ошибку. Может быть это поможет?