jsTree e jQuery

Pesquisar este blog

Contribua

Te ajudei? Quer retribuir? PIX de qualquer quantia.

Java - Fazer seu programa de prompt rodar a partir de qualquer diretório

 Vantagens

  • Java roda em Linux, as possibilidades são infinitas.
  • Java é mais poderoso que um arquivo .bat e este não é compatível com Linux.
  • E eu particularmente acho o código Java muito mais fácil que o de um .bat 

 

 

Explicando o meu programa

 

Tenho vários arquivos com esse formato de nome. Quero uma pasta para cada código conforme o nome dos arquivos, e que eles esteja armazenados nelas.

VRJ_018_OPERADOR.sql
VRJ_018_AUXILIAR.sql
VRJ_018_CONTROLE.sql
VRJ_018_NEGOCIO.sql
PROCESS_042_OPERADOR.sql
PROCESS_042_AUXILIAR.sql
PROCESS_042_CONTROLE.sql
PROCESS_042_NEGOCIO.sql
ATIVO_030_OPERADOR.sql
ATIVO_030_AUXILIAR.sql
ATIVO_030_CONTROLE.sql
ATIVO_030_NEGOCIO.sql
...

 Objetivo




Escolha uma pasta ou crie uma para armazenar seu softwares em Java que trarão produtividade para o seu prompt, Ex: C:\JAVA_LIB


Eu acreditava que era possível colocar apenas o .java na pasta e usar, pensava que ao chamar

java SepararArquivos.java

tudo iria funcionar.

Não dá certo, tem que converter para bytecodes, gerando o arquivo .class

Então dentro da pasta C:\JAVA_LIB se ainda não possui o .class, dê o comando

javac SeparaArquivos.java

Será gerado um arquivo com a extensão .class, no meu caso em particular

SepararArquivos.class


 

Inclua na variável de ambiente CLASSPATH o caminho C:\JAVA_LIB


Basta chamar 

java SeparaArquivos



Pronto! Chame seu programa Java a partir de qualquer diretório sempre que precisar processar algo.

Claro, o seu Java deve estar instalado corretamente.

 

Java roda em Linux, as possibilidades são infinitas.

Java é mais poderoso que um arquivo .bat e este não é compatível com Linux.

E eu particularmente acho o código Java muito mais fácil que o de um .bat

 


Esse código dá para melhorar muito, está assim porque pedi o auxílio do ChatGPT. Meu foco aqui foi organizar os arquivos e não criar o melhor separador de arquivos do mundo.

Um simples exemplo if(arquivos != null) não precisa aninhar.

Eu já daria um return if(arquivos == null){ return}


import java.io.*;
import java.nio.file.*;
import java.util.regex.*;

public class SeparaArquivos {
    public static void main(String[] args) {
        String pastaOrigem = System.getProperty("user.dir");
        String pastaDestino = System.getProperty("user.dir");

        moverArquivos(pastaOrigem, pastaDestino);
    }

    public static void moverArquivos(String pastaOrigem, String pastaDestino) {
        File diretorioOrigem = new File(pastaOrigem);
        File[] arquivos = diretorioOrigem.listFiles();

        if (arquivos != null) {
            for (File arquivo : arquivos) {
                if (arquivo.isFile() && arquivo.getName().toLowerCase().endsWith(".sql") ) {
                    String nomeArquivo = arquivo.getName();
                    String numero = extrairNumero(nomeArquivo);

                    if (numero != null) {
                        File novaPasta = new File(pastaDestino + File.separator + numero);
                        if (!novaPasta.exists()) {
                            novaPasta.mkdirs();
                        }

                        try {
                            Path origem = arquivo.toPath();
                            Path destino = new File(novaPasta.getPath() + File.separator + nomeArquivo).toPath();
                            Files.move(origem, destino, StandardCopyOption.REPLACE_EXISTING);
                            System.out.println("Arquivo " + nomeArquivo + " movido para a pasta " + numero);
                        } catch (IOException e) {
                            System.out.println("Erro ao mover o arquivo " + nomeArquivo);
                        }
                    }
                }
            }
        }
    }
    
    public static String extrairNumero(String nomeArquivo) {
        String numero = null;
        Pattern pattern = Pattern.compile("_(\\d+)_");
        Matcher matcher = pattern.matcher(nomeArquivo);
       
        if (matcher.find()) {
            numero = matcher.group(1);
        }
       
        return numero;
    }

}



Nenhum comentário:

Postar um comentário