Como distinguir pastas de arquivos em um script em lote? (Ou como copiar e renomear-timestamp-los indiscriminadamente?)

1

Eu quero criar um arquivo de lote para copiar arquivos ou pastas em um diretório especificado e acrescentar data e hora aos seus nomes.
Aqui está o meu código atual:

@echo off
Set _bpath=T:\Backup\
if [%1]==[] goto :eof
:loop
Set _file=%~n1%
Set _ext=%~x1%
For /f "tokens=1-3 delims=1234567890 " %%a in ("%time%") Do Set "delims=%%a%%b%%c"
For /f "tokens=1-4 delims=%delims%" %%G in ("%time%") Do (
   Set _hh=%%G
   Set _min=%%H
   Set _ss=%%I
   Set _ms=%%J
)
copy %1 "%_bpath%%_file%(%date:/=-% %_hh%h%_min%m%_ss%s)%_ext%"
shift
if not [%1]==[] goto loop

Este funciona apenas para arquivos e eu poderia adaptá-lo facilmente para pastas com xcopy /E %1 "%_bpath%%_file%(%date:/=-% %_hh%h%_min%m%_ss%s) , mas eu gostaria de evitar lidar com dois arquivos em lote.

Então, como copiar / renomeá-los indiscriminadamente (eu tentei com copy, xcopy e robocopy sem sucesso) ou como distingui-los para criar dois branch IF? (Usando% ~ x1% não é confiável ...)

    
por fluxtendu 02.03.2010 / 01:36

1 resposta

1

Isso pode ser útil para você, veja this pergunta

    
por 02.03.2010 / 12:23