Avatar billede Slettet bruger
30. august 2004 - 13:47 Der er 19 kommentarer og
1 løsning

Sletning af filer

Jeg har en mappe på min computer som indeholder 6886 billeder. Mit problem er at jeg kun skal bruge nogle af billederne og andre skal bare slettes. Jeg har en database som indeholder alle filnavnene på de billeder som stadig skal bruges.

Findes der et program som kan laver en sletning af filer ud fra en filliste? dvs. hvis filen findes i fillisten skal den ikke slettes. Kan det evt. løses via SQL-kode?
Avatar billede vallemanden Nybegynder
30. august 2004 - 14:04 #1
hvilken datadase bruger du?
Avatar billede vallemanden Nybegynder
30. august 2004 - 14:05 #2
øhh database :)
Avatar billede Slettet bruger
30. august 2004 - 14:26 #3
MS-SQL
Avatar billede gitrian Nybegynder
30. august 2004 - 14:46 #4
Hvad med at bruge WSH:

Gem nedenstående kode som filnavn.vbs, og træk en filliste indeholdende billederne ud til en fil ved navn billeder.txt.

Kør derefter vbs-filen i samme bibliotek som billederne ligger i.

Fjen evt. echo-kommandoerne, da du ellers skal klikke "OK" hvergang en fil er slettet.


Dim filesys, testfile, contents
Set filesys = CreateObject("Scripting.FileSystemObject")
Set testfile = filesys.OpenTextFile("billeder.txt",1,-2)

do while testfile.AtEndOfStream <> true
  contents = testfile.ReadLine
  If filesys.FileExists(contents) Then
      filesys.DeleteFile contents
      WScript.Echo "File " & contents & " deleted"
  ELSE
      WScript.Echo "File " & contents & " don't exist"
  End If
loop
Avatar billede Slettet bruger
30. august 2004 - 14:47 #5
Hvilken seperator skal bruges i billeder.txt?
Avatar billede Slettet bruger
30. august 2004 - 15:07 #6
Tak det virker nu. Kan det evt laves sådan at der gemmes en rapport over hvad der er slettet.
Avatar billede gitrian Nybegynder
31. august 2004 - 08:01 #7
Selvølgelig:

Nedenstående kode skrive en oversigt over slettede filer til slettet.txt og til fejl.txt hvis den ikke kan finde filen.


Dim filesys, testfile, testfile2, testfile3, contents
Set filesys = CreateObject("Scripting.FileSystemObject")
Set testfile = filesys.OpenTextFile("billeder.txt",1,-2)
Set testfile2 = filesys.OpenTextFile("slettet.txt",8,-2)
Set testfile3 = filesys.OpenTextFile("fejl.txt",8,-2)

testfile2.WriteLine("START: " & now)
testfile3.WriteLine("START: " & now)
do while testfile.AtEndOfStream <> true
  contents = testfile.ReadLine
  If filesys.FileExists(contents) Then
      filesys.DeleteFile contents
      testfile2.WriteLine(contents)
  ELSE
      testfile3.WriteLine(contents)
  End If
loop
testfile2.WriteLine("SLUT: " & now)
testfile3.WriteLine("SLUT: " & now)
Avatar billede Slettet bruger
31. august 2004 - 08:16 #8
Så kan jeg se at jeg ikke har testet rigtigt. For scriptet sletter filen hvis den findes i billeder.txt - det skal være omvendt - Den skal slette de filer som ikke findes i billeder.txt
Avatar billede gitrian Nybegynder
31. august 2004 - 12:18 #9
Så skal der byttes om på IF og ELSE statements.

Dim filesys, testfile, testfile2, testfile3, contents
Set filesys = CreateObject("Scripting.FileSystemObject")
Set testfile = filesys.OpenTextFile("billeder.txt",1,-2)
Set testfile2 = filesys.OpenTextFile("ikkeslettet.txt",8,-2)
Set testfile3 = filesys.OpenTextFile("slettet.txt",8,-2)

testfile2.WriteLine("START: " & now)
testfile3.WriteLine("START: " & now)
do while testfile.AtEndOfStream <> true
  contents = testfile.ReadLine
  If filesys.FileExists(contents) Then
      testfile2.WriteLine(contents)
  ELSE
      filesys.DeleteFile contents
      testfile3.WriteLine(contents)
  End If
loop
testfile2.WriteLine("SLUT: " & now)
testfile3.WriteLine("SLUT: " & now)
Avatar billede Slettet bruger
31. august 2004 - 13:27 #10
Det har jeg prøvet men den kommmer med fejl i Linie:14 Tegn:7 Fejl: Filen blev ikke fundet Kode:800A0035
Avatar billede Slettet bruger
31. august 2004 - 13:31 #11
Hvis nu det kommer til at virke som planlagt, kunne der vel godt blive et par hundrede point mere som tak for din hjælp
Avatar billede gitrian Nybegynder
31. august 2004 - 14:16 #12
Mystisk - det virker hos mig. Prøv at kopiere hele den nyeste kode.

Mht. flere point, vil jeg pænt afslå.
Avatar billede Slettet bruger
02. september 2004 - 10:32 #13
Jeg får stadig fejl
http://www.lipsum.dk/fejl.jpg

Koden er som følger:
Dim filesys, testfile, testfile2, testfile3, contents
Set filesys = CreateObject("Scripting.FileSystemObject")
Set testfile = filesys.OpenTextFile("billeder.txt",1,-2)
Set testfile2 = filesys.OpenTextFile("ikkeslettet.txt",8,-2)
Set testfile3 = filesys.OpenTextFile("slettet.txt",8,-2)

testfile2.WriteLine("START: " & now)
testfile3.WriteLine("START: " & now)
do while testfile.AtEndOfStream <> true
  contents = testfile.ReadLine
  If filesys.FileExists(contents) Then
      testfile2.WriteLine(contents)
  ELSE
      filesys.DeleteFile contents
      testfile3.WriteLine(contents)
  End If
loop
testfile2.WriteLine("SLUT: " & now)
testfile3.WriteLine("SLUT: " & now)

Og billeder.txt er som følger:

1001.TIF
1027.TIF
1028.TIF
1029.TIF
1029.TIF
1034.TIF
1034.TIF
1036.TIF
1036.TIF
1036.TIF
etc.
etc.
Avatar billede gitrian Nybegynder
02. september 2004 - 14:15 #14
Så skulle den være der. Jeg havde vist misforstået dit problem

Den sletter filer der IKKE findes i billeder.txt og skriver hvilke filer den har slettet til slettet.txt og dem som ikke er blevet slettet til ikkeslettet.txt

Derudover har jeg sat den til ikke at slette txt + vbs filer i folderen.


Dim filesys, pathstring, folder, filecoll, fil, testfile, testfile2, testfile3, contents
Set filesys = CreateObject("Scripting.FileSystemObject")
pathstring = filesys.GetAbsolutePathName("c:")
set folder = filesys.GetFolder(pathstring)
set filecoll = folder.Files
Set testfile2 = filesys.OpenTextFile("ikkeslettet.txt",8,-2)
Set testfile3 = filesys.OpenTextFile("slettet.txt",8,-2)

testfile2.WriteLine("START: " & now)
testfile3.WriteLine("START: " & now)

For Each fil in filecoll
  Set testfile = filesys.OpenTextFile("billeder.txt",1,-2)
  do while testfile.AtEndOfStream <> true
      contents = testfile.ReadLine
      If fil.name = contents THEN
        testfile2.WriteLine(fil.name)
        exit do
      ELSEIF Right(fil.name, 3) = "txt" Or Right(fil.name, 3) = "vbs" THEN
        exit do
      ELSE
        testfile3.WriteLine(fil.name)
        filesys.DeleteFile(fil.name)
        exit do
      End If
  loop
Next

testfile2.WriteLine("SLUT: " & now)
testfile3.WriteLine("SLUT: " & now)
Avatar billede Slettet bruger
02. september 2004 - 15:27 #15
Ja nu virker den da - den sletter alle filer - rup og stup. Men det har vel noget med biller.txt at gøre og den måde "filerne" er listet på? Hvilken seperator skal jeg bruge? Linebreak, semmikolon og er vbs'en case-sensitiv?
Avatar billede gitrian Nybegynder
03. september 2004 - 12:05 #16
Seperator er Linebreak
Avatar billede gitrian Nybegynder
03. september 2004 - 12:06 #17
Derudover er der forskel på store & små bogstaver i filnavnene i billeder.txt
Avatar billede Slettet bruger
06. september 2004 - 12:46 #18
Jeg kan ikke få det til at virke - Alle filer bliver slettet. Iflg. command er file-ext .TIF

Du kan se en kopi af filnavn.vbs + billeder.txt her:

http://lipsum.dk/files/billeder.txt
http://lipsum.dk/files/filnavn.vbs

Hvis ikke du har mere energi til dette er det ok med mig.
Avatar billede gitrian Nybegynder
06. september 2004 - 14:01 #19
Det ser ud til at det er billeder.txt det er galt med.

Prøv at skrive hvert billede på en ny linie.
Avatar billede Slettet bruger
07. september 2004 - 08:01 #20
Jeg kan godt se at ved højre klik og gem som,  kommer billeder.txt til at se mærklig ud. Men hvis du åbner linket i et nyt vindue ser den ud som den skal.

Når jeg bruger Excel til at udtrække filnavnene fra databasen, vises filnavne i celle A1, A2, A3 etc. Derefter gemmer jeg regnearket som txt-fil. Derved skulle det efter min mening være breakline der bruges som seperator. Måske tager jeg fejl.

Kender du andre metoder til at sikre sig at det er breakline som bruges?
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester