Free Trial

Blog

Insights e ideias das mentes mais brilhantes em análise de dados.
carlosteixeira
15 - Aurora
15 - Aurora

Olá Pessoal.

Vou mostrar nesse passo a passo 1 exemplo que criei para Copiar/mover ou Renomear arquivos usando o RUN COMMAND no Alteryx.

Muitas vezes precisamos ler arquivos ou movimentá-los dentro de diretórios em Desktops, Notebooks ou até mesmo entre servidores.

Primeiramente precisamos criar um arquivo, em qualquer diretório, com a extensão .bat;

No nosso exemplo chamamos o arquivo de moviefiles.bat e incluímos o mesmo em um diretório qualquer.

Se você não criar o arquivo antes, quando você selecionar a ferramenta de RUN COMMAND ela irá solicitar para vc criar o arquivo.

clipboard_image_0.png

 

clipboard_image_1.png

Após criar o arquivo .bat, vamos à criação do Workflow no Alteryx:

Passo 1: Definir qual diretório encontra-se os arquivos que queremos copiar/mover, nesse exemplo estou utilizando a ferramente Directory  

clipboard_image_2.png

  - Dica – Não deixar espaços em branco no nome do arquivo – isso dá problemas na execução

clipboard_image_3.png

Acima podemos ver o caminho do diretório onde estão os arquivos e abaixo estamos especificando qualquer arquivo que esteja no diretório pode ser movimentado/copiado, *.*.

Você pode incluir dentro do campo File Specification um único arquivo com nome específico ‘arquivo.txt’, por exemplo, ou qualquer outra extensão de arquivo que você queira movimentar/copiar, usando o ‘*.extensão’. Nesse caso se você especificar qual é o arquivo ou arquivos que quer movimentar/copiar nesse passo, você não necessitará do Passo 2.

clipboard_image_4.png

Notem que ao executar o Workflow o Alteryx nos trás várias informações sobre os arquivos contidos no diretório. O FullPath mostra o caminho exato de onde está cada um dos arquivos e seus respectivos nomes e extensões. O FullPath será importante para os próximos passos.

 

Passo 2: Incluí um Filtro para determinar qual o tipo de arquivo quero que seja movimentado

clipboard_image_5.png

Nesse exemplo, vamos filtar apenas os arquivos que tem extensão ‘.txt’

clipboard_image_6.png

Resultado após o filtro, um único arquivo no diretório satisfaz a condição do Filtro.

 

Passo 3: Criação de um campo com o comando a ser gravado dentro do arquivo ‘.bat’

Neste ponto do Workflow vamos criar um campo com uma expressão que será gravado dentro do arquivo ‘.bat’ que criamos lá no início do processo.

Nesse campo vamos informar qual o comando vamos executar ‘Move/Copy/Delete’, qual o caminho origem completo do arquivo FullPath e qual o caminho destino completo onde o arquivo será movido/copiado.

clipboard_image_7.png

Notem que o campo está lá no final da janela de resultados:

clipboard_image_8.png

O resultado final do campo será:

MOVE C:\Users\VE.00399\Documents\exportar.txt C:\Users\VE.00399\Documents\Carlos

 

Passo 4: utilizamos a ferramenta Select para levarmos apenas o campo que vamos utilizar

Nesse ponto do workflow eliminamos os campos que não nos interessa mais para o processo, e levamos para frente apenas o campo criado no passo anterior ‘MOVECMD’:

clipboard_image_9.pngclipboard_image_10.png

 

Passo 5: Incluir a ferramenta RUN COMMAND do Alteryx para finalizar a movimentação

Neste ponto vamos utilizar a ferramenta de RUN COMMAND. Após arrastar a ferramenta para dentro do Workflow temos que informar qual será o OUTPUT da ferramenta, ou seja, onde ela irá gravar a linha de comando criada acima.

clipboard_image_11.png

Ao clicar na opção Output... basta localizar o arquivo que criamos lá no início do documento dentro do diretório.

clipboard_image_12.png

Após informar o OUTPUT, devemos incluir o caminho de onde está localizado o arquivo ‘.bat’ novamente, neste ponto, ao executar o workflow o Alteryx irá executar o arquivo ‘.bat’ dentro de uma janela de comando, CMD.EXE

clipboard_image_13.png

Você pode marcar as opções de Run Minimized e Run Silent caso não queira visualizar a execução da linha de comando.

Se você quiser ver o processamento enquanto o mesmo ocorre basta desmarcar essas duas opções que as janelas irão aparecer.

 

clipboard_image_14.png

 

Arquivo movimentado após a execução do Workflow

É isso pessoal, espero que tenham gostado e que esse workflow possa ajudar você de alguma maneira a agilizar e automatizar as tarefas do seu dia-a-dia.

Estou disponibilizando o Workflow para download e dentro dele temos outro exemplo utilizando a ferramenta RUN COMMAND, mas desta vez no processo ele irá copiar e renomear os arquivos para outra pasta.

Abraços a todos e #AlteryxEverything

Comentários

Excelente, muito útil a solução do runcommand, uso uma macro que fiz para executar os comandos de forma dinâmica, assim posso usar como parâmetros o executável, os argumentos e o diretório de execução.

Obrigado Carlos! 

 

Seu tutorial me ajudou muito, pois está descrito de forma clara e objetiva. 

 

Porém no meu caso os arquivos possuem espaços. Mas notei que é possível contornar este problema com a inclusão do [FullPath] entre aspas na fórmula que define o comando.

 

No exemplo que você anexou, ficaria desta forma:

 

'MOVE ' +'"'+[FullPath]+'"'+' C:\Users\VE.00399\Documents\Carlos'

 

Um abraço.

carlosteixeira
15 - Aurora
15 - Aurora

Olá  @Lucas_Oliveira obrigado pelo comentário! Fico muito feliz que tenha ajudado.

a intenção é exatamente essa.

 

Conte sempre comigo e com o pessoal aqui da comunidade.

Grande Abraço

Carlos, 

 

Com isso eu consigo copiar um template para dentro de uma planilha de excel existente?

 

Exemplo:

 

Tenho uma planilha 'A', dentro dela eu tenho as sheets A1 e A2. 

 

Com essas sheets eu faço um cruzamento de dados e crio duas massas de dados que serão preenchidas nos templates A3 e A4 que não existem na planilha, porém, eu quero colocar eles após alimentados, na planilha A.

 

Tentei criar com blob e esse método que você publicou, porém consigo apenas copiar os templates A3 e A4 e alimentá-los fora da planilha A.

 

Ainda não consegui copiar o template para o excel existente e ai alimentar.

 

Fez sentido? 

 

Fico no aguardo.

 

Caso seja necessário eu coloco mais informações.

 

Obrigado.

 

carlosteixeira
15 - Aurora
15 - Aurora

@CainãClímaco tudo bem?

 

Não consigo te enviar o workflow por aqui.

De qualquer forma o que quer é possível de fazer sim usando o BLOCK UNTIL DONE antes da gravação na mesma planilha de origem...

 

Algo mais ou menos assim:

 

carlosteixeira2005_0-1611949214546.png

 

Estou lendo e gravando na mesma planilha de origem ok?

Qualquer coisa abre uma duvida no fórum e eu posto o workflow para você.

 

Abraços

FláviaB
Alteryx Community Team
Alteryx Community Team

Oi, @CainãClímaco

Conseguiu dar uma olhada nas recomendações? Nos avise se ainda precisar de ajuda. 

Oi @FláviaB consegui sim.

 

Porém, a explicação da minha dúvida não ficou tão clara hahaahaha

 

Acho que é um pouco mais complexo do que eu apresentei anteriormente.

 

Com a planilha A eu tenho as sheets A1 e A2. Essas sheets estão preenchidas de acordo com uma formatação, header, etc.

 

O que eu preciso:

 

Essa formatação, headers, etc eu criei dois templates fora do arquivo original A, então vou chamar os templates de B1 e B2, os quais serão usados para fazer o input das informações após os cruzamentos das sheets A1 e A2.

 

Com os templates B1 e B2 preenchidos com os campos que eu preciso, exemplo (preenchimento dos campos a partir da linha C11 até a M100000 do excel), eu queria devolver essas sheets pro arquivo original A.

 

Tendo assim, as sheets originais (A1 e A2) mais os templates preenchidos conforme estabelecido antes, (B1 e B2) no mesmo arquivo A.

 

Tentei criar um blob desses arquivos de templates para copiar eles no A mas sem sucesso. Mesma coisa com o seu post de copiar arquivos entre diretorios, tentei criar uma copia do meu arquivo original A e inserindo o resultado de B1 e B2 nela, mas também sem sucesso.

 

Se quiser posso criar um post para compartilhar o fluxo.

FláviaB
Alteryx Community Team
Alteryx Community Team

Opa, seria perfeito. Você acha que poderia ser um Blog? 

E caso a recomendação do @carlosteixeira tenha te ajudado, não esqueça de marcar como solução. 😉

Gabriel_Brandao
Asteroide

Obrigado @carlosteixeira, excelente tutorial!

Estou com uma pequena dificuldade, no meu caso preciso adicionar uma linha extra no arquivo .BAT para configurar o charset em UTF-8. Pra isso seria necessário adicionar na primeira linha do arquivo o comando "chcp 65001" e posteriormente o 

'MOVE ' +[FullPath].

Sabe indicar uma forma de fazer isso? 
Tentei adicionado  "\n" na ferramenta de formula mas não funcionou como eu esperava. 

carlosteixeira
15 - Aurora
15 - Aurora

Fala @Gabriel_Brandao tudo bem?

Já tentou alterar o code page direto no run command?

 

Tenta alterar aqui sem incluir sua linha nova

 

carlosteixeira_0-1624049668381.png

 

Talvez seja mais fácil

 

Me avisa se funciona.

 

Abraços

Gabriel_Brandao
Asteroide

Olá @carlosteixeira, tentei seguindo sua indicação e infelizmente não funcionou. 

Mas acabei resolvendo de uma forma bastante simples. 
Na ferramenta de formula adicionei direto o comando para configuração UTF-8 e em seguida "Enter" para quebra de linha ,segue imagem. 

MoveFiles - Alteryx.PNG

atiritan
Asteroide

@carlosteixeira excelente!! Era o que eu precisava, excelente conteúdo!

 

Complementando, caso o caminho tenha acentuações, é preciso fazer o seguinte ajuste

 

Inserir via text input a informação CHCP 1252 e fazer um union com o comando do CMD, ficando igual na imagem abaixo.

Obs.: Inserir aspas duplas (") entre o caminho dos diretórios.

 

atiritan_0-1645019259278.png

 

Colaboração do @thiago_belarmino 

Rótulos