Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Скрипт создания notepad с содержимым (http://forum.oszone.net/showthread.php?t=355509)

denis19 20-07-2024 23:59 3029134

Скрипт создания 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();

Sham 21-07-2024 08:51 3029143

FSO.GetTempName() - уникальное имя файла (вместо notepad.txt)

denis19 21-07-2024 09:46 3029145

Цитата:

Цитата Sham
вместо notepad.txt »

У меня ничего не получилось, делает тогда с именем FSO.GetTempName(). Покажите пример?

Sham 21-07-2024 10:35 3029146

folderName + "\\" + FSO.GetTempName().replace('.tmp', '.txt')
Цитата:

Цитата denis19
FSO.GetFolder(folderName).Attributes = 1;
if(FSO.FileExists(folderName + "\\notepad.txt")){
var ft = FSO.GetFile(folderName + "\\notepad.txt");
} »

вот это непонятно зачем (установка атрибута папки и переменная ft)

denis19 21-07-2024 11:31 3029148

Цитата:

Цитата Sham
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();

Sham 21-07-2024 12:29 3029149

Код:

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();


denis19 21-07-2024 12:52 3029150

Работает. Спасибо. А если бы и имя покрасивее, нумеровать одно - notepad1, notepad2, было бы вообще загляденье.

Sham 21-07-2024 14:55 3029153

Побольше кода будет. Надо все файлы в папке проверить и вытащить максимальную цифру.
Код:

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());
}


denis19 21-07-2024 15:19 3029156

Цитата:

Цитата Sham
Побольше кода будет. Надо все файлы в папке проверить и вытащить максимальную цифру. »

Этот супер. Спасибо большое. :yahoo:


Время: 08:40.

Время: 08:40.
© OSzone.net 2001-