Renomeando arquivos com uma data anterior

1

Estou executando um programa que cria 50 relatórios para diferentes clientes em formato pdf no primeiro dia de cada mês. Preciso do nome do arquivo para refletir o mês anterior e o ano atual no nome do arquivo, por exemplo, 2014_09_ASI.pdf. Atualmente estou renomeando os relatórios com a data depois que eles são criados usando um arquivo em lotes. Mas eu só posso obter um arquivo de lote para usar o mês atual e não voltar um mês para o nome. Alguma idéia se eu posso fazer isso com o PowerShell?

    
por Python29 18.09.2014 / 02:08

2 respostas

1

Execute o relatório e o script às 23h59. Isso permitirá que você renomeie os arquivos com o ano e o mês atuais, supondo que todo o processo possa ser executado antes que o minuto termine.

Aqui estão algumas outras soluções sobre como faça o que quiser como PowerShell ou Batch.

    
por 18.09.2014 / 04:20
1

Os cmdlets Get-Date do PowerShell permitem que a matemática e o typecasting sejam agrupados, o que você pode usar facilmente.

Para obter o último mês:

(get-date).month - 1

Para obter uma sequência de um mês atrás:

[string]((get-date).month - 1) + "_" + (get-date).Day

Então, para nomear para o arquivo no formato: Year_LastMonth # _ASI.pdf:

$LastMonth = (Get-Date).Month - 1
$year = (get-date).year

$newFileName = "$lastMonth $year ASI.pdf" -replace ' ', '_'

Você também pode usar a expansão de variáveis para fazer o mesmo, ou até mesmo um one-liner se você realmente quiser, mas dependendo da versão do PS eu achei a expansão de variáveis um pouco imprevisível ... Então usei espaços para assegure uma expansão precisa e substitua o "" na nova variável por "_".

    
por 21.09.2014 / 23:10

Tags