[ColdFusion] cfdirectory deletion

Pagina: 1
Acties:

  • RampeStamp
  • Registratie: Maart 2001
  • Laatst online: 22-07 08:17
Ik heb er een probleempje en dat is als volgt:

Ik wil via een ColdFusion pagina een directory structuur beheren. Nou kan ik mappen aanmaken en verwijderen. Alleen is het zo, dat als ik een map aanmaak, daarin weer mappen aanmaak. Deze vervolgens niet kan verwijderen.

Wat ik doe: vraag eerst een lijst op met bestanden/mappen de de betreffende map. Deze verwijder ik allemaal (dir werkt dus). Vervolgens wil ik de map zelf verwijderen, maar dan geeft hij een sharing violation.

Is iemand dit eerder tegen gekomen ? Ik gebruik ColdFusion MX 6.1

Have fun in live and you will survive!


  • jochemd
  • Registratie: November 2000
  • Laatst online: 08-08 15:51
code?

  • RampeStamp
  • Registratie: Maart 2001
  • Laatst online: 22-07 08:17
De volgende code heb ik geprobeerd. De try/catch routine is even voor de zekerheid. Zodra er een error komt, laat hij de boel gewoon staan. Anders zou hij de map weg moeten halen.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<cffunction name="deleteMap" access="private" returntype="any">
  <cfargument name="map" required="true" type="string">

  <cftry>
    <cfdirectory action="list" name="mapinhoud"
                 directory="#ExpandPath("#arguments.map#")#">
    <cfcatch></cfcatch>
  </cftry>
  <cfloop query="mapinhoud">
    <cfif type EQ "File">
      <cffile action="delete" 
              file="#ExpandPath("#arguments.map#/#name#")#">
    </cfif>
  </cfloop>

  <cfdirectory action="delete"
               directory="#ExpandPath("#arguments.map#")#">
  <cfreturn>
</cffunction>

Have fun in live and you will survive!


Verwijderd

Maak een bestand aan met de naam directoryremove.cfm (of iets wat je zelf wil, maar pas dan de source aan).

En de source van dit bestand

[coldfusion]
<cfdirectory action="list" name="filelist" directory="#attributes.directory#">

<cfloop query="filelist">
<cfif name IS NOT "." AND name IS NOT "..">
<cfif type EQ "file">
<cffile action="delete" file="#attributes.directory#/#name#">
<cfelseif type EQ "dir">
<cf_directoryremove directory="#attributes.directory#/#name#">
</cfif>
</cfif>
</cfloop>

<cfdirectory action="delete" directory="#attributes.directory#">
[/coldfusion]


edit:

Soz niet goed gelezen... wat kun je nog meer terugvinden in de CF logs?

[ Voor 26% gewijzigd door Verwijderd op 27-08-2003 11:21 ]


  • RampeStamp
  • Registratie: Maart 2001
  • Laatst online: 22-07 08:17
Ook als ik deze code invoer, blijft hij zeuren. Zodra ik ook met Windows Verkenner de map wil weghalen, zegt hij 'Sharing violation'. Dit terwijl ik (zover ik weet) niks open heb staan in die map.

Have fun in live and you will survive!


  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 21-08 18:29
Als het je in de verkenner al niet lukt zal het je zeker niet met cf lukken. Probeer dus uit te vinden wie er nog bestanden in gebruik heeft, of trek gewoon even je netwerkkabel er uit. Je kunt ook in de mmc controleren wie er een sessie heeft met jouw systeem. Daar is zo'n module voor.
Pagina: 1