Возьмите этот предыдущий пост в качестве примера: https://superuser.com/a/701739/761937

Это команда, которую я использую. Обычно я щелкаю правой кнопкой мыши по фону папки, открываю подсказку powershell по выбранному пути и запускаю следующую команду:

(Get-ChildItem) | ForEach {Rename-Item  $_.FullName ($_.LastWriteTime.ToString("yyyyMMddHHmmss") + $_.Extension)}

Я добавил дополнительную кнопку, когда щелкнул правой кнопкой мыши на фоне папки, чтобы автоматически запустить нужную мне команду. Это содержание ключа:

powershell.exe -noexit -command "(Get-ChildItem) | ForEach {Rename-Item  $_.FullName ($_.LastWriteTime.ToString("yyyyMMddHHmmss") + $_.Extension)}"

но у меня есть несколько ошибок. PS локализован на моем языке, поэтому я не знаю, могу ли я вставить журнал ошибок, но, возможно, вы можете проверить синтаксис моей команды и сказать мне, если что-то не так

2 ответа2

0

Измените двойные кавычки на одинарные в шаблоне формата даты в методе ToString.

$_.LastWriteTime.ToString('yyyyMMddHHmmss')

Все должно быть в порядке. Параметр вашей команды начинается с двойных кавычек и заканчивается в ToString(" а остальная часть команды не обрабатывается.

0

Rename-Item принимает входные данные по конвейеру, поэтому Foreach не требуется. Либо избежать внутренних двойных кавычек:

powershell.exe -NoP -NoE -C "(Get-ChildItem) | Rename-Item -NewName {($_.LastWriteTime.ToString(\"yyyyMMddHHmmss\") + $_.Extension)}"

или, как предложил WeatherForecastingRat, используйте одинарные кавычки:

powershell.exe -NoP -NoE -C "(Get-ChildItem) | Rename-Item -NewName {($_.LastWriteTime.ToString('yyyyMMddHHmmss') + $_.Extension)}"

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .