copie e renomeie vários arquivos .csv de uma máquina para outra usando arquivo em lote

0

Dados disponíveis na fonte

20161020162432intsol_wla_00000304.csv
$20161020162432intsol_wla_00000305.csv

& 20 a 30 arquivos semelhantes.

Os dados a serem recebidos no destino devem ser os seguintes:

intsol_wla_20161020162432_00000304.csv
intsol_wla_$20161020162432_00000305.csv

Abaixo está o que estou tentando fazer:

copy "d:\source\ *int.csv" "d:\destination\ *intsol_wla_%date:~-4,4%%date:~3,2%%date:~-10,2%.csv"

mas isso retorna:

20161020162432_intsol_wla_2016 111.csv
$20161020162432_intsol_wla_2016 111.csv

Como posso resolver isso?

    
por james1004 11.11.2016 / 18:01

2 respostas

0

Suponho que você queira dizer "copiar e renomear ..... de uma pasta para outra pasta" e não de "máquinas".

Se esse for o caso, aqui está um código que pode fazer o trabalho: (Arquivos com $ significam algum problema, então eu criei dois 'for' loops para lidar com ambos os casos)

@echo off

SET source="d:\source\"
SET dest="d:\destination\"

for %%a in (%source%$??????????????intsol_wla_*.csv) do (
    for %%F in (%%a) do (SET file=%%~nxF
        copy %%a %dest%intsol_wla_%file:~0,15%_%file:~26,8%.csv
    )
)

for %%b in (%source%??????????????intsol_wla_*.csv) do (
    for %%F in (%%b) do (SET file2=%%~nxF
        copy %%b %dest%intsol_wla_%file2:~0,14%_%file2:~25,8%.csv
    )
)
    
por 11.11.2016 / 21:27
0

Meu primeiro para listar os arquivos, o segundo pega os nomes e os divide na letra i e no sublinhado dando quatro tokens.

NAME   20161020162432intsol_wla_00000304.csv
      $20161020162432intsol_wla_00000305.csv
TOKEN ------1--------|--2--|-3-|------4-----

Como a parte intsol_wla_ é constante, precisamos apenas de token1 e 4

@Echo off & SetLocal EnableExtensions
Set Src=Q:\Test16-11
Set Dst=Q:\Test\Dst
PushD "%Src%"||(Echo can't cd to %Src%&Pause&Exit /b 1)
For %%A in (*intsol_wla_*.csv
  ) Do For /F "tokens=1,4 delims=i_" %%B in ("%%A"
  ) Do Echo copy "%%~fA" "%Dst%\intsol_wla_%%B_%%C"
PopD

OutPut, para realmente copiar, remova o eco na frente da cópia.

copy "Q:\Test16-11\161020162432intsol_wla_00000305.csv" "Q:\Test\Dst\intsol_wla_$20161020162432_00000305.csv"
copy "Q:\Test16-11161020162432intsol_wla_00000304.csv" "Q:\Test\Dst\intsol_wla_20161020162432_00000304.csv"
    
por 11.11.2016 / 22:37