На этом шаге мы рассмотрим создание папок.
Для создания папки можно использовать следующий код:
var fso = new ActiveXObject("Scripting.FileSystemObject"); fso.CreateFolder(folderpath);
fso.CreateFolder(folderpath) создает указанную папку и возвращает ссылку на нее, если операция прошла успешно, в противном случае выводится диалоговое окно с сообщением об ошибке.
folderpath - строка, содержащая полный путь к создаваемой папке, например "С:\\Мои документы\\моя папка". При указании пути требуется использовать двойные слэши. Для выполнения с помощью WSH вместо первого выражения можно использовать и такое:
var fso = WScript.CreateObject("Scripting.FileSystemObject");
Если требуется создать папку, то необходимо, чтобы существовали все папки более высокого уровня, лежащие на пути к создаваемой папке и указанные в параметре folderpath. Кроме того, диск, на котором создается папка, должен быть записываемым и готовым к работе. Например, это не может быть устройство для чтения компакт-дисков, а если это гибкий диск, то он должен быть вставлен в дисковод. Если папка, указанная в folderpath, уже существует, то ее нельзя создавать. Таким образом, чтобы создать папку, предварительно следует выполнить ряд проверок. В противном случае, при невыполнении оговоренных выше условий, появится диалоговое окно с сообщением об ошибке.
Ниже приведен код функции createFolder(folderpath), которая выполняет все необходимые проверки. Более того, если какие-нибудь папки на пути к конечной папке не существуют, то функция создаст их.
Код функции createFolder(folderpath):
// Создание папки. Возвращает -1, если папка создана или // существует, 0 - в противном случае function createFolder(folderpath) { var fso = new ActiveXObject("Scripting.FileSystemObject"); var disk = fso.GetDriveName(folderpath); // Имя (буква) диска // Проверка характеристик диска: if (!fso.DriveExists(disk)) return 0 // ...если диск не существует if (!fso.GetDrive(disk).IsReady) return 0 // ...если диск не готов // ...если не подходит тип диска if (fso.GetDrive(disk).DriveType == 0 || fso.GetDrive(disk).DriveType == 4) return 0; if (fso.GetDrive(disk).FreeSpace < 1024) return 0; // ...если мало места if (fso.FolderExists(folderpath)) return -1; // Если папка уже существует, // то не создаем ее var apath = folderpath.split("\\"); // Преобразуем в массив имен папок for (i = 1; i<apath.length; i++) { disk+= "\\" + apath[i]; if (!fso.FolderExists(disk)) // Если папка не существует, fso.CreateFolder(disk); // то создаем ее } //Bозвращаем результат проверки существования созданной папки return fso.FolderExists(folderpath); }
Результат работы этой функции приведен на рисунках 1 и 2.
Рис.1. Папка с заданным именем отсутствует
Рис.2. Папка с указанным именем существует
Приведем полный текст HTML-документа.
<HTML> <HEAD> <TITLE>Создание папки</TITLE> <SCRIPT LANGUAGE="JavaScript"> <!-- // Создание папки. Возвращает -1, если папка создана или // существует, 0 - в противном случае function createFolder(folderpath) { var fso = new ActiveXObject("Scripting.FileSystemObject"); var disk = fso.GetDriveName(folderpath); // Имя (буква) диска // Проверка характеристик диска: if (!fso.DriveExists(disk)) return 0 // ...если диск не существует if (!fso.GetDrive(disk).IsReady) return 0 // ...если диск не готов // ...если не подходит тип диска if (fso.GetDrive(disk).DriveType == 0 || fso.GetDrive(disk).DriveType == 4) return 0; if (fso.GetDrive(disk).FreeSpace < 1024) return 0; // ...если мало места if (fso.FolderExists(folderpath)) return -1; // Если папка уже существует, // то не создаем ее var apath = folderpath.split("\\"); // Преобразуем в массив имен папок for (i = 1; i<apath.length; i++) { disk+= "\\" + apath[i]; if (!fso.FolderExists(disk)) // Если папка не существует, fso.CreateFolder(disk); // то создаем ее } //Bозвращаем результат проверки существования созданной папки return fso.FolderExists(folderpath); } function f1(x) { if (createFolder(x)== -1) alert ("Папка с таким именем уже существует"); else alert ("Папка создана"); } //--> </SCRIPT> </HEAD> <BODY> <H2>Создание папки</H2> <FORM NAME="frm1"> <INPUT TYPE="TEXT" SIZE="30" VALUE="C:\\Мои документы\\Test" NAME="pole"><BR> <INPUT TYPE="BUTTON" ONCLICK="f1(frm1.pole.value)" VALUE="Создать папку"> </FORM> </BODY> </HTML>
Здесь дополнительно проверяется наличие свободного пространства на диске. В этом примере устанавливаем, чтобы диск имел минимум 1 Кбайт свободного места, чтобы разрешить создание папки. Вы можете задать и другую пороговую величину или отменить эту проверку совсем.
На следующем шаге мы рассмотрим другие операции над папками.