Toon posts:

Batch bestand xcopy: dubbele bestandsnamen voorkomen

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hey allemaal,

Ik probeer een batch bestand te maken voor het kopiëren van bestanden. Het doel wat ik ermee had was het zorgen dat alle files uit de map inclusief subfolders werden gekopieerd en in 1 map samen werden gevoegd. Daarnaast waren er een aantal bestandstypen die ik d.m.v. een exclude juist niet wilde kopiëren.

Hieronder de huidige code

--------------------------------------------------------------------------------------------------------------------------------------

@echo off
title WAIT !

Set "sourceDir=Drive:\path
Set "destinationFolder=Drive:\path
Set "_report=Drive:\path

IF NOT EXIST "%sourceDir%" (echo.Could not find %sourceDir% &GoTo:done)

:: overwrite previous log
>"%_report%" (
echo.%date% - %time%
echo.---------------------------------------------------
echo.
)

:: copy files
For /F "Delims=" %%! in ('Dir "%sourceDir%\" /b /s /a-d 2^>nul') do (
@echo.%%! &(
@xcopy "%%!" "%destinationFolder%\" /y /i /h /f /exclude:Drive:\path\excludedfileslist.txt >>"%_report%",2>&1)
)

:done
title,Done.......

echo.&pause>nul

--------------------------------------------------------------------------------------------------------------------------------------

Het probleem ontstaat wanneer subfolders bestanden hebben met dezelfde bestandsnaam. Op het moment dat deze bestanden samen komen in 1 map worden ze overschreven, echter wil ik beide bestanden behouden. Ik zoek naar de mogelijkheid om de bestanden te behouden maar dat de oude of nieuwe versie hernoemd word zodat de namen niet overeen komen.
Normaal gesproken zou ik dit handmatig doen maar omdat het gaat om zoveel data zou ik het graag d.m.v. een script kunnen doen.

Ik heb op verschillende forums gezocht naar een oplossing maar heb helaas niet de kennis om het script op de juiste manier te laten werken.
Daarom hoop ik dat iemand mij misschien zou kunnen helpen!

Alvast bedankt :)

Acties:
  • +1 Henk 'm!

  • downtime
  • Registratie: Januari 2000
  • Niet online

downtime

Everybody lies

Mag het ook in Powershell? Batch is achterhaald, onleesbaar en ranzig. Logging mag je zelf toevoegen.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$Source       = 'C:\Source'
$Destination  = 'D:\Destination'
$ExcludeThese = @('*.avi','*.mpg','*.mkv')

$FilesToCopy  = Get-ChildItem -Path $Source -File -Recurse -Exclude $ExcludeThese

ForEach ($Item in $FilesToCopy) {

    $FileToCopy = $Item.FullName
    $Counter = 0
    
    Do {
        $CounterString = If ($Counter -gt 0) { ('({0})' -f $Counter.ToString()) } Else { '' }
        $Target = Join-Path -Path $Destination -ChildPath ('{0}{1}{2}' -f $Item.BaseName, $CounterString, $Item.Extension)
        $Counter++
    } While (Test-Path -Path $Target)
    
    Copy-Item -Path $FileToCopy -Destination $Target
}

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Super dankjewel! Het werk perfect!