Я пытаюсь получить дату изменения файла независимо от локали, используя следующую команду wmic
:
wmic DataFile WHERE Name="D:\\Data\\sample.txt" GET LastModified
Это работает отлично, если данный путь к файлу не содержит запятой ,
.
Метод ниже позволяет запятые в пути к файлу, но не работает, если появляется закрывающая скобка )
:
wmic DataFile WHERE (Name="D:\\Data\\sample.txt") GET LastModified
До сих пор я пробовал множество разных комбинаций, но безуспешно:
WHERE Name=D:\\Data\\sample.txt
(это вообще не работает, я думаю, из-за неправильного типа данных)WHERE Name="D:\\Data\\sample.txt"
(с ошибкой,
)WHERE Name='D:\\Data\\sample.txt'
(это не с,
) *WHERE (Name="D:\\Data\\sample.txt")
(это не работает с)
)WHERE (Name='D:\\Data\\sample.txt')
(это не с)
) *WHERE 'Name="D:\\Data\\sample.txt"'
(это не с,
)WHERE "Name='D:\\Data\\sample.txt'"
(с ошибкой,
)WHERE "Name=\"D:\\Data\\sample.txt\""
(это не с,
) *WHERE ^"Name=\"D:\\Data\\sample.txt\"^"
(это не работает с,
)
экранирование,
и/или)
с помощью\
тоже не работает;
<суб > *) Это попытки, которые мне не нравятся, потому что не существует ""
, чтобы заключить путь к файлу, что может привести к проблемам с разделителями (SPACE, TAB, ;
, =
и ,
) или специальные символы, такие как ^
, &
, (
и )
.
Суб >
Итак, есть ли способ разрешить оба символа ,
и )
в пути к файлу для запроса wmic
не сбой? Есть ли специальный символ (последовательность) для удаления запятых или закрывающих круглых скобок? Или есть, возможно, другой метод для решения этой проблемы, с другим типом запроса или предложением WHERE
?
Есть аналогичный вопрос: Как избежать запятой в WMIC внутри, как строка; но он должен избегать только ,
и не полностью разрабатывает также экранирование )
. Вот почему я спрашиваю...