webForumDet fria alternativet

FSO och flytta en fill efter en dag.

ASP

19 svar · 910 visningar · startad av Megaman

Medlem sedan jan. 2004118 inlägg
Frågan#1

Hej alla!!!

Jag skulle vilja ha lite hjälp med en sak????

Det är så att jag vill flytta en fil när det har gått en dag från Upload mappen till typ CheckFile mapp.

Jag har sökt efter något exempel här på forumet men inte hittat ett exempel som jag har fått att fungera, och någon expert på asp är jag inte heller så därför vänder jag mig till er experter här.

Skulle nu kunna vara snälla och hjälpa mig med detta.

Jag använder följande FSO kod för att lista filerna i mappen Upload

<%	
Dim FSO, Folder, File, SPath, Farg
			
SPath = server.mappath("Upload") 'The folder all new files is in
				
Set FSO = Server.CreateObject("Scripting.FileSystemObject")
Set Folder = FSO.Getfolder(SPath)
	For each File in Folder.files
					
	IF Farg = "#F7F7F7" THEN Farg = "#FFFFFF" Else Farg = "#F7F7F7" END IF
%>
<tr bgcolor="<%=(Farg)%>">
<td class="ShowFiles">&nbsp;
<%Response.Write "<a href=""Upload/" & File.name & """>" & Left(File.Name, Len(File.Name) - 4) & "</a>"%></td> 

<td width="80" class="ShowFiles">
<% Response.Write Left(File.DateCreated, Len(File.DateCreated) - 8)%></td>
</tr>
<%
Next
Set Folder = Nothing : Set FSO = Nothing
%>

Filen får dagens datum via ett uploads script när någon laddar upp en fil.

Vore väldigt tacksam för er hjälp.

Medlem sedan aug. 20012 349 inlägg
#2

Men koden körs ju bara om någon surfar in på sidan, och då varje gång. Egentligen vill du ju ha ett jobb som går en gång om dygnet? Kanske enklare att skriva en liten vb exe och låta windows schedulern köra den varje dag?

Medlem sedan jan. 2004118 inlägg
#3

Jag hade tänkt mig något sådant när någon besöker sidan så skall det köras om ingen besöker sidan på typ 2 dagar så gör det inget om det finns där.

Huvudsaken är att det körs när någon besöker sidan.

Sidan ligger på en server så därför kan jag inte köra externa program tyvär.

Medlem sedan aug. 20012 349 inlägg
#4

Du får ju loop igenom alla filerna som du gör i ditt exempel och sedan göra en datediff med creationdate/ time och dagens datum/tid. Är det 24 timmar eller mer så flyttar du filen.

Du har ju i praktiken koden klar i ditt exempel, bara att lägga till lite koll på datediff och move funktion, lite exempel:

If DateDiff("h", File.DateLastModified, Now) >= 24 Then
File.Move sPath & "\CheckFile"
end if

nått sånt, du får pilla rätt med allt själv :e

Medlem sedan jan. 2004118 inlägg
#5

Skall försöka med det där. Men om det finns en fil med samma namn då borde jag få ett felmess eller???

Hur skulle koden se ut för kontrollen har du lust att hjälpa mig med detta också mrblonde så är du shysst.

Medlem sedan jan. 2004118 inlägg
#6

Det där skapade en fil utan filändelse i mappen upload!!!

Vad jag vill är att flytta en fil som är äldre än en dag till mappen checkfile från mappen upload.

Jag vet inte alls hur jag skall få ordning på det så all hjälp tas tacksamt imot...

Medlem sedan aug. 20012 349 inlägg
#7

misade visst att lägga till filnamnsbiten.

If DateDiff("h", File.DateLastModified, Now) >= 24 Then
File.Move sPath & "\CheckFile\" & File.Name
end if
Medlem sedan jan. 2004118 inlägg
#8

Det verkade inte fungera det heller för fel meddelande:

Microsoft VBScript runtime error '800a004c'
Path not found

default.asp, line 180

Och rad 180 är

File.Move sPath & "\CheckFile\" & File.Name

Jag har kollat både 3 och 10 gånger för att se om mapparna stämmer och det gör dom allt är rätt stavat.

Jag hoppas att du kan se vad som är fel.

Medlem sedan aug. 20012 349 inlägg
#9

response.write sPath & "\CheckFile\" & File.Name ger vad för resultat?

Medlem sedan jan. 2004118 inlägg
#10

Det ger följande utskrift:
\CheckFile\Custers_Sink-DJ3.zip

fast filerna ligger i mappen Upload den skriver ut samma antal filnamn som det finns i den mappen men skriver ut sökvägen till den katalogen som filerna skall flyttas till om dom är en dag gammal.

Medlem sedan aug. 20012 349 inlägg
#11

Där har du ju förklaringen! sPath är uppenbarligen tom. Den borde enligt ditt kodexempel innehålla typ "c:\någonmapp\upload", vilket nu när jag tänker efter också hade blivit fel, men vi hade varit närmare lösningen iallafall.

Det du saknar är ju en komplett sökväg till den plats där du vill flytta filerna. Lägg till det först. Dvs, se till att sPath inehåller rätt start på sökvägen eller hårdkoda det eller nått.

File.Move "C:\Någonmap\CheckFile\" & File.Name
Medlem sedan jan. 2004118 inlägg
#12

Men du får ju mappen från sPath så det skall ju fungera, men visst jag skall kolla på det.

Desutom så ligger filerna på Loopia så jag kan ju inte använda c:/ osv.

Jag uppskattar verkligen att du försöker att hjälpa mig mrblonde
men kan du ge mig ett exempel så är du guld värd.

Provade att skriva ut både sPath fick då komplett till mappen och filerna detsamma på MovePath som jag lade till för att testa.

Men ändå fick jag error.

Medlem sedan jan. 2004118 inlägg
#13

Jag skippar detta mrblonde eftersom att jag får ingen riktig ordning på det, och skriver ut länk till filerna istället i mappen baserat på ditt datum exempel ovanför så får jag flytta dom manuellt istället det funkar med att visa filerna bara som är mindra än en dag gammal.

Men jag uppskattar verkligen all din hjälp sånt gör en glad när någon orkar lägga ner tid för att hjälpa någon. Tack igen.

Medlem sedan aug. 20012 349 inlägg
#14

Gaaah! Det är ju lätt, jag vill inte ge mig!!

Du sa att om du gjorde response.write sPath & "\CheckFile\" & File.Name så fick du \CheckFile\Custers_Sink-DJ3.zip. Det innebär att sPath var tom annars borde det stått tex: d:\någonmapp\checkfile\Custers_Sink-DJ3.zip.

Testa det här då

File.Move Server.MapPath("/checkfile/") & File.Name
Medlem sedan jan. 2004118 inlägg
#15

Gôt det funkar bra TACK.

Nu återstår bara att kolla så att filen inte finns annars så kommer jag troligt visst få ett fel medelande antar jag.

Hur skulle det se ut???

Medlem sedan aug. 20012 349 inlägg
#16
If FSO.FileExists(Server.MapPath("/checkfile/") & File.Name) Then
'Fil finns, hitta på ett annat namn
Else
'Fil finns inte, Move...
End if
Medlem sedan jan. 2004118 inlägg
#17

Typ så här då menar du???

Dim FSO, Folder, File, UploadPath, MovePath, Farg

UploadPath = Server.MapPath("Upload/") 'The folder all new files is downloaded into
MovePath = Server.MapPath("CheckFile/") 'The folder all file older then one day moves to

Set FSO = Server.CreateObject("Scripting.FileSystemObject")
Set Folder = FSO.Getfolder(UploadPath)

For each File in Folder.Files

IF DateDiff("h", File.DateLastModified, Now) >= 24 Then
	IF File.FileExists(MovePath & "\" & File.Name) Then
		File.Delete(MovePath & "\" & File.Name)
		File.Move(MovePath & "\" & File.Name)
	END IF
END IF
Medlem sedan aug. 20012 349 inlägg
Medlem sedan jan. 2004118 inlägg
#19

Okej Okej jag tar på mig min dåliga fråga men jag får det inte att funka får bara en massa olika fel hela tiden.

Vad det var för fel kommer jag inte ihåg just nu

skulle du inte kunna ta hem koden i inlägget längst upp och göra så det funkar för jag får då ingen ordning på det på egen hand

Vill ändå tacka dig för hjälpen mrblonde.

Medlem sedan aug. 20012 349 inlägg
#20

Nej.

Jag måste nog säga att jag tycker att det inte är rocket science att lösa detta.

Vill du att jag skall använda min tid till att hjälpa dig måste du anstränga dig själv. Annars känns det för min del som att du inte orkar försöka förstå och bara vill att någon annan skall göra jobbet.

Jag är personligen inte intresserad av att göra jobb åt någon, bara av att ge en knuff i rätt riktning för att du själv skall lära dig mer. Är du inte intresserad av att lära dig så kan du betala någon för att göra jobbet åt dig.

Använd internet till att läsa in dig på de olika objekten och vad de har för metoder och hur du kan använda dem. en tutorial kanske?

Att inte kunna uppvisa felmeddelanden är ett säkert sätt att inte få hjälp. Att du får en massa fel och sedan inte kommer ihåg dem...? Hur skall någon kunna hjälpa till om du inte ens kan tala om vad som inte fungerar.

272 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
144 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)