Script do Windows para ser executado como um lote para substituir o caractere na lista de nomes de arquivos

2

Eu tenho 4 arquivos como abaixo:

C:\Documents and Settings\vm\AC R\test

JE.BOS.20130516.CSV
JE.BES.20130516.CSV
KFROPN.SAVEFILE.CSV
KFBAD.SAVEFILE.CSV

Eu tenho que substituir "." no nome do arquivo por "-" . Mas a extensão .CSV deve permanecer igual.

1) Eu executei o comando abaixo e recebi o erro abaixo:

for /f "tokens=1*delims=." %%i in ('dir /a-d/b *.*.CSV') do ren "%%~i.%%~j" "%%~i-%%~j"

Erro:

C:\Documents and Settings\vm\AC R\test>for /f "tokens=1*delims=." %%
i in ('dir /a-d/b *.*.CSV') do ren "%%~i.%%~j" "%%~i-%%~j"
%%i was unexpected at this time.

2) Eu removi um% antes de i e executei como abaixo:

for /f "tokens=1*delims=." %i in ('dir /a-d/b *.*.CSV') do ren "%%~i.%%~j" "%%~i-%%~j"

e recebi o erro abaixo:

C:\Documents and Settings\vmeruga\ACCESS RECS\test>for /f "tokens=1*delims=." %i
 in ('dir /a-d/b *.*.CSV') do ren "%%~i.%%~j" "%%~i-%%~j"

C:\Documents and Settings\vmeruga\ACCESS RECS\test>ren "%JEFFERIES.%BODPOS.20130
516.CSV" "%JE-%BODPOS.20130516.CSV"
The system cannot find the file specified.

C:\Documents and Settings\vmeruga\ACCESS RECS\test>ren "%JEFFERIES.%BODTRADES.20
130516.CSV" "%JE-%BODTRADES.20130516.CSV"
The system cannot find the file specified.

C:\Documents and Settings\vmeruga\ACCESS RECS\test>ren "%KFBAROPN.%SAVEFILE.CSV"
 "%KFOPN-%SAVEFILE.CSV"
The system cannot find the file specified.

C:\Documents and Settings\vmeruga\ACCESS RECS\test>ren "%KFBARTRD.%SAVEFILE.CSV"
 "%KFBARTRD-%SAVEFILE.CSV"
The system cannot find the file specified.
    
por user225817 28.05.2013 / 11:12

2 respostas

2

Aqui você vai, salve o seguinte como um arquivo .BAT e execute:

@setlocal enabledelayedexpansion&&for /f %%a in ('dir /b *.csv') do @set fn=%%~na&&set fn=!fn:.=-!&&ren "%%a" "!fn!%%~xa"
    
por 28.05.2013 / 17:03
0

tente isso, veja a saída e remova a palavra echo , se estiver OK:

@echo off&setlocal
cd /d "C:\Documents and Settings\vm\AC R\test"
for %%i in (*.*.csv) do (
    set "fname=%%~ni"
    setlocal enabledelayedexpansion
    set "nname=!fname:.=-!"
    echo rename "!fname!.CSV" "!nname!.CSV"
    endlocal
)
    
por 28.05.2013 / 21:35