Tentando renomear um monte de arquivos através do comando comando prompt ren mas não está dando a saída desejada

2

Estou tentando renomear um monte de arquivos htm por meio do comando ren do Prompt de Comando, mas ele não está dando a saída desejada.

Eu tenho arquivos chamados xyz_alb.htm , xyz_bla.htm ... e assim por diante localizados em diferentes pastas diferentes e quero renomeá-los como zxy_alb.htm , zxy_bla.htm e assim por diante.

Eu tentei o código abaixo:

for /r %x in (xyz*.htm) do ren "%x" zxy*.htm

Mas está substituindo o nome do arquivo inteiro, estou recebendo a saída assim:

zxy.htm, zxy.htm...

Como posso modificar este código para obter o resultado desejado?

Estou substituindo 'NAMU_abl.htm' por 'KALKINSTA_abl.htm' em todas as pastas e subpastas.

    
por Kingk 13.03.2013 / 10:33

3 respostas

0

Estou usando a ferramenta gratuita StExBar para isso, uma extensão de explorador. Muito confortável e tem mais recursos. Informações e download: StExBar

    
por 13.03.2013 / 10:43
0

O ren xyz*.htm zxy*.htm só pode ser interpretado corretamente quando o comando ren executa o próprio processamento de caractere curinga. Você está processando o curinga com o comando for e, portanto, ren vê isso sempre:

ren xyz_alb.htm zxy*.htm

Como não possui um caractere curinga para correspondência, ele não sabe qual parte do nome do arquivo de origem deve ser usado para a substituição e, portanto, resolve:

ren xyz_alb.htm zxy.htm

Então, o que você quer fazer é recorrer pelos diretórios e, em seguida, fazer uma renomeação em cada um deles:

for /d /r %x in (*) do cd "%x" && ren xyz*.htm zxy*.htm

O /d significa apenas diretórios e o /r recorre como de costume. %x se torna o nome do diretório e, assim, mudamos para cada diretório e qualquer arquivo que corresponda ao primeiro parâmetro será renomeado. Você vai querer começar isso acima da primeira pasta que contém os arquivos a serem renomeados.

    
por 13.03.2013 / 10:50
0

depois de tentar tanto tempo nisso não consegui a solução correta, tentei através do java com a ajuda do meu colega.obrigado a ele.

Gostaria de compartilhar o mesmo se alguém precisar.

import java.io.File;

/**
 * This class is search with start file character sequence and replace the file name with new character. 
 * @author nitin.choube
 *
 */

public class  SearchAndReplaceFileName
{
    public static void main(String[] args) 
    {
        //Parent file path from start searching files
        File dir = new File("D:\WS\Upload");
        // replace character string
        final String replaceChar="XYZ";
        // replace character string with
        final String replaceCharWtih="ALB";         
        // file extension
        final String fileExtension=".htm";

        if(dir.isDirectory()){

            File[] children = dir.listFiles();
            iterateFile(children,replaceChar,replaceCharWtih,fileExtension);

        }       
    }

    /**
     * This method is allow to search and replace file name.
     * @param children
     * @param replaceChar
     * @param replaceCharWtih
     * @param fileExtension
     */
    public static void iterateFile(File[] children,String replaceChar,String replaceCharWtih,String fileExtension){
        try {

            for (int i=0; i<children.length; i++) {

                // Get filename of file or directory

                File file = children[i];

                System.out.println("Getting all files in " + file.getCanonicalPath() + " including those in subdirectories");

                  if(file.isDirectory()){

                      File[] child = file.listFiles();

                      iterateFile(child,replaceChar,replaceCharWtih,fileExtension);

                  }else if(file.isFile()){

                      String extension = file.getName().substring(file.getName().lastIndexOf("."));

                      System.out.println("extracted file name is "+file.getName()+" and extension is ="+extension);

                      if(extension.equals(fileExtension)){

                          String fileName=file.getName().substring(0,file.getName().lastIndexOf(fileExtension));

                          if(fileName.startsWith(replaceChar)){

                              String newFileName=fileName.replace(replaceChar,replaceCharWtih);
                              file.renameTo(new File(file.getCanonicalPath().substring(0,file.getCanonicalPath().lastIndexOf("\"))+"\"+newFileName+fileExtension));

                          }else if(fileName.contains("_"+replaceChar+"_")){

                              String newFileName=fileName.replace(replaceChar,replaceCharWtih);
                              file.renameTo(new File(file.getCanonicalPath().substring(0,file.getCanonicalPath().lastIndexOf("\"))+"\"+newFileName+fileExtension));
                          }
                      }
                  }
            }

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
    
por 14.03.2013 / 07:58