Я заканчиваю создание утилиты для загрузки файлов для нашего сайта, и если загрузка имеет недопустимый формат (согласно нашим спецификациям, не стоит здесь останавливаться), я бы хотел удалить папку, в которую был распакован zip-файл, и все его содержимое.
До сих пор я использовал метод создания динамического пакетного файла следующим образом:
<!--- check if folder exists before starting to delete --->
<cfif directoryexists("#file_path_course#")>
<!--- this can be passed in a varaible or whatever --->
<cfset tDirectory = "#file_path_course#">
<!--- This is what we will put in the bat file --->
<cfset tString ="RMDIR /S /Q " & tDirectory>
<!--- generate a .BAT file for later execution --->
<cffile action="WRITE" file="#file_path_course#\delete.bat" output="#tString#">
<!--- Now execute the file to delete everything (Folder and all sub-folders and files)--->
<cfexecute name="#file_path_course#\delete.bat" timeout="60"></cfexecute>
<!--- check if bat file exists --->
<cfif fileexists("#file_path_course#\delete.bat")>
<!--- now delete the bat file --->
<cffile action="DELETE" file="#file_path_course#\delete.bat">
</cfif>
<!--- delete course folder --->
<cfdirectory action="delete" directory="#file_path_course#" recurse="yes">
<cfset course_files_deleted = "Yes">
</cfif>
Но я, по общему признанию, обеспокоен разрешенным использованием тега cfexecute.
Есть еще один вариант, который использует параметр рекурсивного удаления cfdirectory, который сделает все, что я прошу, но я хочу быть уверенным, что он не удалит папки/файлы за пределами папки, на которую я указываю.
Есть третий способ, который включает cfdirectory и цикл вокруг него, но мне также нравится идея использования меньшего количества строк кода для выполнения простой операции.
Какому варианту вы доверяете больше всего?
Я использую IIS7, Coldfusion 8.