FileSystemObject and Apostrophes - نوشته شده در (1781 Views)
Advanced Member
Carefree
مطلب: 4224
4224
I want to check for the existence of files using FSO, but if the file path and/or name include an apostrophe, the program breaks. Anyone have a suggestion?
Example code:
Code:

Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
If not objFSO.FileExists(strPath&strFile) Then
strErr=strErr & "<li>"&strFile&" does not exist.</li>"
Else
objFSO.Close
End If
Set objFSO = Nothing
 پیش‌فرض مرتب‌سازی برای تاریخ DESC به معنی جدیدترین است  
 تعداد در صفحه 
نوشته شده در
Forum Admin
HuwR
مطلب: 20611
20611
try escaping any apostrophes with a slash, so try a replace on strFile to replace ' with \'
نوشته شده در
Advanced Member
Carefree
مطلب: 4224
4224
Replacing with an \' or with an '' doesn't work. Any other suggestions?
نوشته شده در
Forum Admin
HuwR
مطلب: 20611
20611
well, from what I can find out, the FSO should not have any problem with filenames containing an apostrophe, are you sure that is definitely what is causing the problem ?
نوشته شده در
Forum Admin
HuwR
مطلب: 20611
20611
From the Script Guy's Blog Incidentally, if you’re using the FileSystemObject (another way to work with files and folders), you don’t have to worry about this; the apostrophe doesn’t seem to bother the FileSystemObject. For example, if you want to know the size of Ken Myer’s Folder, use this code:

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder("C:\Ken Myer’s Folder")
Wscript.Echo "Size: " & objFolder.Size
No escaping or other coding tricks required.
نوشته شده در
Advanced Member
Carefree
مطلب: 4224
4224
The code works perfectly on all folders/files except for those containing an apostrophe and/or an ampersand.
نوشته شده در
Forum Admin
HuwR
مطلب: 20611
20611
what are you actually getting when you run your code, I just tried this myself and it works quite happily with ampersand and apostrophes in file names
نوشته شده در
Forum Admin
HuwR
مطلب: 20611
20611
this is the code I ran, and it quite happily displays that the file exists
Code:

<%
strPath = "c:\temp\"
strFile = "apostroph'e&ampersand.txt"
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
If not objFSO.FileExists(strPath&strFile) Then
strErr=strErr & "<li>"&strFile&" does not exist.</li>"
Else
strErr=strErr & "<li>"&strFile&" exists.</li>"
End If
Set objFSO = Nothing
Response.Write strErr
%>
results in
  • apostroph'e&ampersand.txt exists.
FYI, your code errors on the line objFSO.Close
نوشته شده در
Advanced Member
Carefree
مطلب: 4224
4224
Found it - wasn't in this routine but in the chkstring function; was resulting in a double apostrophe before checking the file name. Thanks. Now if only I could figure out that javascript mouse-over routine, I'd be through with this and I could rest.
نوشته شده در
Advanced Member
Carefree
مطلب: 4224
4224
This is very old, but here's an update. I solved the mouseover Javascript routine by replacing apostrophes with the U+2032 symbol (#8242;). They still look like apostrophes (and actually sort properly now whereas the apostrophe didn't), so now the Javascript is happy.
 
شما باید یک متن وارد کنید