Показать полную графическую версию : [решено] Скрипт создания notepad с содержимым
Здравствуйте. Скрип создаёт текстовый документ в папке, не заходя в неё, на папке кнопка в контекстном меню через реестр. Но при повторе второй notepad не создаётся, текст заменяется в одном первом. Как каждый следующий раз создавать новый с новым именем?
var folderName = WSH.Arguments(0);
var FSO = WSH.CreateObject("Scripting.FileSystemObject");
var textData = new ActiveXObject('HTMLFile').parentWindow.clipboardData.getData("text");
FSO.GetFolder(folderName).Attributes = 1;
if(FSO.FileExists(folderName + "\\notepad.txt")){
var ft = FSO.GetFile(folderName + "\\notepad.txt");
}
var fileObjStr = FSO.OpenTextFile(folderName + "\\notepad.txt", 2, true, -1);
fileObjStr.Write(textData);
fileObjStr.Close();
FSO.GetTempName() - уникальное имя файла (вместо notepad.txt)
вместо notepad.txt »
У меня ничего не получилось, делает тогда с именем FSO.GetTempName(). Покажите пример?
folderName + "\\" + FSO.GetTempName().replace('.tmp', '.txt')FSO.GetFolder(folderName).Attributes = 1;
if(FSO.FileExists(folderName + "\\notepad.txt")){
var ft = FSO.GetFile(folderName + "\\notepad.txt");
} »
вот это непонятно зачем (установка атрибута папки и переменная ft)
folderName + "\\" + FSO.GetTempName().replace('.tmp', '.txt') »
Нет, тоже самое выполняет, один и тот же файл. А если по другому, то шибки выдаёт.
var folderName = WSH.Arguments(0);
var FSO = WSH.CreateObject
("Scripting.FileSystemObject");
var textData = new ActiveXObject
('HTMLFile').parentWindow.clipboardData.getData("text");
folderName + "\\" + FSO.GetTempName().replace('.tmp', '.txt')
var fileObjStr = FSO.OpenTextFile(folderName + "\\notepad.txt", 2, true, -1);
fileObjStr.Write(textData);
fileObjStr.Close();
var folderName = WSH.Arguments(0);
var FSO = WSH.CreateObject("Scripting.FileSystemObject");
var textData = WSH.CreateObject('HTMLFile').parentWindow.clipboardData.getData("text");
var fileObjStr = FSO.OpenTextFile(folderName + "\\" + FSO.GetTempName().replace('.tmp', '.txt'), 2, true, -1);
fileObjStr.Write(textData);
fileObjStr.Close();
Работает. Спасибо. А если бы и имя покрасивее, нумеровать одно - notepad1, notepad2, было бы вообще загляденье.
Побольше кода будет. Надо все файлы в папке проверить и вытащить максимальную цифру.
var folderName = WSH.Arguments(0);
var FSO = WSH.CreateObject('Scripting.FileSystemObject');
var textData = WSH.CreateObject('HTMLFile').parentWindow.clipboardData.getData('text');
var fn = 'notepad|d|.txt';
var fileObjStr = FSO.OpenTextFile(get_path(), 2, true, -1);
fileObjStr.Write(textData);
fileObjStr.Close();
function get_path() {
var fold = FSO.GetFolder(folderName), c = 0, c2 = 0, m;
var rex = new RegExp(fn.replace('.', '\\.').replace('|d|', '(\\d*)'), 'i');
iter(fold.Files, function(i) {
if (m = i.Name.match(rex)) {
c = m[1] ? parseInt(m[1]) : 0;
if (c > c2) c2 = c;
}
});
return FSO.BuildPath(fold.Path, fn.replace('|d|', ++c2));
}
function iter(obj, fn) {
for (var enu = new Enumerator(obj);
!enu.atEnd();
enu.moveNext()
) fn(enu.item());
}
Побольше кода будет. Надо все файлы в папке проверить и вытащить максимальную цифру. »
Этот супер. Спасибо большое. :yahoo:
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.