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
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.
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
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.
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();
}
}
}
Tags command-line windows