Ir ao conteúdo

Posts recomendados

Postado

Boa tarde galera, estou com uma duvida e não to achando a solução.

tem um programa que gera todos os dias um arquivo novo, so que é gerado dentro de uma subpasta dentro do diretorio raiz. Eu estou usando o robocopy para copiar diariamente esses arquivos novos para uma outra pasta, porém ele copia as subpastas. eu gostaria de saber de tem algum comando que copia apenas os arquivos que estão dentro das subpastas.

Grato.

Postado
9 minutos atrás, ricardo_br disse:

@viniciusnffTem como postar o seu comando atual? O xcopy ou copy acredito que são melhores para essa situação.

estou usando o básico: 
ROBOCOPY "C:\Users\Work\mvtech" "C:\Users\Work\Desktop\Nova" /COPYALL /Z /R:3 /W:10 /XO
 

se eu colocar um /s ou /e vai copiar as subpastas inteiras, eu queria apenas os arquivos dentro delas.
 

Postado

qual o motivo de não copiar a pasta original com o nome da nova pasta?
qual o objetivo especifico? apenas mover? deixar as duas sempre iguais? manter as permissões de pastas diferentes uma da outra?

 

Postado
17 minutos atrás, Swalls disse:

qual o motivo de não copiar a pasta original com o nome da nova pasta?
qual o objetivo especifico? apenas mover? deixar as duas sempre iguais? manter as permissões de pastas diferentes uma da outra?

 

os arquivos gerados diariamente sao xml, ou seja, geram 30 subpastas por mes com um xml dentro de cada. o pessoal da controladoria, tem que pegar um por um manualmente e subir em outro programa para fazer uma apuração, assim leva um tempo.
é apenas para automatizar, copiar os xmls gerados de uma vez só para uma pasta sem as subpastas.

Postado
31 minutos atrás, viniciusnff disse:

os arquivos gerados diariamente sao xml, ou seja, geram 30 subpastas por mes com um xml dentro de cada. o pessoal da controladoria, tem que pegar um por um manualmente e subir em outro programa para fazer uma apuração, assim leva um tempo.
é apenas para automatizar, copiar os xmls gerados de uma vez só para uma pasta sem as subpastas.

cd "caminho\da\pasta\onde\as\subpastas\estão"
for /r %i in (*) do copy %i "caminho\da\pasta\que\vai\ser\tudo\junto"

 

basicamente assim?

 

mas qual seria a relação com redes em internet? é de um armazenamento para outro na rede? se sim, tem algumas diferenças.

Postado
25 minutos atrás, Swalls disse:
cd "caminho\da\pasta\onde\as\subpastas\estão"
for /r %i in (*) do copy %i "caminho\da\pasta\que\vai\ser\tudo\junto"

 

basicamente assim?

testei aqui porém não funcionou 😞

Postado

Cara, pode tentar scripts de shellccript, VB ou qualquer outra linguagem com uma biblioteca que acessa arquivos do windows, como a fs se optar por usar node com js.
Aqui tem um template de codigo, usando js puro gerado no gpt mesmo, por ser um comando relativamente simples, não deve ter dificuldades, usa também uma cron para agendar a repetição do script
 

const fs = require('fs');
const path = require('path');
const cron = require('node-cron');

function copyFiles(sourceDir, targetDir) {
    if (!fs.existsSync(targetDir)) {
        fs.mkdirSync(targetDir, { recursive: true });
    }

    const items = fs.readdirSync(sourceDir);

    items.forEach(item => {
        const sourcePath = path.join(sourceDir, item);

        if (fs.lstatSync(sourcePath).isDirectory()) {
            copyFiles(sourcePath, targetDir);
        } else {
            const targetFilePath = path.join(targetDir, path.basename(item));
            fs.copyFileSync(sourcePath, targetFilePath);
            console.log(`Arquivo copiado: ${sourcePath} -> ${targetFilePath}`);
        }
    });
}

// Diretórios de origem e destino
const sourceDir = './diretorio-x';
const targetDir = './diretorio-y';

// Agendamento da tarefa usando node-cron
cron.schedule('0 0 * * *', () => {
    console.log('Iniciando a cópia de arquivos...');
    copyFiles(sourceDir, targetDir);
    console.log('Cópia de arquivos concluída.');
}, {
    scheduled: true,
    timezone: "America/Sao_Paulo" // Define o fuso horário, se necessário
});

// Mantém o script rodando
console.log('Script de cópia de arquivos agendado para execução diária.');
 

Postado

como você testou? copiou no cmd ou usou em script .bat? acabei de testar aqui e funcionou.

são duas pastas no mesmo computador ou você está passando para outro computador na rede?

 

se for no cmd:
você copia primeiro esse para ir até a pasta:

cd "C:\Users\Work\mvtech"


e dps esse para mover os itens das pastas:
 

for /r %i in (*) do copy %i "C:\Users\Work\Desktop\Nova"

 

 

se for no .bat fica assim:

for /r "C:\Users\Work\mvtech" %i in (*) do copy "%%i" "C:\Users\Work\Desktop\Nova"

 

se você estiver logado no usuário Work você pode usar a variável de evento %userprofile% que já leva direto para c:\Users\seu_usuário

 

ficando:

for /r "%userprofile%\mvtech" %i in (*) do copy "%%i" "%userprofile%\Desktop\Nova"



 

 

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!