Adicione o botão de menu contextual para executar o comando powershell dentro de uma pasta

0

Veja este post anterior como exemplo: link

Este é o comando que eu uso. Geralmente, clico com o botão direito do mouse no plano de fundo da pasta, abro um prompt do powershell no caminho selecionado e executo o seguinte comando:

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

Eu adicionei um botão adicional quando clico com o botão direito no segundo plano da pasta para executar automaticamente o comando de que preciso. Este é o conteúdo da chave:

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

mas tenho vários erros. PS está localizado na minha língua, então eu não sei se eu posso colar o log de erro, mas talvez você possa verificar a sintaxe do meu comando e me dizer se há algo errado

    
por 1500822802299 21.08.2017 / 00:04

2 respostas

0

Altere as aspas duplas para aspas simples em seu padrão de formato de data dentro do método ToString.

$_.LastWriteTime.ToString('yyyyMMddHHmmss')

Deve ficar bem. Seu parâmetro de comando começa com aspas duplas e termina em ToString(" e o restante do comando não é processado.

    
por 21.08.2017 / 00:39
0

Renomear-Item aceita entrada canalizada, então não é necessário Foreach. Ou escape entre aspas duplas internas:

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

ou como WeatherForecastingRat sugerido, use aspas simples:

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

Tags