Questão renomear vários arquivos adicionar número ao nome usando lote


Eu tenho arquivos na pasta nomeados unix_aaa.txt  unix_bbb.txt  unix_ccc.txt e assim por diante.

Como faço para alterar todos os arquivos que começam com unix para nomes como

001_unix_aaa.txt

002_unix_bbb.txt

003_unix_ccc.txt

0


origem


é lote ou bash? - anishsane
não é o mesmo eu não sei ambos estão bem eu acho que <
batch => windows, bash => linux. A resposta do script mudaria completamente. - anishsane
ahhh é lote :)


Respostas:


Aqui está um script de lote (windows) que fará isso

setlocal enabledelayedexpansion
set n=1
for %%a in (unix_*.txt) do (
if !n! lss 10 (
ren "%%a" "00!n!_%%a"
) else (
if !n! lss 100 (
ren "%%a" "0!n!_%%a"
) else (
if !n! geq 100 (
ren "%%a" "!n!_%%a"
)
)
)
set /a n+=1
)

1



posso pedir mais saída saiu como 001 - 010, então é 010 em vez de 011 como devo corrigi-lo ou não há caminho
O que você quer dizer? Eu não sigo :) - Bali C
: D significa que 001_unix_aaa.txt até 009_unix_aaa.txt, então em 010 ele sai como 0010_unix_aaa.txt, deve ser 010_unix_aaa.txt Eu tento explicar tanto quanto meu inglês pode> _ <
Ah, certo, eu entendi agora: D Já deveria fazer isso, eu fiz checar então seria como 001 010 100 etc eu farei alguns testes! - Bali C
Ei, ei, eu entendi agora, obrigado, porque eu não digitei tudo isso correto, porque seu erro agradece: D: D: D: D: D


Isso é para as conchas Bourne.

n=1; for f in unix*
do
    mv "$f" "`printf %03d $n`_$f"
    n=$((n+1))
done

1



não está funcionando eu coloquei no documento de texto e mude-o. bt todo o nome do arquivo ainda será o mesmo mas agradeço achei o problema o que é printf no comando cmd
apenas linha de comando normal eu não sei muito sobre isso tudo que eu costumava fazer é digitar arquivo .txt, em seguida, alterá-lo .bat e executar
@eathapeking o que faz echo $0 dizer? - kmkaplan
nada muda :) aqui exemplo de nome de arquivo unixinv_RSSPA_16Nov2012.csv
Do primeiro comentário, parece que é lote & não festança - anishsane