Я пытаюсь получить дату изменения файла независимо от локали, используя следующую команду 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 внутри, как строка; но он должен избегать только , и не полностью разрабатывает также экранирование ). Вот почему я спрашиваю...