Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Ветеран


Сообщения: 27449
Благодарности: 8088

Профиль | Отправить PM | Цитировать


daniil_im, «неверного указания пути» в этом коде быть не может, ибо путь к «Мои документы» задаётся функциями операционной системы. Имя файла указывается напрямую в коде. Что тут может быть «неверного»?!

Ну, хорошо. Предположим, мы настолько тупы, что указали в коде недопустимые символы в имени файла:
Код: Выделить весь код
strDestFile = .BuildPath(WScript.CreateObject("WScript.Shell").SpecialFolders.Item("MyDocuments"), "текстовый ::: файл.txt")
Тогда так:
Скрытый текст
Код: Выделить весь код
Option Explicit

Dim strDestFile

Dim objTS
Dim objFolder


With WScript.CreateObject("Scripting.FileSystemObject")
	strDestFile = .BuildPath(WScript.CreateObject("WScript.Shell").SpecialFolders.Item("MyDocuments"), "текстовый ::: файл.txt")
	
	If .DriveExists("C:") Then
		On Error Resume Next
		Set objTS = .CreateTextFile(strDestFile, True, True)
		
		If Err.Number <> 0 Then
			WScript.Echo "Can't create text file [" & strDestFile & "]." & vbCrLf & "Error: " & Err.Description
			
			Err.Clear
			On Error Goto 0
			
			WScript.Quit 2
		Else
			On Error Goto 0
		End If
		
		For Each objFolder In .GetFolder("C:\").SubFolders
			objTS.WriteLine ComposeAttributesString(objFolder.Attributes) & vbTab & objFolder.Name
		Next
		
		objTS.Close
		Set objTS = Nothing
	Else
		WScript.Echo "Drive C: not exists."
		WScript.Quit 1
	End If
End With

WScript.Quit 0

Function ComposeAttributesString(intAttributes)
	Dim strResult
	
	strResult = ""
	
	If intAttributes And 16   Then strResult = strResult & "D" Else strResult = strResult & " "
	If intAttributes And 2048 Then strResult = strResult & "C" Else strResult = strResult & " "
	If intAttributes And 1024 Then strResult = strResult & "L" Else strResult = strResult & " "
	If intAttributes And 32   Then strResult = strResult & "A" Else strResult = strResult & " "
	If intAttributes And 4    Then strResult = strResult & "S" Else strResult = strResult & " "
	If intAttributes And 2    Then strResult = strResult & "H" Else strResult = strResult & " "
	If intAttributes And 1    Then strResult = strResult & "R" Else strResult = strResult & " "
	
	ComposeAttributesString = strResult
End Function
Это сообщение посчитали полезным следующие участники:

Отправлено: 22:20, 19-09-2017 | #2