23. december 2004 - 12:37Der er
11 kommentarer og 1 løsning
Filflytteprogram hvordan?
Hey
Jeg ville gerne lave et program der har følgende krav: 1. skal kunne kopiere alt hvad der er i en mappe (eks: c:\fra\) til en anden (eks: c:\til\) hvert minut (eller lign. behøver ikke være præcist) 2. Der skal være en start og en stop knap, samt et text-felt hvor der er angivet om programmet er aktivt.
Det er den grundliggende funktionalitet. (På sigt ville jeg gerne udbygge med at der føres en log over hvilke filer der kopieret med tidspunkt) - (så er det sidste point hjemme ;o).
Håber jeg kan få et par pointers til udviklingen fra ekspertens mange hjælpsomme VB-stars (fedte, fedte :o)
Imports System Imports System.IO Imports System.Drawing Imports System.Windows.Forms
Public Class MainForm Inherits Form Private status As Label Private start As Button Private abort As Button Private t As Timer
Public Sub New() status = New Label start = New Button abort = New Button SuspendLayout status.Location = New Point(50, 50) status.Size = New Size(200, 50) status.Name = "Status TextBox" status.Font = New Font(FontFamily.GenericSerif, 24.0) status.Text = "Stopped" status.ForeColor = Color.Red start.Location = New Point (50, 150) start.Size = New Size (200, 50) start.Name = "Start Button" start.Text = "Start" AddHandler start.Click, AddressOf StartClick abort.Location = New Point (50, 250) abort.Size = New Size (200, 50) abort.Name = "Abort Button" abort.Text = "Abort" AddHandler abort.Click, AddressOf AbortClick ClientSize = New Size (300, 350) Controls.Add(status) Controls.Add(start) Controls.Add(abort) Name = "Main Form" Text = "Main Form" ResumeLayout(False) t = New Timer t.Interval = 60 * 1000 AddHandler t.Tick, AddressOf DoIt End Sub
Private Sub XCopy(dir1 As String, dir2 As String) Dim files As String() = Directory.GetFiles(dir1) For Each f As String In files File.Copy(f, dir2 & f.Substring(dir1.Length), True) Next Dim dirs As String() = Directory.GetDirectories(dir1) For Each d As String In dirs XCopy(d, dir2 & d.Substring(dir1.Length)) Next End Sub
Private Sub DoIt(ByVal sender As Object, ByVal e As EventArgs) XCopy("C:\fra", "C:\til") End Sub
Private Sub StartClick(ByVal sender As Object, ByVal e As EventArgs) t.Start status.Text = "Started" status.ForeColor = Color.Green End Sub
Private Sub AbortClick(ByVal sender As Object, ByVal e As EventArgs) t.Stop status.Text = "Stopped" status.ForeColor = Color.Red End Sub
<STAThread()> _ Public Shared Sub Main(ByVal args As String()) Application.Run(New MainForm ) Application.Exit Environment.Exit(0) End Sub End Class
Har klippet XCopy delen ind i det jeg havde i forvejen og det virker super, men jeg ville gerne flytte og ikke kopiere...
Hvad gør i øvrigt anden del af af xcopy: Dim dirs As String() = Directory.GetDirectories(dir1) For Each d As String In dirs XCopy(d, dir2 & d.Substring(dir1.Length)) Next Så vidt jeg kan tyde er det meningen at mapper og undermapper i dir1 også flyttes!?
Hvis jeg tester med at oprette en mappe og en fil heri i c:\fra sker der ikke noget - de bliver ikke flyttet... (Håndteringen af undermapper er ikke så vigtig som at flytte i stedet for at kopiere :)
kopieringen af filer fra c:\fra til c:\til fungerer fint men hvis der er en undermappe i c:\fra kopieres intet herfra. Skal samme mappe være at finde i C:\til fra starten - altså være oprettet manuelt?
Endnu et spg. Hvordan File.Move når filer er åbne eller eksisterer på destinationen?
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.