Я заканчиваю создание утилиты выгрузки файлов для нашего сайта, и если выгрузка имеет недопустимый формат (в соответствии с нашими спецификациями, не стоит здесь переходить), я хочу удалить папку, в которую был разархивирован 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, которая выполнит все, что я прошу, но я хочу быть уверен, что не удалит папки / файлы за пределами той папки, на которую я указал.
Существует 3-й способ, который включает в себя cfdirectory и циклический цикл вокруг него, но мне также нравится идея использовать меньше строк кода для выполнения простой операции.
Какой вариант вы доверяетебольше всего?
Я использую IIS7, Coldfusion 8.