Cenário: Você tem uma pasta com 50 arquivos XML de NF-e e precisa extrair códigos de produto.
Configuração:
# No arquivo ProcessarLoteNFe.ps1, linha 21
$pastaOrigem = "/Users/usuario/Documents/NFes"Execução:
pwsh -NoProfile -Command "& './ProcessarLoteNFe.ps1'"Resultado Esperado:
Iniciando o processo de automação (v2.2)...
Encontrados 50 arquivos XML para processar.
--------------------------------------------------------
[PROCESSANDO]: NF001.xml
[Item 1]: PADRÃO ENCONTRADO! | Alterando cProd de "001" para "12345"
[Item 2]: PADRÃO ENCONTRADO! | Alterando cProd de "002" para "67890"
-> Concluído. 15 alterações salvas como 'arquivoImportacao_NF001.xml' na pasta de origem.
[PROCESSANDO]: NF002.xml
[Item 1]: PADRÃO ENCONTRADO! | Alterando cProd de "001" para "54321"
-> Concluído. 8 alterações salvas como 'arquivoImportacao_NF002.xml' na pasta de origem.
--------------------------------------------------------
✅ Processo em lote finalizado.
Cenário: Seus XMLs têm diferentes formatos de código na tag <infAdProd>.
Exemplos de Padrões Reconhecidos:
<infAdProd>Código do produto: 12345</infAdProd>Resultado: cProd será alterado para 12345
<infAdProd>Ref: 67890</infAdProd>Resultado: cProd será alterado para 67890
<infAdProd>Produto 54321</infAdProd>Resultado: cProd será alterado para 54321
<infAdProd>Referência 98765</infAdProd>Resultado: cProd será alterado para 98765
Cenário: Você tem uma pasta com arquivos já processados e novos arquivos.
Estrutura da Pasta:
/Users/usuario/Documents/NFes/
├── NF001.xml # Arquivo original
├── arquivoImportacao_NF002.xml # Arquivo já processado
├── NF003.xml # Arquivo original
└── NF004.xml # Arquivo original
Execução:
pwsh ProcessarLoteNFe.ps1Resultado:
Iniciando o processo de automação (v2.2)...
Encontrados 4 arquivos XML para processar.
--------------------------------------------------------
[IGNORANDO]: O arquivo arquivoImportacao_NF002.xml já é um arquivo processado.
[PROCESSANDO]: NF001.xml
[Item 1]: PADRÃO ENCONTRADO! | Alterando cProd de "001" para "12345"
-> Concluído. 12 alterações salvas como 'arquivoImportacao_NF001.xml' na pasta de origem.
[PROCESSANDO]: NF003.xml
-> Concluído. Nenhuma alteração necessária para este arquivo.
[PROCESSANDO]: NF004.xml
[Item 1]: PADRÃO ENCONTRADO! | Alterando cProd de "001" para "67890"
-> Concluído. 5 alterações salvas como 'arquivoImportacao_NF004.xml' na pasta de origem.
--------------------------------------------------------
✅ Processo em lote finalizado.
XML de Entrada:
<infAdProd>Descrição do produto sem código</infAdProd>Resultado:
[PROCESSANDO]: NF005.xml
-> Concluído. Nenhuma alteração necessária para este arquivo.
Resultado:
[PROCESSANDO]: NF006.xml
Ocorreu um erro crítico ao processar o arquivo 'NF006.xml':
The 'nfe' prefix is not defined.
Configuração:
# Linha 24 do script
$prefixoArquivoSaida = "NF_Processada"Resultado:
Arquivos gerados: NF_Processada_NF001.xml
Configuração para Windows:
$pastaOrigem = "C:\Users\usuario\Documents\NotasFiscais"Configuração para macOS/Linux:
$pastaOrigem = "/home/usuario/documents/notas-fiscais"Crontab:
# Executar diariamente às 8h
0 8 * * * cd /path/to/ProcessarLoteNFe && pwsh ProcessarLoteNFe.ps1Comando:
powershell.exe -NoProfile -ExecutionPolicy Bypass -File "C:\path\to\ProcessarLoteNFe.ps1"Execução com Log Detalhado:
pwsh ProcessarLoteNFe.ps1 | tee processamento.logAnálise de Resultados:
# Contar arquivos processados
ls arquivoImportacao_*.xml | wc -l
# Verificar tamanho dos arquivos
ls -la arquivoImportacao_*.xmlAntes da execução:
# Criar backup dos arquivos originais
cp -r /path/to/xmls /path/to/backup/$(date +%Y%m%d_%H%M%S)Após a execução:
# Verificar se todos os arquivos foram processados
echo "Arquivos originais: $(ls *.xml | grep -v arquivoImportacao | wc -l)"
echo "Arquivos processados: $(ls arquivoImportacao_*.xml | wc -l)"- Sempre faça backup antes de processar
- Teste com poucos arquivos primeiro
- Monitore os logs de execução
- Use caminhos absolutos para evitar problemas
- Processar arquivos já modificados
- Executar sem verificar permissões
- Ignorar mensagens de erro
- Usar caminhos com espaços sem aspas
Exemplos v2.2.0 - Dezembro 2024