Подскажите, пожалуйста, как сделать дату не dd-mm-yyyy, а yyyy-mm-dd?
Методом высоконаучного тыка ничего поменять не смогла. Скрипт взят, по-моему отсюда, но поиском не нашла. Спасибо!
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) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Поскольку для кнопки выше есть проблема при смене формата даты в региональных настройках, привожу правильный 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 & """"
Если папка уже существовала, то вход осуществится в любом случае.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
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 не работают, если в пути присутствует юникод. Папка создаётся, но входа в неё не происходит, вместо этого переход на уровень выше папки с юникодным именем.
TOTALCMD#BAR#DATA
%COMMANDER_PATH%\Utils\NirCmd\nircmd.exe exec show "%COMMANDER_EXE%" /O /S
"%P"
wcmicons.dll,80
Открыть эту же папку
У %ComSpec% /c такой проблемы нет.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Flasher
В данном скрипте ссылка
при вызове из папки с длиной пути > 247 символов вылетает ошибка:
---------------------------
Windows Script Host
---------------------------
Сценарий: D:\TC\WSH\create_folder_date_LongPath.vbs
Строка: 10
Символ: 32
Ошибка: Файл не найден
Код: 800A0035
Источник: Ошибка выполнения Microsoft VBScript
---------------------------
ОК
---------------------------
Как исправить ошибку для длинных путей?
Для коротких путей работает без проблем.
Перепроверил.
Скрипт отрабатывает на локальном жестком диске (остановился на 378 символов, работает).
На сетевой папке, подключенной как диск выдает ту же ошибку. Может быть это поможет?