
Eu tenho vários arquivos PDF no formato específico em uma pasta específica e, para esses arquivos específicos, preciso cortar o número do meio usando o arquivo bat e mover para a pasta de destino com o novo nome.
Detalhe
Pasta de origem:
C:/roger/brawn
Destino:
D:/var/lag
Formato de arquivo:
eAWI_12345678_89101112_01Mar2018.pdf
Resultado desejado
Eu preciso cortar o89101112
do nome do arquivo de origem original e obter um resultado deeAWI_12345678_01Mar2018.pdf
Este formato de número de nome de arquivo é gerado dinamicamente usando variáveis em um aplicativo.
Responder1
Você pode usar umPARA /Floop e defina o caractere de sublinhado nos nomes dos arquivos como um delimitador. Você pode usar tokens 1,2,3,*
para concatenar variáveis posteriormente para construir e analisar o nome do arquivo de origem e destino de acordo para uso posterior com oXCOPIARcomando para obter o resultado desejado.
Script em lote
@ECHO ON
SET Source=c:/roger/brawn
SET Destination=D:/var/lag
FOR /F "TOKENS=1,2,3,* DELIMS=_" %%F IN ('DIR /B /A-D "%source%\*.pdf"') DO ECHO F | XCOPY /Y /F "%source%\%%F_%%G_%%H_%%I" "%Destination%\%%F_%%G_%%I" && IF EXIST "%Destination%\%%F_%%G_%%I" DEL /Q /F "%source%\%%F_%%G_%%H_%%I"
EXIT
Observação:OECOcomando canaliza um F
para oXCOPIARcomando para que ele selecione implicitamente F
"arquivo", uma vez que especifica explicitamente o novo nome do arquivo de destino, analisando o terceiro token no loop para ajudar a obter o nome do arquivo desejado. OXCOPIARcomando é seguido peloexecução condicional (&&)confirmando que foi bem-sucedido e, em seguida, confirma a existência do novo arquivo de destino antes de excluir o arquivo de origem original.