Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: (vbs) Tiedoston nimeämistä

Sivun loppuun

hoomax [01.02.2009 11:17:43]

#

Ennekun hakkaan päätäni seinään, niin kertokaa ihmeessä jos joku on tälläisen jo tehnyt.
Tiettyyn kansioon ilmestyy tiedosto satunnaisesti, kun tiedosto ilmestyy pitäisi se nimetä uudelleen. Eli, verrataan kahta tiedostoa ja jos tiedosto on edellisestä eroava (aikaleima tai sisältö) nimetään se uudelleen.

Mikä lie helpoin tapa toteuttaa moinen?

ajv [01.02.2009 15:23:51]

#

FileSystemWatcher

Edit. Eiku kieli oliki VBS...

neau33 [02.02.2009 01:10:00]

#

Heippa hoomax!

jutska menee esim. näin...luo C: -aseman juureen hakemisto: MyFolder, luo hakemistoon tavallinen tekstitiedosto ja nimeä se esim. 001A.dat Copy/Pasteta oheinen scripti muistioon ja tallenna nimellä MyMonitor.vbs
luo sitten samaisesta scripti-tiedostosta pikakuvake ja siirrä se (XP-nuotit) Käynnistä -> Kaikki ohjelmat -> Käynnistys - kansioon...boottaa kone ja testaa kopioimalla jokin tekstitiedosto C:\MyFolder-kansioon, tsekkaa kansioon uudestaan ja avaa muistiolla tiedosto 001A.dat...

MyMonitor.vbs:

Main

Sub Main()
  Do
    WScript.Sleep(5000)
    CheckFolder
  Loop
End Sub

Sub CheckFolder()
  Set fso = CreateObject("Scripting.FileSystemObject")
Set myFolder = fso.GetFolder("C:\myFolder")

If myFolder.Files.Count > 0 Then

   Dim item, data()
   Dim i: i = -1

   For Each item In myFolder.Files
        i = i + 1
        ReDim Preserve data(1, i)
        data(0, i) = item
        Set file = fso.GetFile(item)
        data(1, i) = file.DateLastModified

   Next

   If UBound(data, 2) > 0 Then

       If data(1, 0) <> data(1, 1) Then
         Set file = fso.GetFile(data(0, 0))
         file.Delete
         fso.CopyFile data(0, 1), data(0, 0)
         Set file = fso.GetFile(data(0, 1))
         file.Delete
       End If

   End If

   Erase data

  End If

  Set fso = Nothing

End Sub

hoomax [03.02.2009 21:10:35]

#

Kiitos Nea.

Miten tuota pitäisi muokata, että uuden tiedoston sisältö kopioitaisiin vanhaan tiedostoon jatkoksi? Eli, mitään kansioon ilmestyttä dataa ei katoaisi? Nythän kansiossa olevan tiedoston sisältö on viimeisimmän kansioon ilmestyneen tiedoston sisältö...
Oma scpitaustaitoni on vielä vähän hello world -tasoa...

neau33 [04.02.2009 04:47:29]

#

Heippa taas hoomax!

tarvittava muokkaus on tässä...

'...
   If UBound(data, 2) > 0 Then

      If data(1, 0) <> data(1, 1) Then
         Dim f, r
         Set f = fso.OpenTextFile(data(0, 1), 1, False)
         r = f.ReadAll(): f.Close
         Set file = fso.GetFile(data(0, 1))
         file.Delete
         Set f = fso.OpenTextFile(data(0, 0), 8, False)
         f.Write r: f.Close
         Set f = Nothing
      End If

   End If
'...

hoomax [04.02.2009 19:57:49]

#

Mihis tuohon saatas vielä uusi rivi aina tiedon kirjotuksen jälkeen?
f.Write r: vbCrLf f.Close ?

neau33 [05.02.2009 13:39:09]

#

Heippa taas hoomax!

'...
Dim alku, loppu
alku= "[alkaa:" & Now & "]" & vbCrLf
loppu = vbCrLf & "[loppuu:" & Now & "]" & vbCrLf
f.write alku: f.Write r: f.Write loppu: f.Close
'...

hoomax [19.02.2009 12:45:59]

#

Kiitos Nea, tällä saan juuri sen mitä hain... pienillä outputin muutoksilla ;)

Mites tuota pitäs muuttaa jos haluaisin jokaisesta muutoksesta oman tiedostonsa?

Newb [19.02.2009 14:02:02]

#

hoomax kirjoitti:

Kiitos Nea, tällä saan juuri sen mitä hain... pienillä outputin muutoksilla ;)

Mites tuota pitäs muuttaa jos haluaisin jokaisesta muutoksesta oman tiedostonsa?

Tallennat joka muutoskerralla sen eri nimiseen tiedostoon? O_o

hoomax [25.02.2009 20:13:54]

#

Eikun, että tuo scipti tallentaisi aina kirjottaessaan tiedostoon uuden tiedoston.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta