Если файла нет ошибка vbscript

I want to check to see if a file exists and if it does, I want to open it and read the 1st line,

If the file doesn’t exist or if the file has no contents then I want to fail silently without letting anyone know that an error occurred.

John Saunders's user avatar

John Saunders

160k26 gold badges247 silver badges397 bronze badges

asked Aug 23, 2011 at 13:26

Cocoa Dev's user avatar

Cocoa DevCocoa Dev

9,33131 gold badges109 silver badges176 bronze badges

2

Start with this:

Set fso = CreateObject("Scripting.FileSystemObject")
If (fso.FileExists(path)) Then
   msg = path & " exists."
Else
   msg = path & " doesn't exist."
End If

Taken from the documentation.

answered Aug 23, 2011 at 13:47

Helge Klein's user avatar

For anyone who is looking a way to watch a specific file to exist in VBS:

Function bIsFileDownloaded(strPath, timeout)
  Dim FSO, fileIsDownloaded
  set FSO = CreateObject("Scripting.FileSystemObject")
  fileIsDownloaded = false
  limit = DateAdd("s", timeout, Now)
  Do While Now < limit
    If FSO.FileExists(strPath) Then : fileIsDownloaded = True : Exit Do : End If
    WScript.Sleep 1000      
  Loop
  Set FSO = Nothing
  bIsFileDownloaded = fileIsDownloaded
End Function

Usage:

FileName = "C:test.txt"
fileIsDownloaded = bIsFileDownloaded(FileName, 5) ' keep watching for 5 seconds

If fileIsDownloaded Then
  WScript.Echo Now & " File is Downloaded: " & FileName
Else
  WScript.Echo Now & " Timeout, file not found: " & FileName 
End If

answered Feb 14, 2018 at 14:02

Đức Thanh Nguyễn's user avatar

Đức Thanh NguyễnĐức Thanh Nguyễn

9,0473 gold badges21 silver badges27 bronze badges

an existing folder will FAIL with FileExists

Function FileExists(strFileName)
' Check if a file exists - returns True or False

use instead or in addition:

Function FolderExists(strFolderPath)
' Check if a path exists

Martin Turjak's user avatar

answered Jun 5, 2013 at 20:29

allanw's user avatar

1

How do I verify via VBScript if the file conf exist under Program Files (i.e. C:Program Filesconf)?

For example if it exists, then msgBox "File exists"
If not, then msgbox "File doesn't exist"

user66001's user avatar

user66001

7721 gold badge13 silver badges36 bronze badges

asked Jun 13, 2010 at 7:51

yael's user avatar

There is no built-in functionality in VBS for that, however, you can use the FileSystemObject FileExists function for that :

Option Explicit
DIM fso    
Set fso = CreateObject("Scripting.FileSystemObject")

If (fso.FileExists("C:Program Filesconf")) Then
  WScript.Echo("File exists!")
  WScript.Quit()
Else
  WScript.Echo("File does not exist!")
End If

WScript.Quit()

Our Man in Bananas's user avatar

answered Jun 13, 2010 at 7:55

Sarfraz's user avatar

SarfrazSarfraz

376k77 gold badges531 silver badges578 bronze badges

1

NIKOLAYY

841 / 736 / 342

Регистрация: 22.09.2012

Сообщений: 5,034

1

VBS

Проверка существования файла

30.05.2013, 18:13. Показов 13396. Ответов 6

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

Нашел некий скрипт vbs удаляет файл-

Visual Basic
1
2
3
Set obj = CreateObject("Scripting.FileSystemObject") 
wscript.sleep 3000 'пауза
obj.DeleteFile("1.txt") 'удалить

Вопрос такой если нету этого файла ну ненайдет он то будет ошибка, можно ли как этот скрипт переписать чтоб без ошибок работал?
Ну типа проверки добавить есть такой файл 1.txt или нету а потом уже удалять?



0



Programming

Эксперт

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

30.05.2013, 18:13

6

Dragokas

Эксперт WindowsАвтор FAQ

18042 / 7645 / 891

Регистрация: 25.12.2011

Сообщений: 11,426

Записей в блоге: 17

30.05.2013, 20:06

2

Visual Basic
1
if obj.FileExists("1.txt") then obj.DeleteFile("1.txt")



3



NIKOLAYY

841 / 736 / 342

Регистрация: 22.09.2012

Сообщений: 5,034

31.05.2013, 20:49

 [ТС]

3

Цитата
Сообщение от Dragokas
Посмотреть сообщение

Visual Basic
1
if obj.FileExists("1.txt") then obj.DeleteFile("1.txt")

Всплывающее окно требуется обьект obj. пишет…



0



Эксперт WindowsАвтор FAQ

18042 / 7645 / 891

Регистрация: 25.12.2011

Сообщений: 11,426

Записей в блоге: 17

31.05.2013, 20:57

4

NIKOLAYY,
он у вас в первом посте.



1



webdiez

1 / 1 / 0

Регистрация: 07.10.2014

Сообщений: 9

04.12.2015, 13:33

5

Строка перед запросом:

Visual Basic
1
On Error Resume Next

Для игнорирования ошибок



0



Эксперт WindowsАвтор FAQ

18042 / 7645 / 891

Регистрация: 25.12.2011

Сообщений: 11,426

Записей в блоге: 17

04.12.2015, 13:34

6

Зачем их игнорировать?



0



greg zakharov

Нарушитель

5776 / 1434 / 350

Регистрация: 07.05.2015

Сообщений: 2,822

04.12.2015, 16:14

7

Как на счет эмуляции Try..Catch..Finally?

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
On Error Resume Next
 
Class Try
  Private Sub Class_Initialize
    Dim objFSO : Set objFSO = CreateObject("Scripting.FileSystemObject")
    objFSO.DeleteFile("1.txt")
  End Sub : Private Sub Catch : If Err.Number = 0 Then Exit Sub
    WScript.Echo "Error: 0x" & Hex(Err.Number) & Chr(32) & Err.Description
  Err.Clear : End Sub : Private Sub Class_Terminate : Catch
    Set objFSO = Nothing
  End Sub
End Class
Dim VBTry : Set VBTry = New Try : Set VBTry = Nothing



1



Troubleshooting Code 800A0035 – File not found

Code 800A0035 is a straightforward error to solve.  The secret is to read the Windows Script Error message carefully, then check the file path.  Guy bet’s there is a typo.

Introduction to Error Code 800A0035

Code 800A0035 is runtime error more common with an .ASP file than a .VBS.  The error is pointing to a file type or the wrong path rather than a pure scripting mistake.Code Error 800A0035 File not found

The Symptoms You Get 800A0035

When you get a pop-up message box put on your detective hat, and pay close attention to the line number.  My point is that its the line in the script and not the file name following Script: 

The Cause of Error 800A0035

In the example above, Line 31: is the source of the error.  Char 1: is not always very useful as the error could be anywhere on the line, and WSH still blames char 1.

The cause of error 800A0035 is most likely to be a spelling mistake in the file,  however, Geoffery unearthed a bizarre problem where his files had an extra .extension.  For example instead of being info.txt, it was info.txt.txt.

The Solution

Before you find the root cause you may want to confirm the diagnosis by using a reference to a different file, preferably on a different drive.  If that works, then revisit the name of the original script.  Should you be hard-coding a path in your script, try copying and pasting from the bar in Windows Explorer.

  ‡

Example 1: Script to map a printer

In this example, the actual file was called Input.txt.txt, thus either rename that to the more normal single .txt, else change the script!

 

‘  VBScript example snippet to demonstrate error 800A0035 .

‘ f1 is the Input file handle, so Set f1 = OPEN input Set f1 = fso.GetFile(«D:SMDRInput.txt»)

©

See More Windows Update Error Codes 8004 Series

• Error 800A101A8 Object Required   •Error 800A0046   •Error 800A10AD   •Error 800A000D

• Error 80048820   •Error 800A0401   •Review of SolarWinds Permissions Monitor

• Error 80040E14   • Error 800A03EA   • Error 800A0408   • Error 800A03EE

Solarwinds Free WMI Monitor

The Symptoms You Get 800A0035

When you get a pop-up message box put on your detective hat, and pay close attention to the line number.  My point is that its the line in the script and not the file name following Script: 

The Cause of Error 800A0035

In the example above, Line 31: is the source of the error.  Char 1: is not always very useful as the error could be anywhere on the line, and WSH still blames char 1.

The cause of error 800A0035 is most likely to be a spelling mistake in the file,  however, Geoffery unearthed a bizarre problem where his files had an extra .extension.  For example instead of being info.txt, it was info.txt.txt.

The Solution

Before you find the root cause you may want to confirm the diagnosis by using a reference to a different file, preferably on a different drive.  If that works, then revisit the name of the original script.  Should you be hard-coding a path in your script, try copying and pasting from the bar in Windows Explorer.

  ‡

Example 1: Script to map a printer

In this example, the actual file was called Input.txt.txt, thus either rename that to the more normal single .txt, else change the script!

 

‘  VBScript example snippet to demonstrate error 800A0035 .

‘ f1 is the Input file handle, so Set f1 = OPEN input Set f1 = fso.GetFile(«D:SMDRInput.txt»)

©

See More Windows Update Error Codes 8004 Series

• Error 800A101A8 Object Required   •Error 800A0046   •Error 800A10AD   •Error 800A000D

• Error 80048820   •Error 800A0401   •Review of SolarWinds Permissions Monitor

• Error 80040E14   • Error 800A03EA   • Error 800A0408   • Error 800A03EE

Solarwinds Free WMI MonitorGuy Recommends: WMI Monitor and It’s Free!

Windows Management Instrumentation (WMI) is one of the hidden treasures of Microsoft operating systems.  Fortunately, SolarWinds have created the WMI Monitor so that you can examine these gems of performance information for free.  Take the guess work out of which WMI counters to use for applications like Microsoft Active Directory, SQL or Exchange Server.

Download your free copy of WMI Monitor


Do you need additional help?

  • For interpreting the WSH messages check Diagnose 800 errors.
  • For general advice try my 7 Troubleshooting techniques.
  • See master list of 0800 errors.
  • Codes beginning 08004…
  • Codes beginning 08005…
  • Codes beginning 08007…
  • Codes beginning 0800A…

Give something back?

Would you like to help others?  If you have a good example of this error, then please email me, I will publish it with a credit to you:

If you like this page then please share it with your friends


About The Author

Guy Thomas

INTELLIGENT WORK FORUMS
FOR COMPUTER PROFESSIONALS

Contact US

Thanks. We have received your request and will respond promptly.

Log In

Come Join Us!

Are you a
Computer / IT professional?
Join Tek-Tips Forums!

  • Talk With Other Members
  • Be Notified Of Responses
    To Your Posts
  • Keyword Search
  • One-Click Access To Your
    Favorite Forums
  • Automated Signatures
    On Your Posts
  • Best Of All, It’s Free!

*Tek-Tips’s functionality depends on members receiving e-mail. By joining you are opting in to receive e-mail.

Posting Guidelines

Promoting, selling, recruiting, coursework and thesis posting is forbidden.

Students Click Here

Microsoft VBScript runtime error ‘800a0035’

Microsoft VBScript runtime error ‘800a0035’

(OP)

4 Aug 08 12:18

Using the following command in ASP code running on IIS:

Set pfFile=fs.OpenTextFile(szFileName,1,false)

Produces the following error:

Microsoft VBScript runtime error ‘800a0035’

File not found

The file is a network file.  It does exist.  Anonymous Access is enabled with a network user that has access to the file.  The anonymous user shows up in the Event Log of the IIS server with a successful logon. The Logged in user also has access to the file and can view the file directly in Microsoft Explorer.

What is causing OpenTextFile to not be able to find this file?

Red Flag Submitted

Thank you for helping keep Tek-Tips Forums free from inappropriate posts.
The Tek-Tips staff will check this out and take appropriate action.

Join Tek-Tips® Today!

Join your peers on the Internet’s largest technical computer professional community.
It’s easy to join and it’s free.

Here’s Why Members Love Tek-Tips Forums:

  • Tek-Tips ForumsTalk To Other Members
  • Notification Of Responses To Questions
  • Favorite Forums One Click Access
  • Keyword Search Of All Posts, And More…

Register now while it’s still free!

Already a member? Close this window and log in.

Join Us             Close

Member Avatar

Guy Thomas

INTELLIGENT WORK FORUMS
FOR COMPUTER PROFESSIONALS

Contact US

Thanks. We have received your request and will respond promptly.

Log In

Come Join Us!

Are you a
Computer / IT professional?
Join Tek-Tips Forums!

  • Talk With Other Members
  • Be Notified Of Responses
    To Your Posts
  • Keyword Search
  • One-Click Access To Your
    Favorite Forums
  • Automated Signatures
    On Your Posts
  • Best Of All, It’s Free!

*Tek-Tips’s functionality depends on members receiving e-mail. By joining you are opting in to receive e-mail.

Posting Guidelines

Promoting, selling, recruiting, coursework and thesis posting is forbidden.

Students Click Here

Microsoft VBScript runtime error ‘800a0035’

Microsoft VBScript runtime error ‘800a0035’

(OP)

4 Aug 08 12:18

Using the following command in ASP code running on IIS:

Set pfFile=fs.OpenTextFile(szFileName,1,false)

Produces the following error:

Microsoft VBScript runtime error ‘800a0035’

File not found

The file is a network file.  It does exist.  Anonymous Access is enabled with a network user that has access to the file.  The anonymous user shows up in the Event Log of the IIS server with a successful logon. The Logged in user also has access to the file and can view the file directly in Microsoft Explorer.

What is causing OpenTextFile to not be able to find this file?

Red Flag Submitted

Thank you for helping keep Tek-Tips Forums free from inappropriate posts.
The Tek-Tips staff will check this out and take appropriate action.

Join Tek-Tips® Today!

Join your peers on the Internet’s largest technical computer professional community.
It’s easy to join and it’s free.

Here’s Why Members Love Tek-Tips Forums:

  • Tek-Tips ForumsTalk To Other Members
  • Notification Of Responses To Questions
  • Favorite Forums One Click Access
  • Keyword Search Of All Posts, And More…

Register now while it’s still free!

Already a member? Close this window and log in.

Join Us             Close

10 Years Ago

Hi all,

Basically, everything works fine with my app when I work on my own computer. However, when I put it on another computer, I get an error. The error occurs when it tries to instance a class coming from an exterior dll.

I tought that it somehow was not finding the path to the dll in question … but that’s not the case, it’s just that it doesn’t work properly on the other machine. (creating an instance of the COM component with CLSID {xxxxx} from the IClassFactory failed due to the following error: 800a0035) . But the dll is here …

Any help would be more than welcome … I have no clue on how to solve this …

Many many thanks,

Michael


Recommended Answers

Is it the same version of the DLL?
It looks like that is a File Not Found error.
Are there any problems with permissions for the current user to get to the file?

Jump to Post

All 3 Replies

Member Avatar

thines01



Team Colleague



Featured Poster

10 Years Ago

Is it the same version of the DLL?
It looks like that is a File Not Found error.
Are there any problems with permissions for the current user to get to the file?

Edited

10 Years Ago
by thines01 because:

n/a

Member Avatar

10 Years Ago

Is it the same version of the DLL?
It looks like that is a File Not Found error.
Are there any problems with permissions for the current user to get to the file?

Many thanks for your help

Yes, same version.

I don’t think it didn’t find the file because the ddl in question is here … And then, I’m quite suprised to not have an error when using Directory.SetCurrentDirectory(defaultDir); but when instancing a class …

Member Avatar

10 Years Ago

800a0035 error for not found file so you need to register the com dll at the new machine use «regsrv32 FullPathComName.dll» command first


Reply to this topic

Be a part of the DaniWeb community

We’re a friendly, industry-focused community of developers, IT pros, digital marketers,
and technology enthusiasts meeting, networking, learning, and sharing knowledge.

Member Avatar

10 Years Ago

Hi all,

Basically, everything works fine with my app when I work on my own computer. However, when I put it on another computer, I get an error. The error occurs when it tries to instance a class coming from an exterior dll.

I tought that it somehow was not finding the path to the dll in question … but that’s not the case, it’s just that it doesn’t work properly on the other machine. (creating an instance of the COM component with CLSID {xxxxx} from the IClassFactory failed due to the following error: 800a0035) . But the dll is here …

Any help would be more than welcome … I have no clue on how to solve this …

Many many thanks,

Michael


Recommended Answers

Is it the same version of the DLL?
It looks like that is a File Not Found error.
Are there any problems with permissions for the current user to get to the file?

Jump to Post

All 3 Replies

Member Avatar

thines01



Team Colleague



Featured Poster

10 Years Ago

Is it the same version of the DLL?
It looks like that is a File Not Found error.
Are there any problems with permissions for the current user to get to the file?

Edited

10 Years Ago
by thines01 because:

n/a

Member Avatar

10 Years Ago

Is it the same version of the DLL?
It looks like that is a File Not Found error.
Are there any problems with permissions for the current user to get to the file?

Many thanks for your help

Yes, same version.

I don’t think it didn’t find the file because the ddl in question is here … And then, I’m quite suprised to not have an error when using Directory.SetCurrentDirectory(defaultDir); but when instancing a class …

Member Avatar

10 Years Ago

800a0035 error for not found file so you need to register the com dll at the new machine use «regsrv32 FullPathComName.dll» command first


Reply to this topic

Be a part of the DaniWeb community

We’re a friendly, industry-focused community of developers, IT pros, digital marketers,
and technology enthusiasts meeting, networking, learning, and sharing knowledge.

I am pretty new to all this VBS stuff because basically all I need to do is to make one simple VBS script, which I have possibly written, however, my problem is that it gives me 800A0035 or 800A004C error when I execute it for the first time on a particular PC, as soon as I execute it for the second time, it runs just OK and does what it is supposed to do. Incidentally, on my own computer it works OK even on the first execution.
I know that the errors have something to do with the wrong paths but I have checked my script several times and I am 100% positive that they are correct.

Here is the script:

Set objFSO = CreateObject("Scripting.FileSystemObject")
objFSO.MoveFile "rar.bat" , "rarp.bat"
'HideBat.vbs
CreateObject("Wscript.Shell").Run "rarp.bat", 0, True

What the script is supposed to do is to rename the rar.bat file to rarp.bat and run that batch file (rarp.bat) without popping up the command prompt. What the batch file does is not relevant, I guess, but anyway, it just runs WinRAR.

The rar.bat file and the VBS script are in the same folder, that’s why I have used relative paths in the script. I cannot use absolute paths because I need to run the script on several computers.

I have read somewhere on the internet that by default VBS script first looks for the files in C:WindowsSystem32 when relative paths are used. I have even tried using absolute paths in the script but it didn’t work either. Here is how I need them to look like: %systemdrive%users%username%appdataroamingrar.bat but this simply didn’t work in the VBS script.

I really think that what I need is really a simple script but apparently it’s pretty hard to get it working properly. I will be very grateful to those who help me.

Thank you a lot in advance.

Regards.

Skydiver_vrn

0 / 0 / 0

Регистрация: 01.07.2014

Сообщений: 14

1

VBS

Разрешение отклонено

01.07.2014, 09:03. Показов 24153. Ответов 11

Метки нет (Все метки)


Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Set FSO = CreateObject("Scripting.FileSystemObject")
path="D:share123"
  if (FSO.FolderExists(path) = true) then 
    Set Folder = FSO.GetFolder(path)
    For Each SubFolder In Folder.SubFolders
     folder1=SubFolder.Name
     if folder1<>"Маркетинг" and folder1<>"111" and folder1<>"222" and folder1<>"333" and folder1<>"444" and folder1<>"555" and folder1<>"666" and folder1<>"777" and folder1<>"888" then
      folder1=path+folder1
       if (FSO.FolderExists(folder1) = true) then 
        Set folder_for_delete = FSO.GetFolder(folder1)
        folder_for_delete.Delete(True)
       else MsgBox "Путь "+folder1+" не найден" 
       end if
     end if 
    Next
  end if

Вот такой скрипт, ругается на строка 11 символ 9 разрешение отклонено

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь

0

2617 / 547 / 109

Регистрация: 21.03.2012

Сообщений: 1,051

01.07.2014, 10:11

2

Цитата
Сообщение от Skydiver_vrn
Посмотреть сообщение

… разрешение отклонено

Причина — отсутствуют необходимые полномочия. Проверяйте список управления доступом для соответствующей папки.

0

0 / 0 / 0

Регистрация: 01.07.2014

Сообщений: 14

01.07.2014, 11:54

 [ТС]

3

Dmitrii, Так запускаю скрипт вручную под доменным админом у которого есть все права на эту папку.

Добавлено через 1 час 40 минут
Dmitrii, Поигрался с правами, теперь пишет «путь не найден» Строка 11 символ 9

0

2617 / 547 / 109

Регистрация: 21.03.2012

Сообщений: 1,051

01.07.2014, 18:29

4

Цитата
Сообщение от Skydiver_vrn
Посмотреть сообщение

… под доменным админом у которого есть все права на эту папку

1. Какая версия ОС?
2. Включен ли UAC?

Цитата
Сообщение от Skydiver_vrn
Посмотреть сообщение

Поигрался с правами, теперь пишет «путь не найден»

Покажите подробный список управления доступом. Для каждой записи должны быть видны: тип, маска доступа, точка наследования, область действия.

0

Skydiver_vrn

0 / 0 / 0

Регистрация: 01.07.2014

Сообщений: 14

02.07.2014, 08:17

 [ТС]

5

Dmitrii, С доступом вроде разобрался сам, сегодня скрипт отработал ночью запускал через bat-ник

Bash
1
2
del D:Share123*.* /q /f
C:cmdclear_share.vbs

но удалились только файлы которые были вне папок, папки на месте остались, и новая ошибка «Предполагается наличие Then строка 7 символ 174»

Добавлено через 12 минут
И тут затупил сам тоже, не написал and когда ещё пункт добавил. Сегодня ночью ещё раз попробую.

0

0 / 0 / 0

Регистрация: 01.07.2014

Сообщений: 14

03.07.2014, 14:52

 [ТС]

6

Dmitrii, Снова удалились только файлы, никакой ошибки не выскочило. Помогите пожалуйста, я чайник в написании скриптов.

Добавлено через 5 часов 55 минут
Причём часть папок удалилась, а как только дошёл до первой в списке исключений остальные на месте.

0

Dmitrii

2617 / 547 / 109

Регистрация: 21.03.2012

Сообщений: 1,051

04.07.2014, 20:47

7

Попробуйте такой вариант:

Кликните здесь для просмотра всего текста

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
Dim objFS, objFolder, objItem, strPath, strExclude, strLog, strTemp
 
strExclude = "Маркетинг;111;222;333;444;555;666;777;888;"
Set objFS = CreateObject("Scripting.FileSystemObject")
strPath = "D:share123"
If objFS.FolderExists(strPath) Then 
    Set objFolder = objFS.GetFolder(strPath)
    On Error Resume Next
    If objFolder.SubFolders.Count > 0 Then
        For Each objItem In objFolder.SubFolders
            If InStr(1, strExclude, objItem.Name & ";", vbTextCompare) = 0 Then
                strTemp = objItem.Path
                objItem.Delete True
                If Err.Number = 0 Then
                    strLog = strLog & strTemp & " -> успех" & vbNewLine
                Else
                    strLog = strLog & strTemp & " -> ошибка: " & Err.Description & vbNewLine
                    Err.Clear
                End If
            End if 
        Next
    Else
        strLog = "Папка " & strPath & " не содержит ни одной подпапки."
    End If
    Set objFolder = Nothing
Else
    strLog = "Не найден путь " & strPath
End if
strTemp = objFS.BuildPath(objFS.GetParentFolderName(WScript.ScriptFullName), "Results.txt")
Set objItem = objFS.CreateTextFile(strTemp, True)
If Err.Number = 0 Then
    If Len(strLog) > 0 Then
        objItem.Write strLog
    Else
        objItem.Write "Папка " & strPath & " не содержит ни одной подпапки, предназначенной для удаления."
    End If
    objItem.Close
    WScript.Echo "Готово. Журнал здесь:" & vbNewLine & strTemp
Else
    WScript.Echo "Готово. Ошибка при создании журнала:" & vbNewLine & Err.Description
    Err.Clear
End If
Set objItem = Nothing: Set objFS = Nothing
WScript.Quit 0

2

ComSpec

3455 / 1993 / 635

Регистрация: 26.02.2014

Сообщений: 1,457

04.07.2014, 22:27

8

Dmitrii, поправки:

Visual Basic
1
strExclude = ";Маркетинг;111;222;333;444;555;666;777;888;"
Visual Basic
1
If InStr(1, strExclude, ";" & objItem.Name & ";", vbTextCompare) = 0 Then

.
Иначе не удалятся папки с именами «1», «2», «3», «4», «5», «6», «7», «8», «11», «22», «33», «44», «55», «66», «77», «88», «аркетинг», «ркетинг», «кетинг», «етинг», «тинг», «инг», «нг», «г».

3

Эксперт WindowsАвтор FAQ

17951 / 7587 / 889

Регистрация: 25.12.2011

Сообщений: 11,317

Записей в блоге: 17

05.07.2014, 14:21

9

Вот такая папка тоже не удалится «111;222»
Нужно все разделители ; заменить на символ, который нельзя использовать в именовании ФС, например |

3

Dmitrii

2617 / 547 / 109

Регистрация: 21.03.2012

Сообщений: 1,051

06.07.2014, 21:37

10

Лучший ответ Сообщение было отмечено Skydiver_vrn как решение

Решение

С учётом справедливых замечаний от ComSpec и Dragokas имеем следующий вариант:

Кликните здесь для просмотра всего текста

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
Dim objFS, objFolder, objItem, strPath, strExclude, strLog, strTemp
 
strExclude = "*Маркетинг*111*222*333*444*555*666*777*888*"
Set objFS = CreateObject("Scripting.FileSystemObject")
strPath = "D:share123"
If objFS.FolderExists(strPath) Then 
    Set objFolder = objFS.GetFolder(strPath)
    On Error Resume Next
    If objFolder.SubFolders.Count > 0 Then
        For Each objItem In objFolder.SubFolders
            If InStr(1, strExclude, "*" & objItem.Name & "*", vbTextCompare) = 0 Then
                strTemp = objItem.Path
                objItem.Delete True
                If Err.Number = 0 Then
                    strLog = strLog & strTemp & " -> успех" & vbNewLine
                Else
                    strLog = strLog & strTemp & " -> ошибка: " & Err.Description & vbNewLine
                    Err.Clear
                End If
            End if 
        Next
    Else
        strLog = "Папка " & strPath & " не содержит ни одной подпапки."
    End If
    Set objFolder = Nothing
Else
    strLog = "Не найден путь " & strPath
End if
strTemp = objFS.BuildPath(objFS.GetParentFolderName(WScript.ScriptFullName), "Results.txt")
Set objItem = objFS.CreateTextFile(strTemp, True)
If Err.Number = 0 Then
    If Len(strLog) > 0 Then
        objItem.Write strLog
    Else
        objItem.Write "Папка " & strPath & " не содержит ни одной подпапки, предназначенной для удаления."
    End If
    objItem.Close
    WScript.Echo "Готово. Журнал здесь:" & vbNewLine & strTemp
Else
    WScript.Echo "Готово. Ошибка при создании журнала:" & vbNewLine & Err.Description
    Err.Clear
End If
Set objItem = Nothing: Set objFS = Nothing
WScript.Quit 0

2

0 / 0 / 0

Регистрация: 01.07.2014

Сообщений: 14

15.07.2014, 11:19

 [ТС]

11

Всем огромное спасибо! Всё работает. А может стоит куда то вынести сей скрипт, он же достаточно универсальный, может ещё какойнибудь такойже как я чайник сможет применить в своей системе…

0

Эксперт WindowsАвтор FAQ

17951 / 7587 / 889

Регистрация: 25.12.2011

Сообщений: 11,317

Записей в блоге: 17

15.07.2014, 13:47

12

Skydiver_vrn, в принципе можно. Добавил.

0

Я довольно новичок во всех этих вещах VBS, потому что в основном все, что мне нужно сделать, это сделать один простой сценарий VBS, который я, возможно, написал, однако моя проблема в том, что он дает мне 800A0035 or 800A004C ошибка, когда я запускаю его в первый раз на конкретном ПК, как только я запускаю его во второй раз, он работает нормально и делает то, что должен делать. Кстати, на моем собственном компьютере он работает нормально даже при первом запуске. Я знаю, что ошибки как-то связаны с неправильными путями, но я несколько раз проверял свой скрипт и на 100% уверен, что они верны.

Вот сценарий:

Set objFSO = CreateObject("Scripting.FileSystemObject")
objFSO.MoveFile "rar.bat" , "rarp.bat"
'HideBat.vbs
CreateObject("Wscript.Shell").Run "rarp.bat", 0, True

Что скрипт должен делать, так это переименовывать rar.bat файл в rarp.bat и запустите этот командный файл (rarp.bat) без появления командной строки. Что делает пакетный файл, я думаю, не имеет значения, но в любом случае он просто запускается WinRAR.

Компания rar.bat файл и сценарий VBS находятся в одной папке, поэтому я использовал относительные пути в сценарии. Я не могу использовать абсолютные пути, потому что мне нужно запустить скрипт на нескольких компьютерах.

Я где-то читал в Интернете, что по умолчанию сценарий VBS сначала ищет файлы в C:WindowsSystem32 когда используются относительные пути. Я даже пытался использовать абсолютные пути в скрипте, но это тоже не сработало. Вот как мне нужно, чтобы они выглядели: %systemdrive%users%username%appdataroamingrar.bat но это просто не работало в сценарии VBS.

Я действительно думаю, что мне нужен действительно простой скрипт, но, по-видимому, довольно сложно заставить его работать должным образом. Буду очень благодарен тем, кто мне поможет.

Заранее большое спасибо.

С уважением.

Member Avatar

17 Years Ago

The data that is entered is creating the error page when I suibmit it ti the db. Can anyone help? :confused:

HTTP 500.100 — Internal Server Error — ASP error
Internet Information Services

———————————————————————————

Technical Information (for support personnel)

Error Type:
Microsoft VBScript runtime (0x800A0035)
File not found
/threecubePlus_IIS/formProcess.asp, line 31

Browser Type:
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)

Page:
POST 181 bytes to /threecubePlus_IIS/formProcess.asp

POST Data:
myTitle=eryeryre&thefile=C%3A%5CDocuments+and+Settings%5CStuart.BLUEBEEN0DT01%5CDesktop%5Csite.png&myName=erreery&submit=Submit&myAddress1=&myAddress2=&myCity=&myCounty=&myPostCode=

Time:
Friday, May 06, 2005, 5:11:11 PM

More information:
Microsoft Support

do you have an include file or something? or is your page called formProcess.asp

post the page that might help but by my guess doest the dbase have a error if null field?

Be a part of the DaniWeb community

We’re a friendly, industry-focused community of developers, IT pros, digital marketers,
and technology enthusiasts meeting, networking, learning, and sharing knowledge.

  • Remove From My Forums
  • Question

  • User-1279243669 posted

    Hi,

    I’m using the following code to return file_info into an asp page using Vis Web Dev Express:

    Dim fs,f
            fs = Server.CreateObject("Scripting.FileSystemObject")
            f = fs.GetFile(".64.148.102eventmanagerEvent_Log.trc")
            Response.Write("Last update was: " & DateDiff("s", f.DateLastModified, Now) & " seconds ago")
            f = Nothing
            fs = Nothing
    %>
        
        </asp:Label>
        </p>
        <p>
        <asp:Label ID="Label4" runat="server" Font-Bold="True" Font-Names="Arial" 
                ForeColor="#3366FF" >

    ___

    The code runs when I run it as a local build, but does not run when I upload it to my website.

    The file was recently removed, and a new one created. My local build still sees it, but the uploaded code on my website does not. Before the file was re-created, the code on the website saw the file. I believe all the file permissions are the same as
    the previous file. I’ve tried using the ip-address and server-name, both give me the error:

    __

    Exception from HRESULT: 0x800A0035 (CTL_E_FILENOTFOUND)

    Description:
    An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

    Exception Details: System.IO.FileNotFoundException: Exception from HRESULT: 0x800A0035 (CTL_E_FILENOTFOUND)

    Source Error:

    Line 37: Dim fs,f
    Line 38:         fs = Server.CreateObject("Scripting.FileSystemObject")
    Line 39:         f = fs.GetFile(".64.148.102eventmanagerEvent_Log.trc")
    Line 40:         Response.Write("Event Log Last Updated: " & f.DateLastModified)
    Line 41:         f = Nothing

    ___

    But this error is not returned using a local build of the code.

    Any help much appreciated.

Страницы 1

Чтобы отправить ответ, вы должны войти или зарегистрироваться

#1 29 мая 2014 09:28:04

  • JAEAEJ
  • Участник
  • Неактивен
  • На форуме с 15 октября 2010
  • Сообщений: 211

Тема: Не найден файл. В имени есть пробел.

TCS 6.2.0.0(15918) SP3, Win 7, 32 р.
Выполняется отчёт, который автоматически формирует файл. Имя файла
формируется уникальное. Например: «Дата Время»
Пытаюсь скопировать файл в имени которого находится пробел.
Приведённый ниже код работает у меня и у коллеги (Win XP).
Т.е. копирование выполняется правильно. У пользователя не хочет.

   OldFileName = Patch + FileName
    NewFileName = Patch + DocName+ "_Подписи.xls"
    Set fso = CreateObject("Scripting.FileSystemObject")

'Call TCSApp.ShowMessageBox("Сообщение", "<" + OldFileName + "> =======" + NewFileName) 

    On Error Resume Next 'начало блока обработки ошибок. 
    fso.CopyFile OldFileName, NewFileName
    If Err Then    'если произошла ошибка, то обрабатываем её 
        Call TCSApp.ShowMessageBox(Err.Source, "Описание: "+Err.Description + " - "+OldFileName+" --" + Err.Source)       
        Err.Clear ' очищаем информацию об ошибке
        ErrorEdit = True
        Exit Sub
    End If                      

Возникает ошибка:
Недопустимое имя или номер файла —
«CTCSFilesTempTemplate_29052014 101400.xls»
—Ошибка выполнения Microsoft VBScript

Заменяю строку кода

   OldFileName = Patch + FileName

на

   OldFileName = Chr(34) + Replace(Patch + FileName," ","%20", 1, -1) + Chr(34)

Всё равно возникает такая же ошибка. Посоветуйте, как написать
правильно?

#2 Ответ от JAEAEJ 29 мая 2014 09:33:23

  • JAEAEJ
  • Участник
  • Неактивен
  • На форуме с 15 октября 2010
  • Сообщений: 211

Re: Не найден файл. В имени есть пробел.

Извините, сообщение не
Недопустимое имя или номер файла —
«CTCSFilesTempTemplate_29052014 101400.xls»
—Ошибка выполнения Microsoft VBScript

а
Не найден файл —
«CTCSFilesTempTemplate_29052014 20101400.xls»
—Ошибка выполнения Microsoft VBScript

после замены строки

Недопустимое имя или номер файла —
«CTCSFilesTempTemplate_29052014%20101400.xls»
—Ошибка выполнения Microsoft VBScript

#3 Ответ от Олег Зырянов 29 мая 2014 09:44:50

  • Олег Зырянов
  • Технический руководитель
  • Неактивен
  • Откуда: Новосибирск
  • На форуме с 10 декабря 2008
  • Сообщений: 4,214

Re: Не найден файл. В имени есть пробел.

Ну это ошибка не из TechnologiCS конечно же.

Сомнительно чтобы

не понимала пробелы. Пути в винде можно заключать в кавычках, но в данном случае думается что это излишне.
А путь CTCSFiles руками набит с ошибкой или он реально так странно выглядит? Проверьте что имя файла задано точно (нет ошибки).

Проверьте можете ли вы скопировать файл в проводнике? Возможно файл заблокирован и не может быть скопирован. Ругаться при этом возможно будет так же.

#4 Ответ от Дмитрий Гамий 29 мая 2014 09:49:38 (изменено: Дмитрий Гамий, 29 мая 2014 09:51:18)

  • Дмитрий Гамий
  • Дмитрий Гамий
  • Техподдержка
  • Неактивен
  • Откуда: г.Днипро, CSoft Украина
  • На форуме с 10 декабря 2008
  • Сообщений: 748

Re: Не найден файл. В имени есть пробел.

JAEAEJ пишет:

CTCSFilesTempTemplate_29052014 101400.xls

Может дело всё в том, что после С отсутствует смвол «двоеточие»?
Правильнее, наверное такой путь:
C:TCSFilesTempTemplate_29052014 101400.xls
Какое значение присваивается переменной Patch?

#5 Ответ от JAEAEJ 29 мая 2014 10:44:31

  • JAEAEJ
  • Участник
  • Неактивен
  • На форуме с 15 октября 2010
  • Сообщений: 211

Re: Не найден файл. В имени есть пробел.

2 Дмитрий Гамий
Это просто опечатка. Руками набивал. Двоеточие есть.
    Patch = ScriptHelper.ApplicationTempDirectory   ‘Путь к временным файлам

2 Олег Зырянов

Этот путь правильный. Именно он стоит в настройках TCS.

#6 Ответ от Олег Зырянов 29 мая 2014 11:12:44

  • Олег Зырянов
  • Технический руководитель
  • Неактивен
  • Откуда: Новосибирск
  • На форуме с 10 декабря 2008
  • Сообщений: 4,214

Re: Не найден файл. В имени есть пробел.

Этот путь правильный. Именно он стоит в настройках TCS.

Я имею ввиду полный путь к файлу, то есть файл реально существует?

ну и блокировки проверьте так же.

#7 Ответ от JAEAEJ 29 мая 2014 11:17:49 (изменено: , 29 мая 2014 11:17:49)

  • JAEAEJ
  • Участник
  • Неактивен
  • На форуме с 15 октября 2010
  • Сообщений: 211

Re: Не найден файл. В имени есть пробел.

2 Олег Зырянов

Возможно файл заблокирован и не может быть скопирован. Ругаться при этом возможно будет так же.

Отчёт выполняется под управлением СА. Перед копированием файла
ждём окончания работы СА.

    s = "Run"
    Do While s = "Run" 'Ждём окончания выполнения команд
        s = It.CommandEnd
        It.Sleep(200)
    Loop

    FileName = It.NameWin 'Читаеи имя последнего открытого окна

На этот момент процесса EXCEL.EXE в памяти нет. СА завершает работу EXCEL, перед окончанием работы.

2 Олег Зырянов

Приведённый ниже код работает у меня и у коллеги (Win XP).

#8 Ответ от Олег Зырянов 29 мая 2014 12:10:00

  • Олег Зырянов
  • Технический руководитель
  • Неактивен
  • Откуда: Новосибирск
  • На форуме с 10 декабря 2008
  • Сообщений: 4,214

Re: Не найден файл. В имени есть пробел.

Приведённый ниже код работает у меня и у коллеги (Win XP).

Угу. Файл заблокирован!
мы на тоже самое натыкались с приложениями офиса на Window 7 и выше, на XP все работало.

#9 Ответ от JAEAEJ 29 мая 2014 13:17:37

  • JAEAEJ
  • Участник
  • Неактивен
  • На форуме с 15 октября 2010
  • Сообщений: 211

Re: Не найден файл. В имени есть пробел.

2 Олег Зырянов

мы на тоже самое натыкались с приложениями офиса на Window 7 

У меня

TCS 6.2.0.0(15918) SP3, Win 7, 32 р.

Всё работает без проблем. У пользователей ХР. Не работает. Права на
папку полные. Что делать?

#10 Ответ от Олег Зырянов 30 мая 2014 04:04:59

  • Олег Зырянов
  • Технический руководитель
  • Неактивен
  • Откуда: Новосибирск
  • На форуме с 10 декабря 2008
  • Сообщений: 4,214

Re: Не найден файл. В имени есть пробел.

Еще раз — файл заблокирован! Права здесь не причем.

#11 Ответ от Олег Зырянов 30 мая 2014 05:58:46

  • Олег Зырянов
  • Технический руководитель
  • Неактивен
  • Откуда: Новосибирск
  • На форуме с 10 декабря 2008
  • Сообщений: 4,214

Re: Не найден файл. В имени есть пробел.

Хотя если верить хелпу http://www.script-coding.com/WSH/FileSy … .html#3.2. это не просто копирование файла. Так что нюансы могут быть с этой функцией.

#12 Ответ от JAEAEJ 30 мая 2014 08:00:06

  • JAEAEJ
  • Участник
  • Неактивен
  • На форуме с 15 октября 2010
  • Сообщений: 211

Re: Не найден файл. В имени есть пробел.

2 Олег Зырянов

нюансы могут быть с этой функцией.

Я то же это понял.
Исходно стояла задача: сформировать отчёт подписей и сохранить
его в файловом составе документа без участия человека. Имя
сохраняемого файла должно быть:Обозначение_Подписи.xls, т.е.
нужно было переименовать созданный файл и добавить его в файловый
состав документа. Причём статус документа не должен влиять на эту
операцию. Переименовывать файл у меня не получалось, поэтому я и
применил метод CopyFile. Поковырявшись в инете нашёл другое
решение, которое отлично отрабатывает и у меня и у пользователя.
Привожу его:

    Set fso = CreateObject("Scripting.FileSystemObject")
    Set file = FSO.GetFile(OldFileName) 
    On Error Resume Next 'начало блока обработки ошибок. 
    file.Move  NewFileName
    If Err Then    'если произошла ошибка, то обрабатываем её 
        Call TCSApp.ShowMessageBox(Err.Source, "Описание: "+Err.Description + " - "+OldFileName+" --" + Err.Source)       
        Err.Clear ' очищаем информацию об ошибке
' Если такой файл уже есть, то продолжаем выполнение проги.
        If InStr(1, Err.Description, "уже существует") = 0 Then
            ErrorEdit = True 
            Exit Sub                                 
        End If
    End If                      
    Set file = Nothing

Можно считать тему закрытой. Всем спасибо за участие.

#13 Ответ от JAEAEJ 30 мая 2014 08:53:01

  • JAEAEJ
  • Участник
  • Неактивен
  • На форуме с 15 октября 2010
  • Сообщений: 211

Re: Не найден файл. В имени есть пробел.

P.S. Хотя задача и решилась, но вопрос о работе метода CopyFile,
к сожалению, так и остался не решённым.

#14 Ответ от Олег Зырянов 30 мая 2014 09:00:36

  • Олег Зырянов
  • Технический руководитель
  • Неактивен
  • Откуда: Новосибирск
  • На форуме с 10 декабря 2008
  • Сообщений: 4,214

Re: Не найден файл. В имени есть пробел.

Переименовывать файл у меня не получалось,

копировать не получалось.

все указывает на то что файл блокируется каким-то приложением.

#15 Ответ от JAEAEJ 30 мая 2014 09:36:51

  • JAEAEJ
  • Участник
  • Неактивен
  • На форуме с 15 октября 2010
  • Сообщений: 211

Re: Не найден файл. В имени есть пробел.

2 Олег Зырянов

копировать не получалось. 

Я выразился правильно

Переименовывать файл у меня не получалось,

Мне нужно было именно переименовать созданный файл отчёта из автома-
тически созданного имени «Template_Date Time» в «ОбозначениеДокумента_Подписи». Но метода RENAME я не нашёл. Поэтому и хотел использовать метод CopyFile, с последующим
уничтожением исходного файла.

#16 Ответ от snake 2 июля 2014 19:24:07

  • snake
  • Участник
  • Неактивен
  • Откуда: Чебоксары Версия TCS 6.3.0.0
  • На форуме с 24 марта 2010
  • Сообщений: 103

Re: Не найден файл. В имени есть пробел.

В дополнение
на форуме был диалог https://forum.technologics.ru/topic1527.html и, следуя предложенной в нем ссылке, вот справка с примерами http://msdn.microsoft.com/en-us/library … s.85).aspx

Страницы 1

Чтобы отправить ответ, вы должны войти или зарегистрироваться

Like this post? Please share to your friends:
  • Если файл не txt то вывести ошибку
  • Если учитель сделал ошибку на уроке
  • Если учитель сам делает ошибки
  • Если учитель допустил ошибку во время урока
  • Если учитель делает грамматические ошибки